/* Impostare il valore con il potenziometro. Quando il numero di impulsi su Pin2 è uguale al valore impostato il relè si eccita. Fornito di antirimalzo. Il conteggio avanza sulo sul fronte di salita,ovvero non avanza se su pin2 permane in HIGH.Il valore impostato viene diviso per 10 per avere un fondoscala di 123. */ #include <LiquidCrystal.h> LiquidCrystal lcd( 8, 9, 10, 11, 12, 13); # define IMPOSTA A0 # define CONTA 3 # define RELE 5 # define RELE1 6 # define AZZERA 4 long ValueImposta = 0; long ValueImposta1 = 0; int ValueConta = 0; int lastValueConta = 0; byte contaImpulsi = 0; byte Merker = 0; void setup() { pinMode(IMPOSTA, INPUT ); pinMode(CONTA, INPUT ); pinMode(RELE, OUTPUT ); pinMode(RELE1, OUTPUT ); lcd.begin(16, 2); Serial.begin(9600); } void loop() { lcd.setCursor(0,0); lcd.print ("V.Impostato"); lcd.setCursor(0,1); lcd.print ("V.Contato"); //-------- Imposta il n. max di pezzi ------------ ValueImposta=analogRead(IMPOSTA); ValueImposta1 = (ValueImposta / 10); lcd.setCursor(13,0); lcd.print(ValueImposta1); //---------- Leggi pezzi su Pin2 ------------------- ValueConta = digitalRead(CONTA); if ( ValueConta != lastValueConta) { if ( ValueConta == HIGH) { contaImpulsi = contaImpulsi + 1; lcd.setCursor(13, 1); lcd.print(contaImpulsi); Serial.println(contaImpulsi); delay(20); }}// DebounceTime lastValueConta = ValueConta; /*---- -----CONFRONTO FRA I DUE DATI -------- arrivato al valore impostato il relè si eccita per mezzo secondo, il conteggio si azzera per poi reiniziare*/ if ( ValueImposta1 == contaImpulsi) { digitalWrite(RELE, HIGH); Serial.println("RELE ON"); Merker = HIGH; delay(500); contaImpulsi = 0; digitalWrite(RELE, LOW); Merker = LOW; lcd.clear(); delay(30); } /*------------ Esegui un'altra azione----------- La variabile Merker può essere usata per eseguire altre azioni. */ if ( Merker == HIGH) { digitalWrite(RELE1, HIGH); } }
Nessun commento:
Posta un commento