Si imposta il valore di riferimento (Valore1) con un potenziometro.
Quando Valore2 è uguale a Valore1 un relè si innesca o disinnesca.
/* Impostare il valore con il potenziometro. Quando il numero di impulsi di TASTO2 è uguale al valore impostato il relè si innesca. */ #include <LiquidCrystal.h> LiquidCrystal lcd(7, 8, 9, 10, 11, 12); # define POT1 A0 # define TASTO2 3 # define RELE 6 long Value1 = 0; long Value1a = 0; int Value2 =0; long Tempo1 = 0; long Tempo11 = 50; void setup() { pinMode(POT1, 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() { Value1a=analogRead(POT1); Value1 = (Value1a / 2); lcd.setCursor(10,0); lcd.print(Value1); delay(50); lcd.print(" "); delay(10); //********** 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(50); } //---- CONFRONTO FRA I DUE DATI -------- if (Value1 == Value2) { digitalWrite(RELE, HIGH); Serial.println("RELE ON"); delay(30); } }
Di seguito è possibile variare il valore di rifimento da un minimo di 1023 a 1534. Per ciò basta collegare un resistore da 10K fra A1 e + Vcc.
/* Impostare il valore con il potenziometro. Quando il numero di impulsi di TASTO2 è uguale al valore impostato il relè si innesca. L'impostazione di rifirmento minima è di 1023. */ #include <LiquidCrystal.h> LiquidCrystal lcd(7, 8, 9, 10, 11, 12); # define POT1 A0 # define POT2 A1 # define TASTO2 3 # define RELE 6 long Value1 =0; long Value1a =0; int Value2 =0; int Value2a = 0; long Tempo1 =0; long Tempo11 =50; void setup() { pinMode(POT1, 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() { Value2a=analogRead(POT2); Value1a=analogRead(POT1); Value1 = ((Value1a / 2)+ Value2a); lcd.setCursor(10,0); lcd.print(Value1); delay(50); lcd.print(" "); delay(10); //********** 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(50); } //---- CONFRONTO FRA I DUE DATI -------- if (Value1 == Value2) { digitalWrite(RELE, HIGH); Serial.println("RELE ON"); delay(30); } }
Nessun commento:
Posta un commento