salve a tutti,sono nuovo di questo forum e da poco che armeggio con arduino ma me la cavicchio un po con c++.
uso arduino uno con un sensore a ultrasuoni a 4 pin per misurare la distanza.
non riesco a capire come mai non funziona questo codice:
int triggerPort = 7;
int echoPort = 8;
long distanza;
void misuraDistanza()
{
pinMode( triggerPort, OUTPUT );
pinMode( echoPort, INPUT );
digitalWrite( triggerPort, LOW );
digitalWrite( triggerPort, HIGH );
delayMicroseconds( 10 );
digitalWrite( triggerPort, LOW );
long duration = pulseIn( echoPort, HIGH );
long distanza = 0.034 * duration / 2;
}
void setup()
{
pinMode( triggerPort, OUTPUT );
pinMode( echoPort, INPUT );
Serial.begin(9600);
}
void loop()
{
misuraDistanza();
Serial.print(distanza);
delay(500);
}
le ho provate un po tutte,modificando i pinMode e mettendoli direttamente nel setup;
mettendo la funzione misuraDistanza con dentro i pinMode alla fine del loop;
mettendo la funzione misuraDistanza senza i pinMode alla fine del loop e i pinMode all'interno del setup;
cambiando long in int
ma non mi funziona in nessun modo,distanza rimane sempre a 0 come se non considerasse la funzione misuraDistanza.
invece se inserisco i pinMode nel setup e elimino la fuzione misuraDistanza inserendo tutto nel loop funziona e distanza mi da il valore letto dal sensore
questo è il codice funzionante:
int triggerPort = 7;
int echoPort = 8;
long distanza;
void setup()
{
pinMode( triggerPort, OUTPUT );
pinMode( echoPort, INPUT );
Serial.begin(9600);
}
void loop()
{
digitalWrite( triggerPort, LOW );
digitalWrite( triggerPort, HIGH );
delayMicroseconds( 10 );
digitalWrite( triggerPort, LOW );
long duration = pulseIn( echoPort, HIGH );
long distanza = 0.034 * duration / 2;
Serial.print(distanza);
delay(500);
}
non capisco dove sbaglio,da quello che ho capito le funzioni esterne con arduino dovrebbero funzionare o sbaglio?oppure sbaglio a scrivere il codice?
spero qualcuno mi illumini perchè sto impazzendo ahahahah
Luca.