Code du capteur ultrasons :
// définition des broches utilisées
int trig = 4; // broche "Trig Input" du capteur connecté à la broche numérique 4 de l'Arduino Motor Shield
int echo = 2; // broche "Echo" du capteur connecté à la broche numérique 2 de l'Arduino Motor Shield
long lecture_echo; // déclare une varible de type long pour stocker la mesure de la durée de l'aller-retour des ultrasons
long cm; // déclare une variable de type long pour stocker le calcul de la distance entre le capteur et l'obstacle
void setup() // début de l'éxécution du programme
{
pinMode(trig, OUTPUT); // broche numérique 4 avec le capteur en sortie : l'emetteur (T) ne se déclenche pas
digitalWrite(trig, LOW); // n'envoie pas une série de 8 impulsions ultrasoniques : les ultrasons ne se propagent pas dans l'air
pinMode(echo, INPUT); // broche numérique 2 avec le capteur en entrée : le récepteur (R) se déclenche mais n'éxécute pas l'ordre
pinMode(9, OUTPUT); // déclare frein A (roue droite)
pinMode(8, OUTPUT); // déclare frein B (roue gauche)
pinMode(11, OUTPUT); // déclare direction B (roue gauche)
pinMode(12, OUTPUT); // déclare direction A (roue droite)
}
void loop() // programme exécutée en boucle
{
digitalWrite(trig, HIGH); // envoie une série de 8 impulsions ultrasoniques : l'emetteur (T) envoie des ultrasons dans l'air jusqu'à toucher un obstacle et se retournent vers le capteur
delayMicroseconds(10); // impulsion sur "Trig Input" de 10µs
digitalWrite(trig, LOW); // n'envoie plus une série de 8 impulsions ultrasoniques : le récepteur (R) reçoit les ultrasons et cloture la prise de mesure
lecture_echo = pulseIn(echo, HIGH); // mesure la durée de l'aller-retour des ultrasons pendant le fonctionnement de la broche "Trig Input"
cm = lecture_echo / 58; // calcul la distance de l'aller-retour des ultrasons pendant le fonctionnement de la broche "Trig Input"
if (cm < 10) { // distance capteur-obstacle inférieur à 10 cm
digitalWrite(12, HIGH); // direction roue droite ne fonctionne plus
digitalWrite(9, HIGH); // roue droite s'arrête
analogWrite(3, 200);
digitalWrite(11, HIGH);
digitalWrite(8, HIGH); // roue gauche s'arrête
analogWrite(11, 200); //
delay(500); // attendre 0,5 secondes pour éxécuter le programme
}
if (cm > 10) { // distance capteur-obstacle supérieur à 10 cm
digitalWrite(12, LOW); // direction roue droite fonctionne
digitalWrite(9, LOW); // roue droite avance
analogWrite(3, 200);
digitalWrite(11, LOW);
digitalWrite(8, LOW); // roue gauche avance
analogWrite(11, 200);
delay(500); // attendre 0,5 secondes pour éxécuter le programme
}
}
Tentative de code pour la télécommande infrarouge :
#include <IRremote.h>
int IR_RECV_PIN = 5;
int MOTOR_D_PIN = 3;
int MOTOR_G_PIN = 11;
IRrecv irrecv(IR_RECV_PIN);
decode_results results;
void setup() {
irrecv.enableIRIn();
pinMode(MOTOR_D_PIN, OUTPUT);
pinMode(MOTOR_G_PIN, OUTPUT);
}
void loop () {
if (irrecv.decode(&results)) {
if(results.value == 0xFF02FD) {
digitalWrite(MOTOR_D_PIN, HIGH);
digitalWrite(MOTOR_G_PIN, HIGH);
} else if (results.value == 0xFF9867) {
digitalWrite(MOTOR_D_PIN, LOW);
digitalWrite(MOTOR_G_PIN, LOW);
}
irrecv.resume();
}
}
Tentative de code pour la télécommande+capteur ultrason
#include <IRremote.h> // liste des codes telecommande
// définition des broches utilisées
int IR_RECV_PIN = 5;
int trig = 4; // broche "Trig Input" du capteur connecté à la broche numérique 4 de l'Arduino Motor Shield
int echo = 2; // broche "Echo" du capteur connecté à la broche numérique 2 de l'Arduino Motor Shield
long lecture_echo; // déclare une varible de type long pour stocker la mesure de la durée de l'aller-retour des ultrasons
long cm; // déclare une variable de type long pour stocker le calcul de la distance entre le capteur et l'obstacle
int MOTOR_D_PIN = 3;
int MOTOR_G_PIN = 11;
IRrecv irrecv(IR_RECV_PIN);
decode_results results;
void setup() // début de l'éxécution du programme
{
irrecv.enableIRIn();
pinMode(trig, OUTPUT); // broche numérique 4 avec le capteur en sortie : l'emetteur (T) ne se déclenche pas
digitalWrite(trig, LOW); // n'envoie pas une série de 8 impulsions ultrasoniques : les ultrasons ne se propagent pas dans l'air
pinMode(echo, INPUT); // broche numérique 2 avec le capteur en entrée : le récepteur (R) se déclenche mais n'éxécute pas l'ordre
pinMode(MOTOR_D_PIN, OUTPUT);
pinMode(MOTOR_G_PIN, OUTPUT);
}
void loop() // programme exécutée en boucle
{
digitalWrite(trig, HIGH); // envoie une série de 8 impulsions ultrasoniques : l'emetteur (T) envoie des ultrasons dans l'air jusqu'à toucher un obstacle et se retournent vers le capteur
delayMicroseconds(10); // impulsion sur "Trig Input" de 10µs
digitalWrite(trig, LOW); // n'envoie plus une série de 8 impulsions ultrasoniques : le récepteur (R) reçoit les ultrasons et cloture la prise de mesure
lecture_echo = pulseIn(echo, HIGH); // mesure la durée de l'aller-retour des ultrasons pendant le fonctionnement de la broche "Trig Input"
cm = lecture_echo / 58; // calcul la distance de l'aller-retour des ultrasons pendant le fonctionnement de la broche "Trig Input"
if (cm < 10) { // distance capteur-obstacle inférieur à 10 cm{
if (irrecv.decode(&results)) {
if(results.value == 0xFF02FD){
digitalWrite(MOTOR_D_PIN,LOW);
digitalWrite(MOTOR_G_PIN,LOW );
}
}
if (cm > 10) { // distance capteur-obstacle supérieur à 10 cm{
if (irrecv.decode(&results)) {
if(results.value == 0xFF02FD)
digitalWrite(MOTOR_D_PIN, HIGH);
digitalWrite(MOTOR_G_PIN, HIGH);
}
else if (results.value == 0xFF9867) {
digitalWrite(MOTOR_D_PIN, LOW);
digitalWrite(MOTOR_G_PIN, LOW);
}
}
irrecv.resume();
}
}
En ce qui concerne de le faire reculer, je ne connais pas le code pour le faire tourner