Controle de botão de pressão com Arduino

Neste exemplo, controlaremos a direção de um atuador linear com um Arduino e duas chaves momentâneas. Este tutorial se baseia nos princípios discutidos no tutorial “Controle de velocidade do driver do motor com um Arduino”, Aconselhamos revisar esse tutorial antes de continuar.

Este tutorial é dividido em duas seções: botões atuando no modo momentâneo (ou seja, os atuadores param de se mover quando o botão é liberado) e botões atuando no modo de sustentação (ou seja, os atuadores continuam se movendo mesmo quando o botão é liberado).

Nota: Este tutorial pressupõe conhecimento prévio com princípios eletrônicos básicos, hardware e software Arduino. Se esta é a primeira vez que usa o Arduino, sugerimos aprender o básico de um dos muitos excelentes tutoriais para iniciantes disponíveis nas pesquisas do Google e do YouTube. Esteja ciente de que não temos os recursos para fornecer suporte técnico para aplicativos personalizados e não depuraremos, editaremos, forneceremos código ou diagramas de fiação fora desses tutoriais disponíveis publicamente.

Componentes

Fiação

Controle de botão de pressão com Arduino

Visão geral de hardware e software para controle momentâneo

Os interruptores momentâneos são usados ​​quando você deseja que o atuador apenas se mova enquanto o botão é pressionado. O atuador irá parar automaticamente de se mover quando o botão for liberado. Faça upload do código abaixo.

Código para controle 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);
  }
}

Visão geral de hardware e software para manter o controle

Como alternativa, às vezes você pode querer usar um botão de travamento; faça com que o atuador se mova ao apertar um botão e, em seguida, continue em movimento quando você soltar o botão. Para conseguir isso, você precisará adicionar mais uma chave, conectada ao pino 8 e GND, e então carregar o programa abaixo. Uma vez que o atuador não para de se mover quando o botão é liberado, este novo interruptor atuará como um botão de "parar".

Código para manter o controle

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: