Bonjour, j'ai un projet à faire en classe et je n'arrive pas à faire fonctionner mon programme correctement, j'ai fait un schéma pour expliquer ce que je dois faire. Nom : Annotation 2019-04-06 182816.jpg
Affichages : 748
Taille : 77,9 Ko

Je mets mon code en dessous.

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <Servo.h> //inclusion de la bibliothèque Servo
#include <SoftwareSerial.h> //inclusion de la bibliothèque SoftwareSerial
 
Servo monServomoteur; //crée un objet servo pour contrôler le servomoteur
SoftwareSerial xbee(2, 3); //émission and réception
 
const int IN1 = 4; //variable qui envoie et reçoit les informations entre le pont H et l'Arduino
const int IN2 = 5; //variable qui envoie et reçoit les informations entre le pont H et l'Arduino
 
const int microrupteur1 = 9; //le microrupteur est connecté à la broche 9 de la carte Arduino
const int microrupteur2 = 10; //le microrupteur est connecté à la broche 10 de la carte Arduino
 
String statut_livraison = "+304"; //met la valeur "+304" dans statut_livraison
String statut_devant_quai = "&404"; //met la valeur "&404" dans statut_devant_quai
 
long temps;
 
void setup()
{
  Serial.begin(9600); //régle le débit de données du Arduino
  Serial.println("arduino commence à envoyer des données via XBee");
 
  Serial.begin(9600); //régle le débit de données des capteurs IR
  Serial.println("capteur IR");
  pinMode (11,INPUT); //définit le pin 11 comme entrée du capteur IR 1
  pinMode (12,INPUT); //définit le pin 12 comme entrée du capteur IR 2
  pinMode (13,INPUT); //définit le pin 13 comme entrée du capteur IR 3
 
  pinMode(microrupteur1, INPUT); //définit le pin 9 comme entrée pour le microrupteur
  pinMode(microrupteur2, INPUT); //définit le pin 10 comme entrée pour le microrupteur
 
  pinMode(IN1,OUTPUT); //définit IN1 comme sortie de commande du moteur
  pinMode(IN2,OUTPUT); //définit IN2 comme sortie de commande du moteur
 
  monServomoteur.attach(6); //rattache le servomoteur au pin 6
 
  temps = millis();
}
 
void loop()
{
  int ir1 = digitalRead(11); //la variable ir1 lit ce que le capteur IR 1 reçoit
  delay(50); //tous les 50 millisecondes
  int ir2 = digitalRead(12); //la variable ir2 lit ce que le capteur IR 2 reçoit
  delay(50); //tous les 50 millisecondes
  int ir3 = digitalRead(13); //la variable ir3 lit ce que le capteur IR 3 reçoit
  delay(50); //tous les 50 millisecondes
 
  int etatMicrorupteur1 = digitalRead(microrupteur1); 
  int etatMicrorupteur2 = digitalRead(microrupteur2);
 
 
  //*présence du drone*\\
 
  if(ir1==0) //le drone est devant le quai
    {
     statut_devant_quai = "&400"; //met la valeur "&400" dans statut_devant_quai
     Serial.println(statut_devant_quai);
     xbee.print(statut_devant_quai); //envoie la valeur via xBee
    }
 
  if(ir1==1) //le drone est introuvable
    {
     Serial.println(statut_devant_quai);
     xbee.print(statut_devant_quai); //envoie la valeur via xBee
    }
 
 
  //*aller*\\
 
  if(ir2==0) //si le capteur IR 2 détecte le drone
    {
      //mettre code pour arrêter la caméra pixy
      if((millis() - temps) > 15)
         {
          monServomoteur.write(90); //écrit (dire) la position du servomoteur
         }
 
      while(etatMicrorupteur2==LOW) //tant que le bouton n'est pas actionné
           {
            digitalWrite(IN1,HIGH); //moteur tourne dans le sens horaire
           }
    }
 
 
  //*présence du colis*\\
 
  if(ir3==0) //passage du colis
    {
     statut_livraison = "+300"; //met la valeur "+300" dans statut_livraison
     Serial.println(statut_livraison);
     xbee.print(statut_livraison); //envoie la valeur via xBee
    }
 
  if(ir3==1) //vide
    {
     Serial.println(statut_livraison);
     xbee.print(statut_livraison); //envoie la valeur via xBee
    }
 
 
  //*retour*\\
 
  if(ir3==0) //si le capteur IR 3 est actionné
    {
     digitalWrite(IN2,HIGH); //moteur tourne dans le sens antihoraire
     if(etatMicrorupteur1==HIGH) //si le microrupteur1 est actionné
       {
        digitalWrite(IN2,LOW); //coupe le moteur
       }
     if((millis() - temps) > 15)
         {
          monServomoteur.write(90); //écrit (dire) la position du servomoteur
         }
    }
}