Go Down

Topic: [résolu]comment utiliser plusieurs capteurs a ultrason (Read 2634 times) previous topic - next topic

ugo1999

Mar 01, 2013, 10:52 am Last Edit: Mar 01, 2013, 04:30 pm by ugo1999 Reason: 1
bonjour,
je souhaite utiliser 2 capteurs a ultrason comme ceci :
si un des capteurs détecte quelque chose , il commande deux servos
j'arrive a utiliser un capteur, mais pas deux.
merci de m'aider.
ugo
PS:voila le code
Quote

#include <Servo.h>
#include <Ultrasonic.h>

const int Trig = 3;     // pin "Trig" du HC-SR04 connectée à pin 3 de l'Arduino
const int Echo = 2;     // pin "Echo" du HC-SR04 connectée à pin 2 de l'Arduino
Servo servo1,servo2,servo3;
long cm;                // variable pour stocker la distance de l'objet en cm //variable qui stocke la mesure du temps
Ultrasonic HCSR04(Trig,Echo);   //   lira l'heure à chaque boucle

void setup()
{  
  servo1.attach(9);
  servo2.attach(10);
  servo3.attach(8);

}  

void loop()
{
    servo1.write(0);
servo2.write(0);
servo3.write(0);
delay(1500);
servo3.write(180);
delay(1500);
  cm = HCSR04.convert(HCSR04.timing(), 1);
 
 if(cm <2  )  
{ servo1.write(0);
servo2.write(180);
servo3.write(90);
delay(1500);
}
}


infobarquee

bonjour,
normal,
il faut affecter 2 autres pins pour l'autre capteur.
tu utilise les même pins pour les 2, donc ca le fait pas du tout. ;)

ugo1999

#2
Mar 01, 2013, 01:16 pm Last Edit: Mar 01, 2013, 01:27 pm by ugo1999 Reason: 1
je comprend bien mais je ne sais pas comment faire car si j'ecris ca:
#include <Servo.h>
#include <Ultrasonic.h>

const int Trig (3,5);    
const int Echo ( 2,4);    
Servo servo1,servo2,servo3;
long cm;                // variable pour stocker la distance de l'objet en cm //variable qui stocke la mesure du temps
Ultrasonic HCSR04(Trig,Echo);   //   lira l'heure à chaque boucle

void setup()
{  
  servo1.attach(9);
  servo2.attach(10);
  servo3.attach(8);

sa ne marche pas !!
merci de me repondre

Jean-François

Et si tu faisais plutôt :

Code: [Select]
const int Trig_1 =3;   
const int Echo_1= 2; 
const int Trig_2 =5;   
const int Echo_2 =4; 
MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

Artouste


Et si tu faisais plutôt :

Code: [Select]
const int Trig_1 =3;   
const int Echo_1= 2; 
const int Trig_2 =5;   
const int Echo_2 =4; 


Salut JF (tu tousse encore ?  :smiley-mr-green:  )
Il faut voir si la lib utilisée gere les sonar multiples et gere les timings entre eux
sinon il y cette lib compatible avec le hard qui le fait avec filtrage (à priori)
http://code.google.com/p/arduino-new-ping/

B@tto

Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

ugo1999

excusez moi encore mais le detecteur "HCSRO4_2" ne detecte toujours rien ...
je vous remercie d'avance de votre aide.
ugo
ps: voici le code:
#include <Servo.h>
#include <Ultrasonic.h>

const int Trig_1 =3;   
const int Echo_1= 2; 
const int Trig_2 =5;   
const int Echo_2 =4;
Servo servo1,servo2;
long cm;
Ultrasonic HCSR04(Trig_1,Echo_1);
Ultrasonic HCSRO4_2(Trig_2,Echo_2);//   lira l'heure à chaque boucle

void setup()

   servo1.attach(9);
   servo2.attach(10);



void loop()
{
     servo1.write(0);
servo2.write(0);
   cm = HCSR04.convert(HCSR04.timing(), 1);
  cm = HCSRO4_2.convert(HCSR04.timing(),1);
 
  if(cm<20  ) 
{ servo1.write(0);
servo2.write(180);
delay(1500);
}
}

Jean-François

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

ugo1999

comment peut-on utiliser la librairie new ping dont artouste a parlé pour controler les capteurs ???
merci

B@tto

Y'a une erreur  :

Code: [Select]
cm = HCSR04.convert(HCSR04.timing(), 1);
  cm = HCSRO4_2.convert(HCSR04.timing(),1);


C'est pas le bon timing et tu écrases cm :

Code: [Select]
cm = HCSR04.convert(HCSR04.timing(), 1);
  cm2 = HCSRO4_2.convert(HCSR04_2.timing(),1);
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

ugo1999

MERCI !!!!
finalement j'ai trouvé le problème grace a vous tous et en particulier B@tto
j'avais oublié ceci :
Quote

else if (cm2<20)
{ servo1.write(0);
servo2.write(180);
delay(1500);


ce qui donne :
#include <Servo.h>
#include <Ultrasonic.h>

const int Trig_1 =3;   
const int Echo_1= 2; 
const int Trig_2 =5;   
const int Echo_2 =4;
Servo servo1,servo2;
long cm;
long cm2;
Ultrasonic HCSR04(Trig_1,Echo_1);
Ultrasonic HCSRO4_2(Trig_2,Echo_2);//   lira l'heure à chaque boucle

void setup()

   servo1.attach(9);
   servo2.attach(10);



void loop()
{
     servo1.write(0);
servo2.write(0);
   cm = HCSR04.convert(HCSR04.timing(), 1);
  cm2 = HCSRO4_2.convert(HCSRO4_2.timing(),1);
 
  if(cm<20  ) 
{ servo1.write(0);
servo2.write(180);
delay(1500);}
else if (cm2<20)
{ servo1.write(0);
servo2.write(180);
delay(1500);
}
}
je vous remercie tous et j'uploaderai mon travail dans les prochain jours.(surprise  :P)
merci encore
ugo

Artouste



Salut JF (tu tousse encore ?  :smiley-mr-green:  )


C'est le plus pénible....

[HS]
Faut pas pousser... en même temps  ]:) ------>[] déjà loin  8)

Jean-François

MacBook intel core 2 duo  os X snow Leopard 10.6<br/> eMac PPc G4  os X Leopard 10.5<br/>powerbook G4 os X Leopard 10.5
imac PPC G3 os X Pa

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