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-------- }