Model de cod Switch Toggle.
Cu acest cod se poate aprinde/stinge un led prin apăsarea unui buton push fără reținere conectat la o intrare.
La intrare vom avea o rezistență de 10k conectată la masă. Butonul este conectat între pin arduino și +5v.
Varianta toggle reprezintă aprinderea și menținerea ledului la apăsarea butonului. Pentru stingerea ledului este necesară o nouă apăsare a butonului. Ciclul se repetă la infinit.
În cod este adăugat și un debounce pentru evitarea apariției paraziților când este apăsat butonul.
Arduino Switch Toggle 1 |
---|
int inPin = 8; // the number of the input pin int outPin = 13; // the number of the output pin boolean reading; // the current reading from the input pin boolean previous = LOW; // the previous reading from the input pin unsigned long debounce = millis(); // the debounce time void setup() { pinMode(inPin, INPUT); pinMode(outPin, OUTPUT); Serial.begin(9600); } void loop() { reading = digitalRead(inPin); Serial.println(reading); if (reading == HIGH && previous == LOW && millis()-debounce > 1000){ // debounce 1 sec. Serial.println("inside debounce if - Toggle Active"); //for test only digitalWrite(outPin, !digitalRead(outPin)); // toggle out pin debounce = millis(); // reset millis } previous = reading; // save previous reading } |
Arduino Switch Toggle 2 |
---|
int inPin = 8; // the number of the input pin int outPin = 13; // the number of the output pin boolean previous = false; // define state unsigned long debounce = millis(); // the debounce time void setup() { pinMode(inPin, INPUT); pinMode(outPin, OUTPUT); Serial.begin(9600); } void loop() { if (digitalRead(inPin)==LOW){previous = false;} if (digitalRead(inPin)==HIGH && previous == false && millis()-debounce > 1000) // debounce 1 sec. { Serial.println("inside debounce if - Toggle Active"); //for test only digitalWrite(outPin, !digitalRead(outPin)); // toggle out pin debounce = millis(); // reset millis previous = true; // save previous reading } delay(10); //wait } |
0 comentarii:
Trimiteți un comentariu