Go Down

Topic: [résolu]comment utiliser plusieurs capteurs a ultrason (Read 2480 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 : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

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 : http://battomicro.wordpress.com/
Photographie : www.interactive-celebration.fr

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