mercoledì 2 luglio 2014

Passaggio a livello 1


Il pulsante P1 viene posizionato a debita distanza a nord del passaggio a livello.
Esso incrementerà la variabile value1.
Il pulsante P2 a sud del passaggio a livello ed incrementerà la variabile value2.
Se value1= value2 la barra è alzata.
Se value1 diverso da value2 la barra è abbassata.
Lo sketch visualizza, inultimente,il conteggio degli assi del treno prima e dopo il suo passaggio, serve solo come controllo dello sketch.

#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);

 # define TASTO1   2
 # define TASTO2   3
 # define RELE     6
 int  Value1     = 0;
 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, LOW);
            Serial.println("RELE OFF");
            delay(350);          }
  else    {digitalWrite(RELE, HIGH);
            Serial.println("RELE OFF"); 
          delay (100);  } 
}

Nessun commento:

Posta un commento