Projet robot aspirateur autonome
Bonjour à tous,
Dans le cadre de nos études, nous devons mener un projet. Ainsi, nous devons créer un robot aspirateur autonome, et donc concevoir son programme de déplacement (entre autres) à l'aide du logiciel Arduino. Notre robot possède les caractéristiques suivantes :
- Il avance à une vitesse de 20cm/s
- Il est de forme circulaire
- Il possède deux capteurs infrarouges Arduino positionnés sur les cotés à l'avant du robot (ils sont orientés de façon a se croiser car , si un seul des capteur est à l'état haut le robot tournera pour éviter l'obstacle et si les deux sont à l'état haut cela signifie que l'obstacle se trouve à l'avant, il devra donc tourner)
- Le robot change de direction lorsque l'obstacle est à 3cm
Pour l'instant nous travaillons sur le programme de déplacement du robot et non celui de la rotation des brosses (nettoyage du sol). Voici ce que nous avons fait :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| const int capteur1 = 2; // broche du capteur PIR
const int capteur2 =
int etat_capteur1 = 0; // etat de la sortie du capteur
int etat_capteur2 = 0;
int E1 = 5;
int M1 = 4;
int E2 = 6;
int M2 = 7;
void setup()
{
pinMode(capteur1, INPUT); //la broche du capteur1 est mise en entree
pinMode(capteur2, INPUT); //la broche du capteur2 est mise en entree
pinMode(M1, OUTPUT); //la broche du moteur 1 est mise en sortie
pinMode(M2, OUTPUT); //la broche du moteur 2 est mise en sortie
}
void loop()
{
do
{
digitalWrite(M1,HIGH);
digitalWrite(M2, HIGH);
analogWrite(E1, value); //PWM Speed Control
analogWrite(E2, value); //PWM Speed Control
}
while(digitalRead(capteur1)==LOW && digitalRead(capteur2)==LOW);
if digitalRead(capteur1)==HIGH or digitalRead(capteur2)==HIGH
{
digitalWrite(M1,HIGH);
digitalWrite(M2, HIGH);
analogWrite(E1, value); //PWM Speed Control
analogWrite(E2, value); //PWM Speed Control
delay()
} |
Les problèmes que nous rencontrons sont les suivants :
-Nous ne savons pas comment faire pour que le robot avance à une vitesse de 20cm/s grâce aux rapports cycliques des signaux (PWM)
-Nous ne savons pas comment faire pour que le robot tourne seulement lorsque il est situé à une distance de 3cm de l'obstacle et non dès que celui-ci est détecté par le capteur.
Pourriez-vous nous aider à terminer ce programme ? Si vous n'avez pas compris quelque chose n'hésitez à nous en faire part.
Cordialement
Jean-Frédéric.