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
}
}
} |
Partager