Ciao! Stavo realizzando un progetto per la mia scuola con Arduino (non è la prima volta che utilizzo Arduino, anzi direi che sono abbastanza capace), ma non funziona bene.
È un codice per un progetto autovelox.
#define TR1 10
#define TR2 12
int detection1 = HIGH; // no obstacle1
int detection2 = HIGH; // no obstacle2
unsigned int inizioMisura = 0;
unsigned long Ti = 0;
unsigned long Tf = 0;
float deltaT = 0;
const float distanza = 0.115;
const float conv = 3.6; //conv=1 per m/S - conv=3.6 per Km/h
void setup() {
Serial.begin(9600);
pinMode(TR1, INPUT);
pinMode(TR2, INPUT);
}
void loop() {
detection1 = digitalRead(TR1);
detection2 = digitalRead(TR2);
if(detection1 == LOW && inizioMisura == 0){
Ti = millis();
//Serial.println("Ti= "+String(Ti));
inizioMisura = 1;
}
if(detection2 == LOW && inizioMisura == 1){
Tf = millis();
deltaT = (float)(Tf-Ti)/1000;
//Serial.println("Tf= "+String(Tf));
//Serial.println(deltaT,3);
Serial.println(conv*distanza/deltaT,1);
inizioMisura = 0;
}
}
Credo che il codice sia corretto, ma quando lo utilizzo i valori sono "sballati": se passo il dito sui sensori lentamente mi dà un numero più basso di quando lo passo velocemente.
In allegato anche il progetto del circuito.
(i sensori infrarossi sono diversi da come si vede nell'immagine, i sensori sono questi: https://it.aliexpress.com/item/1005006095222017.html)
