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 : 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()
 
 
    }
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.