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 :
Les problèmes que nous rencontrons sont les suivants :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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() }
-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.
Partager