void loop(){
digitalWrite(trigPin, LOW); // Set the trigger pin to low for 2uS
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // Send a 10uS high to trigger ranging
delayMicroseconds(10);
digitalWrite(trigPin, LOW); // Send pin low again
int distance = pulseIn(echoPin, HIGH); // Read in times pulse
distance= distance/58; // Calculate distance from time of pulse
Serial.println(distance);
delay(50); // Wait 50mS before next ranging
}
il problema è come farne misurare 2 assieme, con la patch per max e arduino " SENSORBOXES" si riesce a leggere 2 o più sensori analogici , ma questo tipo di misura non riesco proprio a capire come fare, dovrei mandare i valori a MAXmsp per muovere dei suoni ..
Intanto userei la funzione millis... sennò blocchi l'esecuzione del programma inutilmente... poi L'uscita Tiger puoi condividerla con entrambi i sonar...
Oppure prova così:
#define echoPin1 2 // Pin to receive echo pulse
#define echoPin 4 //secondo sensore
#define trigPin 3 // Pin to send trigger pulse di entrambi i sensori
void setup(){
Serial.begin(9600);
pinMode(echoPin, INPUT);
pinMode(trigPin, OUTPUT);
}
void loop(){
digitalWrite(trigPin, LOW); // Set the trigger pin to low for 2uS
delayMicroseconds(2);
digitalWrite(trigPin, HIGH); // Send a 10uS high to trigger ranging
delayMicroseconds(10);
digitalWrite(trigPin, LOW); // Send pin low again
int distance = pulseIn(echoPin, HIGH); // Read in times pulse
int distance1 = pulseIn(echoPin1,HIGH);
distance= distance/58; // Calculate distance from time of pulse
distance1= distance1/58; // Calculate distance from time of pulse
Serial.println("distanza 1:" );
Serial.println(distance);
Serial.println("distanza 2:" );
Serial.println(distance1 );
delay(50); // Wait 50mS before next ranging
}
Solo che la funzione pulsIn mi pare usi gli interrupt... e quindi non so se funziona....
Devi fare la misura primo su un sensore e poi sull altro. non puoi farlo con tutti due in contemporanea perché un l' eco del primo disturba il secondo e viceversa. Inoltre la funzione pulseIn() blocca il programma per il tempo della misura. un secondo pulseIn() partirebbe solo dopo il termine del primo pulseIn().
Percui devi mandare l'impulso e misurare l' eco del primo sensore e poi aspettare qualche milisecondo e fare la stessa cosa col secondo sensore.
Ciao Uwe
,in effetti così dovrebbe andare ,dovrò però "marchiare" i dati per leggere i 2 valori separati poi su MAX , bon, dopo ci provo e vediamo che succede..grazie mille .