PROJET SIN : 3 Capteurs Ultrason

Bonjour, je suis en terminale, et pour mon projet de BAC, je dois réaliser la suivie d'un golfeur par un chariot de golf, avec 3 capteurs Ultrason (SRF02 mode i2C) dans lequel le Capteur droit permet de savoir si le golfeur est à droite ( et dans ce cas là, faire tourner le chariot vers la droite), celui du milieu pour savoir quand il avance tout droit, et celui de gauche pour savoir si il est a gauche, et donc le faire tourner à gauche.

Pour cela donc, j'utilise Arduino. Voilà donc mon problème :

J'arrive a faire un programme permettant de changer les adresses de mes 3 capteurs, et un autre pour faire fonctionner le capteur ultrason (mais 1 seul sur 3). Comment je pourrais faire mon programme (et mon câblage) afin de pouvoir réaliser mon projet ?

Merci beaucoup d'avance :)

Il suffit de les faire fonctionner un par un, à tour de rôle, avec pour chacun 2 pins différentes de commande.

Bonjour, merci de ta réponse, mais qu'appelles-tu "2 pins différentes de commande" ?

bonjour, avec l'I2C pas besoin de plusieurs pin Christian ;) on utilise les adresses sur l'I2C et en fonction de l'adresse qui répond quelque chose, on agit sur les moteurs. par contre pour le reste, ok.

Merci pour vos réponses, j'ai réussi une partie de mon projet maintenant ! Il me reste la dernière étape : Faire en sorte d'orienter 2 roues et les faire avancer ! Pour cela, j'avais pensé à faire en sorte que les capteurs placés sur le côté, lorsqu'ils sont sollicités, face en sorte d'orienter le chariot de telle sorte à ce que le capteur du milieu soit le seul sollicité (en faisant tourner qu'une seul des 2 roues, et à l'aide d'un "Tant que"), et que lorsque ensuite seul le capteur du milieu est sollicité, que celui ci fasse avancer les 2 roues à 2 mètres de l’obstacle !

Une idée de comment je pourrais réaliser ça ? :)

Bonjour, mon projet a avancé, voilà mon programme. Malheureusement, celui-ci ne fonctionne que partiellement…



#include <Wire.h>

int pin1Moteur1=12;
int pin2Moteur1=8;
int pinPMoteur1=11;
int pin1Moteur2=2;
int pin2Moteur2=4;
int pinPMoteur2=5;

void setup()
{
Wire.begin();
Serial.begin(9600);
pinMode(pin1Moteur1,OUTPUT);
pinMode(pin2Moteur1,OUTPUT);
pinMode(pinPMoteur1,OUTPUT);
pinMode(pin1Moteur2,OUTPUT);
pinMode(pin2Moteur2,OUTPUT);
pinMode(pinPMoteur2,OUTPUT);
}

int reading1 = 0;
int reading2 = 0;
int reading3 = 0;

void loop()
{

{Wire.beginTransmission(112);

Wire.write(byte(0x00));
Wire.write(byte(0x51));

Wire.endTransmission();

delay(70);

Wire.beginTransmission(112);
Wire.write(byte(0x02));
Wire.endTransmission();

Wire.requestFrom(112, 2);

if (2 <= Wire.available())
{
reading1 = Wire.read();
reading1 = reading1 << 8;
reading1 |= Wire.read();
Serial.print(reading1);
Serial.println(“cm (1)”);
}
{
delay(250);}
}

//________________________________

{Wire.beginTransmission(113);

Wire.write(byte(0x00));
Wire.write(byte(0x51));

Wire.endTransmission();

delay(70);

Wire.beginTransmission(113);
Wire.write(byte(0x02));
Wire.endTransmission();

Wire.requestFrom(113, 2);

if (2 <= Wire.available())
{
reading2 = Wire.read();
reading2 = reading2 << 8;
reading2 |= Wire.read();
Serial.print(reading2);
Serial.println(“cm (2)”);
}
{
delay(250);}
}

//__________________________________

{Wire.beginTransmission(114);

Wire.write(byte(0x00));
Wire.write(byte(0x51));

Wire.endTransmission();

delay(70);

Wire.beginTransmission(114);
Wire.write(byte(0x02));
Wire.endTransmission();

Wire.requestFrom(114, 2);

if (2 <= Wire.available())
{
reading3 = Wire.read();
reading3 = reading3 << 8;
reading3 |= Wire.read();
Serial.print(reading1);
Serial.println(“cm (3)”);
}
{
delay(250);
}
}

//____________________________________

if (reading1 < 500)
{
while (reading1 < 500)
{
actionMoteur (1, 1, 50);
actionMoteur (2, -1, 50);
delay (200);
}
}

if (reading3 < 500)
{
while (reading3 < 500)
{
actionMoteur (1, -1, 50);
actionMoteur (2, 1, 50);
delay (200);
}
}

/* Tourner sur lui m^me jusquà voir sur le reading2 */

if (reading2 > 200 )
{
while (reading2 > 200)
{
actionMoteur (1, 1, 100);
actionMoteur (2, 1, 100);
delay (200);
}
}

if (reading2 < 200 )
{
while (reading2 < 200)
{
actionMoteur (1, -1, 100);
actionMoteur (2, -1, 100);
delay (200);
}
}

//____________________________________

}

void actionMoteur(int moteur,int sens,int pourcentage)
{
int pin1, etat1, pin2, etat2, pinP, puissance;

if (moteur == 1)
{
pin1 = pin1Moteur1;
pin2 = pin2Moteur2;
pinP = pinPMoteur2;
}

if (sens == 1)
{
etat1 = 1;
etat2 = 0;
}

else if (sens == -1)
{
etat1 = 0;
etat2 = 1;
}

else if (sens == 0)
{
etat1 = 0;
etat2 = 0;
}

puissance = map (pourcentage, 0, 100, 0, 255);
analogWrite (pinP, puissance);
digitalWrite (pin1, etat1);
digitalWrite (pin2, etat2);

}



Une idée de où vient le problème ? :slight_smile: