Pages: [1]   Go Down
Author Topic: srf04, dovrei usare due sensori ultrasuono assieme  (Read 695 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5500
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
#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....
« Last Edit: November 06, 2011, 11:33:16 am by ratto93 » Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

BZ (I)
Offline Offline
Brattain Member
*****
Karma: 263
Posts: 21590
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Logged

0
Offline Offline
Jr. Member
**
Karma: 0
Posts: 64
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Pages: [1]   Go Up
Jump to: