Premere il pulsante fino ad impostare un valore (Valore1).
Quando il numero di giri rilevato da valore2 è uguale a valore1 un relè si eccita.
/* Impostare il valore con TASTO2. Quando il numero di impulsi di TASTO1 è uguale a TASTO2 il relè si innesca. */ #include <LiquidCrystal.h> LiquidCrystal lcd(7, 8, 9, 10, 11, 12); # define TASTO1 2 # define TASTO2 3 # define RELE 6 int Value1 = 1; int Value2 =0; long Tempo1 = 0; long Tempo11 = 50; void setup() { pinMode(TASTO1,INPUT ); pinMode(TASTO2,INPUT ); pinMode(RELE, OUTPUT); lcd.begin(16, 2); lcd.setCursor(0,0); lcd.print ("Valore1"); lcd.setCursor(0,1); lcd.print ("Valore2"); Serial.begin(9600); } void loop() { //********** TASTO 1 ***************** int StatoTasto1; int StatoTasto1a = LOW; int valoreTasto1 = digitalRead(TASTO1); //-------- antirimbalzo1 -------------- if (valoreTasto1 != StatoTasto1a) {Tempo1 = millis();} if ((millis() - Tempo1) > Tempo11) {StatoTasto1 = valoreTasto1;} StatoTasto1a = valoreTasto1; //------------esecuzione1 ------------ if (valoreTasto1 == HIGH) { Value1 = (Value1 + 1); Serial.println(Value1); lcd.setCursor(10,0); lcd.print(Value1); delay(500); } //********** TASTO 2 ***************** int StatoTasto2; int StatoTasto2a = LOW; int valoreTasto2 = digitalRead(TASTO2); //-------- antirimbalzo2----------- if (valoreTasto2 != StatoTasto2a) {Tempo1 = millis();} if ((millis() - Tempo1) > Tempo11) {StatoTasto2 = valoreTasto2;} StatoTasto2a = valoreTasto2; //-------- esecuzione2 ------------ if (valoreTasto2 == HIGH) { Value2 = (Value2 + 1); Serial.println(Value2); lcd.setCursor(10,1); lcd.print(Value2); delay(500); } //---- CONFRONTO FRA I DUE DATI -------- if (Value1 == Value2) { digitalWrite(RELE, HIGH); Serial.println("RELE ON"); delay(350); } //else { delay (350); } }
La soluzione è improponibile per numeri alti.
Nessun commento:
Posta un commento