lunedì 24 giugno 2013

Autovelox


 
Un oscillatore esterno con frequenza di 1 impulso al secondo
è collegato al pin 4.Quando l'automobile intercetta la fotocellula
di START Arduino conta il numero degli impulsi su tale pin.
La fotocellula di STOP si trova ad una distanza ben precisa,
nello schetch è riportato un valore di 20 metri.La formula è
Velocità= Spazio : Tempo 
Velocità in m/sec. = 20 metri : n. di impulsi al secondo
Velocità in Km/h = Velocità in m/sec. x 3.6 


    
    # define START   2
    # define STOP    3 
    # define OSC     4
    # define RESET   5
    # define TestLED 7
  
    int  ValueSTART  =  0;
    int  ValueSTOP   =  0;
    int  ValueRESET  =  0; 
    int  ValoreOSC   =  1;
    int  Value1      =  1;
    int  Value2      = 0;
    int  Spazio      = 20;
  
  void setup() 
     { pinMode(START,    INPUT );
       pinMode(STOP,     INPUT );
       pinMode(OSC,      INPUT );
       pinMode(RESET,    INPUT );
       pinMode(TestLED,  OUTPUT);
       Serial.begin(9600);  }

  void loop() {
//*********** OSCILLATORE ESTERNO**************
        int ValoreRESET = digitalRead(RESET);
         if (ValoreRESET == HIGH)
            {Value1 = 1;}
//*********** OSCILLATORE ESTERNO**************  
        int ValoreOSC = digitalRead(OSC);

//********** INPUT DI START  ***************** 
       int ValoreSTART = digitalRead(START);
       if (ValoreSTART == HIGH)
         {ValueSTART = (1 - ValueSTART );}
//-------- Inizio Esecuzione impulso di START----  
      if   (ValueSTART == 1 && ValoreOSC == HIGH)
           {digitalWrite(TestLED, HIGH);
            Value1 = (Value1 + 1);}
//**********Fine esecuzione dell'impulso di start--------     

//********** INPUT DI STOP  ***************** 
       int ValoreSTOP = digitalRead(STOP);
//-------- Inizio Esecuzione impulso di STOP----  
      if (ValoreSTOP == HIGH)
         {digitalWrite(TestLED, LOW);
          Value1 = Value1;
          Value2 =((Spazio / Value1) * 3.6);
          ValueSTART = 0; 
          Serial.print("Velocita km/h : ");
          Serial.println(Value2); }
          
      delay (350); 
      //----------FINE ESECUZIONE--------
      
      
}