Contrôle des boutons poussoirs avec Arduino

Dans cet exemple, nous contrôlerons la direction d’un actionneur linéaire avec un Arduino et deux interrupteurs momentanés. Ce tutoriel s’appuie sur les principes discutés dans le tutoriel »Contrôle de la vitesse du conducteur avec un Arduino« , nous vous conseillons d’examiner ce tutoriel avant de continuer.

Ce tutoriel est divisé en deux sections : boutons poussoirs agissant en mode momentané (c.-à-d. les actionneurs cessent de bouger lorsque le bouton est relâché) et boutons poussoirs agissant en mode de soutien (c.-à-d. les actionneurs continuent de bouger même lorsque le bouton est relâché).

Note: Ce tutoriel suppose des connaissances préalables avec les principes électroniques de base, le matériel Arduino et les logiciels. Si c’est la première fois que vous utilisez Arduino, nous vous suggérons d’apprendre les bases de l’un des nombreux tutoriels débutants disponibles via google et youTube recherches. S’il vous plaît être conscient que nous n’avons pas les ressources pour fournir un soutien technique pour les applications personnalisées et ne sera pas débogage, modifier, fournir du code ou des diagrammes de câblage en dehors de ces tutoriels accessibles au public.

Composants

Câblage

Contrôle des boutons poussoirs avec Arduino

Vue d’ensemble du matériel et des logiciels pour un contrôle momentané

Les commutateurs momentanés sont utilisés lorsque vous voulez seulement que l’actionneur se déplace pendant que le bouton est appuyé, l’actionneur cesse automatiquement de bouger lorsque le bouton est libéré. Téléchargez le code ci-dessous.

Code pour le contrôle momentané

https://gist.github.com/Will-Firgelli/aeee209bda6b2246359eed70ec353eb8

COPY
/* Firgelli Automations
 * Limited or no support: we do not have the resources for Arduino code support
 * 
 * Program enables momentary direction control of actuator using push button
 */

int RPWM = 10; //connect Arduino pin 10 to IBT-2 pin RPWM
int LPWM = 11; //connect Arduino pin 11 to IBT-2 pin LPWM
int downPin = 12; 
int upPin = 13;
int Speed = 255; //choose any speed in the range [0, 255]

void setup() {
  pinMode(RPWM, OUTPUT);
  pinMode(LPWM, OUTPUT);
  pinMode(downPin, INPUT_PULLUP);
  pinMode(upPin, INPUT_PULLUP);
}

void loop() { 
  if(digitalRead(upPin)==LOW){ //check if extension button is pressed
    analogWrite(RPWM, 0);
    analogWrite(LPWM, Speed);
  } 

  else if(digitalRead(downPin)==LOW){ //check if retraction button is pressed
    analogWrite(RPWM, Speed);
    analogWrite(LPWM, 0);
  } 

  else{ //if no button is pushed, remain stationary
    analogWrite(RPWM, 0); 
    analogWrite(LPWM, 0);
  }
}

Aperçu du matériel et des logiciels pour maintenir le contrôle

Alternativement, parfois vous pouvez utiliser un bouton de verrouillage; faites bouger l’actionneur lorsque vous appuyez sur un bouton, puis continuez à bouger lorsque vous relâchez le bouton. Pour ce faire, vous devrez ajouter un commutateur de plus, connecté à la broche 8 et GND, puis télécharger le programme ci-dessous. Comme l’actionneur n’arrête pas de bouger lorsque le bouton est libéré, ce nouveau commutateur agit un bouton « stop ».

Code pour le maintien du contrôle

https://gist.github.com/Will-Firgelli/2b96dce14c0cee7a0009e61e47cc5f67
COPY
/* Firgelli Automations
 * Limited or no support: we do not have the resources for Arduino code support
 * 
 * Program enables latching direction control of actuator using push button
 */

int RPWM = 10; //connect Arduino pin 10 to IBT-2 pin RPWM
int LPWM = 11; //connect Arduino pin 11 to IBT-2 pin LPWM
int stopPin = 8;
int downPin = 12;
int upPin = 13;

int Speed = 255; //choose any speed in the range [0, 255]

void setup() {
  pinMode(RPWM, OUTPUT);
  pinMode(LPWM, OUTPUT);
  pinMode(stopPin, INPUT_PULLUP);
  pinMode(downPin, INPUT_PULLUP);
  pinMode(upPin, INPUT_PULLUP);
}

void loop() { 
  if(digitalRead(upPin)==LOW){ //check if extension button is pressed
    analogWrite(RPWM, 0);
    analogWrite(LPWM, Speed);
  } 

  else if(digitalRead(downPin)==LOW){ //check if retraction button is pressed
    analogWrite(RPWM, Speed);
    analogWrite(LPWM, 0);
  } 

  else if(digitalRead(stopPin)==LOW){ //check if retraction button is pressed
    analogWrite(RPWM, 0);
    analogWrite(LPWM, 0);
  } 
}
Share This Article
Tags: