Contatore generico con ingressi di UP; DOWN, AZZERA ed IMPOSTA.
#include <LiquidCrystal.h> LiquidCrystal lcd( 8, 9, 10, 11, 12, 13); # define IMPOSTA A0 # define CONTA 2 # define SCONTA 3 # define AZZERA 4 # define RELE 6 # define RELE1 7 long ValueImposta = 0; long ValueImposta1 = 0; long ValueAzzera = 0; int ValueConta = 0; int ValueSconta = 0; int lastValueConta = 0; int lastValueSconta = 0; byte contaImpulsi = 0; byte Merker = 0; void setup() { pinMode(IMPOSTA, INPUT ); pinMode(CONTA, INPUT ); pinMode(SCONTA, 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"); //-- Azzera il contatore pin 4---------- ValueAzzera = digitalRead(AZZERA); if ( ValueAzzera == HIGH) { contaImpulsi = 0; lcd.setCursor(13, 1); lcd.print(contaImpulsi); Serial.println(contaImpulsi); delay(20); } //-Imposta con Pot.su A0 il n. max di pezzi --- ValueImposta=analogRead(IMPOSTA); ValueImposta1 = (ValueImposta / 10); lcd.setCursor(13,0); lcd.print(ValueImposta1); //---------- Incrementa con input 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; //---------- Decrementa con input su Pin3 ---- ValueSconta = digitalRead(SCONTA); if ( ValueSconta != lastValueSconta) { if ( ValueSconta == HIGH) { contaImpulsi = contaImpulsi - 1; lcd.setCursor(13, 1); lcd.print(contaImpulsi); Serial.println(contaImpulsi); delay(20); }}// DebounceTime lastValueSconta = ValueSconta; /*---- -----CONFRONTO FRA I DUE DATI -------- Se valore comntatore è uguale a valore impostato eccita i relè.at */ 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 è usata per eseguire altre azioni. */ if ( Merker == HIGH) { digitalWrite(RELE1, HIGH); } }
Nessun commento:
Posta un commento