Controllo pulsante con Arduino

In questo esempio controlineremo la direzione di un attuatore lineare con un Arduino e due interruttori momentanei. Questa esercitazione si basa sui principi illustrati nell'esercitazione "Controllo della velocità del conducente del motore con arduino", si consiglia di rivedere tale tutorial prima di continuare.

Questo tutorial è suddiviso in due sezioni: pulsanti che agiscono in modalità momentanea (cioè gli attuatori smettono di muoversi quando il pulsante viene rilasciato) e pulsanti che agiscono in modalità di sostegno (cioè gli attuatori continuano a muoversi anche quando il pulsante viene rilasciato).

Nota: questa esercitazione presuppone conoscenze preliminari con i principi elettronici di base, l'hardware e il software Arduino. Se questa è la tua prima volta che usi Arduino, ti consigliamo di imparare le basi da uno dei tanti fantastici tutorial per principianti disponibili tramite ricerche su Google e YouTube. Tieni presente che non abbiamo le risorse per fornire supporto tecnico per le applicazioni personalizzate e non eseguiremo il debug, la modifica, fornirà codice o i diagrammi di cablaggio al di fuori di queste esercitazioni disponibili pubblicamente.

Componenti

Cablaggio

Controllo pulsante con Arduino

Panoramica hardware e software per un controllo momentaneo

Gli interruttori momentanei vengono utilizzati quando si desidera che l'attuatore si muova solo mentre viene premuto il pulsante, l'attuatore smetterà automaticamente di muoversi quando il pulsante viene rilasciato. Carica il codice qui sotto.

Codice per il controllo momentaneo

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

Panoramica hardware e software per sostenere il controllo

In alternativa, a volte potresti voler utilizzare un pulsante di chiusura; fare in modo che l'attuatore si muova quando si premi un pulsante e quindi si continui a muoversi quando si rilascia il pulsante. Per raggiungere questo obiettivo dovrai aggiungere un altro interruttore, collegato al pin 8 e GND, quindi caricare il programma qui sotto. Poiché l'attuatore non smetterà di muoversi quando il pulsante viene rilasciato, questo nuovo interruttore fungerà da pulsante "stop".

Codice per sostenere il controllo

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: