domenica 2 febbraio 2014

Sella di lancio parte 2



Misura la velocità del vagone ed aziona i frenatoi.
La velocità ottimale del vagone deve essere di 8 km/h se superiore vengono azionati dei frentaoi, ciascuno capace di ridurre la velocità del 2%.





/* Legge gli impulsi di un oscillatore
esterno qualunque sia la durata dell'onda quadra.
File
 - Esempi
  -Digital
   -StateChangeDetection

L'oscillatore deve avere una f=1Hz ma per una
prova va bene un diodo led lampeggiante.

Le istruzioni antirimbalzo di START sono state sostituite 
dalla funzione incrementa e dalla successiva istruzione
if START maggiore o uguale a di 1*/

   
    # define START  2
    # define STOP   3
    # define AZZERA 4   
    # define OSCEXT 5 
    
   int ValueStart1  = 0;
   int ValueStart1a = 0;
   
   int ValueStop    = 0;
   int ValueAzzera  =0;
   int Spazio       = 20;
   float Velocita   = 0;
   int ValueOSC1    = 0;  
   int ValueOSC1a   = 0;  
   int ValueOSC1b   = 0;     


   void setup() 
              { pinMode(OSCEXT, INPUT);
                pinMode(START, INPUT);
                pinMode(STOP, INPUT);
                pinMode(AZZERA, INPUT);
                Serial.begin(9600);   }

   void loop() {
  //---------- Lettura AZZERA --------      
      int ValueAzzera= digitalRead(AZZERA);

         if (ValueAzzera== HIGH) 
            {(ValueOSC1 = 0);}
     
/*--Lettura di START con incrementa */ 

     ValueStart1a= digitalRead(START);

            if (ValueStart1a == HIGH )
              { ValueStart1++;  }
     
//------------- Lettura impulsi oscillatore-------        
     ValueOSC1a= digitalRead(OSCEXT);

         if (ValueOSC1a!= ValueOSC1b) 
            { if (ValueOSC1a == HIGH && ValueStart1 >=1 && ValueStop==LOW )
              { ValueOSC1++;
               Serial.println(ValueOSC1);  }}
        ValueOSC1b = ValueOSC1a;

//--------- Fine lettura impulsi esterni-----       
 
//---------- Lettura STOP --------      
      int ValueSTOP= digitalRead(STOP);

         if ( ValueSTOP== HIGH ) 
            { ValueStart1 = 0;
              Velocita = ((Spazio / ValueOSC1) *3.6);  
              Serial.print("Velocita km/h : ");
              Serial.println(Velocita); 
              ValueOSC1 = ValueOSC1 ;
              if (ValueOSC1 == 3)
                 {Serial.println("6 Frenatoi in azione");}
              if (ValueOSC1 == 4)
                 {Serial.println("5 Frenatoi in azione");}
              if (ValueOSC1 == 5)
                 {Serial.println("4 Frenatoi in azione");}
              if (ValueOSC1 == 6)
                 {Serial.println("3 Frenatoi in azione");}
              if (ValueOSC1 == 7)
                 {Serial.println("2 Frenatoi in azione");}
              if (ValueOSC1 == 8)
                 {Serial.println("1 Frenatoi in azione");}
               delay (500);}
           
        
        
}









1 commento: