Ciao a tutti, mi sono presentato nella sezione dedicata anche se, dopo mesi che vi seguo avrei bisogno di un aiuto.
Da settimane sto realizzando un circuito di misurazione attraverso 2 moduli ad ultrasuoni HC-SR04.
La mia difficoltà nasce da quando ho inserito un secondo modulo è nel capire in cosa sbaglio nel seguente sketch.
Quello che vorrei realizzare è uno sketch dove:
**1:**premuto il pulsante vengono effettuate 3 misure dal sensore SX e DX(ultrasuoni).
**2:**di queste 3 misure viene fatta una media per sensore.
**3:**sul display avrò a SX e DX una misura in millimetri del sensore SX e DX.
**4:**Il ciclo si ferma finche non ripremo il pulsante.
**5:**A fine ciclo memorizza su sd card il valore letto.
Al momento nello sketch mancano i punti 2,3,5 il punto 5 al momento non è prioritario.
Riscontro un malfunzionamento nella lettura dei valori, ovvero nel monitor seriale non riesco a distinguere il sensore sinistro dal destro nonostante nello sketch abbia contrassegnato con una S e una D i due sensori. Ne leggo solo uno.
Nello sketch non ho inserito il display ma nello schema di fritzing ho già preparato i futuri collegamenti. Chiedo quindi se decidete di aiutarmi a capire dove sbaglio di non modificarmi i pin assegnati almeno che non ci sia un requisito a livello di collegamento obbligatorio.
In basso a sinistra c'e uno schizzo della barra su cui sono installati i sensori.
const int TRIGS_PIN = 9; //Sensore SX
const int ECHOS_PIN = 10; //Sensore SX
const int TRIGD_PIN = 11; //Sensore DX
const int ECHOD_PIN = 12; //Sensore DX
int val = 0;
#define P1 8 //Pulsante che mi avvia la lettura
void setup() {
Serial.begin(9600);
pinMode(P1, INPUT);
pinMode(TRIGS_PIN,OUTPUT);
pinMode(ECHOS_PIN,INPUT);
pinMode(TRIGD_PIN,OUTPUT);
pinMode(ECHOD_PIN,INPUT);
}
void loop(){
long duration, distancemm;
val = digitalRead(P1); // legge il valore dell'input e lo memorizza
if (val == HIGH) { // controlla che l'input sia HIGH
for(int x = 0; x < 3; x++) //per quante volte deve ripetersi il ciclo (3)
//CODICE RELATIVO AL SENSORE SINISTRO
digitalWrite(TRIGS_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGS_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGS_PIN, LOW);
duration = pulseIn(ECHOS_PIN,HIGH);
// fine codice sensore sinistro
//CODICE RELATIVO AL SENSORE DESTRO
digitalWrite(TRIGD_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIGD_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGD_PIN, LOW);
duration = pulseIn(ECHOD_PIN,HIGH);
// fine codice sensore destro
distancemm = duration / 2.91 / 2 ; // conversione tra tempo e distanza (2,91 X i mm ---- 29,1 x i cm)
if (distancemm <= 0){
Serial.println("Fuori misura");
}
else {
Serial.print(distancemm);
Serial.print("mm misurati");
Serial.println();
delay(1000);
if (val == LOW) {
}
}
}
}
Grazie anticipatamente a chi vorrà aiutarmi