srf04, dovrei usare due sensori ultrasuono assieme

ciao a tutti , dovrei usare due sensori ultrasuono assieme , due srf04 ,, per farne girare solo uno va bene questo codice :

#define echoPin 2 // Pin to receive echo pulse
#define trigPin 3 // Pin to send trigger pulse

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
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 ..

se avete suggerimenti..grazie .

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 .