Go Down

Topic: srf04, dovrei usare due sensori ultrasuono assieme (Read 734 times) previous topic - next topic

satchmo

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 .

ratto93

#1
Nov 06, 2011, 05:30 pm Last Edit: Nov 06, 2011, 05:33 pm by ratto93 Reason: 1
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ì:
Code: [Select]
#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....
Se corri veloce come un fulmine, ti schianterai come un tuono.

uwefed

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

satchmo

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

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy