Control de botón con Arduino

En este ejemplo, controlaremos la dirección de un actuador lineal con un Arduino y dos interruptores momentáneos. Este tutorial se basa en los principios discutidos en el tutorial "Control de velocidad del controlador del motor con un Arduino”, Le recomendamos que revise ese tutorial antes de continuar.

Este tutorial se divide en dos secciones: botones pulsadores que actúan en modo momentáneo (es decir, los actuadores dejan de moverse cuando se suelta el botón) y botones pulsadores que actúan en modo sostenido (es decir, los actuadores continúan moviéndose incluso cuando se suelta el botón).

Nota: Este tutorial asume conocimientos previos con principios electrónicos básicos, hardware y software Arduino. Si es la primera vez que usa Arduino, le sugerimos que aprenda los conceptos básicos de uno de los muchos excelentes tutoriales para principiantes disponibles a través de las búsquedas de Google y YouTube. Tenga en cuenta que no tenemos los recursos para proporcionar soporte técnico para aplicaciones personalizadas y no depuraremos, editaremos, proporcionaremos código o diagramas de cableado fuera de estos tutoriales disponibles públicamente.

Componentes

Alambrado

Control de botón con Arduino

Descripción general de hardware y software para control momentáneo

Los interruptores momentáneos se utilizan cuando solo desea que el actuador se mueva mientras se presiona el botón; el actuador dejará de moverse automáticamente cuando se suelte el botón. Sube el código a continuación.

Código para control momentáneo

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);
  }
}

Descripción general de hardware y software para mantener el control

Alternativamente, es posible que a veces desee utilizar un botón de cierre; haga que el actuador se mueva cuando presione un botón y luego siga moviéndose cuando suelte el botón. Para lograr esto, deberá agregar un interruptor más, conectado al pin 8 y GND, luego cargar el programa a continuación. Dado que el actuador no deja de moverse cuando se suelta el botón, este nuevo interruptor actuará como un botón de "parada".

Código para mantener el control

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: