Ciao!
Io sto progettando un sensore di retromarcia utilizzando una scheda Arduino uno collegata ad un sensore HC SR04 e a 7 led.
Sono ai primi passi con la progammazione di Arduino infatti ho problemi con il programma perchè non funziona come dovrebbe.
Qualcuno è in grado di darmi qualch consiglio correggendomi gli errori che ho commesso? Grazie Mille!
Vi allego il codice e una foto del circuito.
int triggerPort = 2;
int echoPort = 3;
int rosso1 = 9;
int rosso2 = 10;
int giallo1 = 7;
int giallo2 = 8;
int verde1 = 5;
int verde2 = 6;
void setup() {
pinMode( triggerPort, OUTPUT );
pinMode( echoPort, INPUT );
pinMode( rosso1, OUTPUT );
pinMode( rosso2, OUTPUT );
pinMode( giallo1, OUTPUT );
pinMode( giallo2, OUTPUT );
pinMode( verde1, OUTPUT );
pinMode( verde2, OUTPUT );
Serial.begin( 9600 );
Serial.println( "Sensore ultrasuoni: ");
}
void loop() {
//porta bassa l'uscita del trigger
digitalWrite( triggerPort, LOW );
//invia un impulso di 10microsec su trigger
digitalWrite( triggerPort, HIGH );
delayMicroseconds( 10 );
digitalWrite( triggerPort, LOW );
long duration = pulseIn( echoPort, HIGH );
long r = 0.034 * duration / 2;
Serial.print( "durata: " );
Serial.print( duration );
Serial.print( " , " );
Serial.print( "distanza: " );
//dopo 38ms è fuori dalla portata del sensore
if( duration > 38000 ) Serial.println( "fuori portata");
else {
Serial.print( r );
Serial.println( "cm" );
}
if( r > 10) digitalWrite(rosso2, HIGH);
else {
digitalWrite(rosso1, HIGH);
if( r > 30) digitalWrite(rosso1, LOW), digitalWrite(giallo2, HIGH);
else {
digitalWrite(rosso1, LOW), digitalWrite(giallo1, HIGH);
if( r > 50) digitalWrite(giallo1, LOW), digitalWrite(giallo2, LOW), digitalWrite(verde2, HIGH);
else {
digitalWrite(giallo1, LOW), digitalWrite(giallo2, LOW), digitalWrite(verde1, HIGH);
if( r > 70) digitalWrite(verde1, LOW), digitalWrite(verde2, LOW);
}
}
}
//aspetta 150 millisecondi
delay( 150 );
digitalWrite(rosso1, LOW);
digitalWrite(rosso2, LOW);
digitalWrite(giallo1, LOW);
digitalWrite(giallo2, LOW);
digitalWrite(verde1, LOW);
digitalWrite(verde2, LOW);
}
NoWirelessProva7Led.ino (1.78 KB)