Bonjour à tous,
Je suis nouveau sur ce forum car je rencontre un problème de programmation des if else.
Mon projet étant de créer un robot éviteur d'objets (une tondeuse autonome en vérité).
Je dispose pour cela de 3 capteurs infrarouge (PIR) (capteur gauche, central et droite)
et d'une série de 9 leds pour les tests.
Dans le code joint, seules les conditions 1 et 2 fonctionnent (AVANCE NORMALE / CENTRE MASQUE).
Auriez-vous une solution afin que le reste des conditions fonctionnent également ?
Au plaisir de lire vos réponses,
Cordialement,
Denis.
#include "CytronMotorDriver.h"
CytronMD motor1(PWM_DIR, 2, 3); // moteur1 pin 2/3
CytronMD motor2(PWM_DIR, 4, 5); // moteur2 pin 3/4
int LED1 = 6;//VERT G
int LED2 = 7;//ORANGE G
int LED3 = 8;//ROUGE G
int LED4 = 14;//VERT C
int LED5 = 15;//ORANGE C
int LED6 = 16;//ROUGE C
int LED7 = 18;//VERT D
int LED8 = 19;//ORANGE D
int LED9 = 20;//ROUGE D
int centerPin = 24; // This is our input pin for center
int center = LOW; // HIGH MEANS NO OBSTACLE
int leftPin = 22; // This is our input pin for left
int left = LOW; // HIGH MEANS NO OBSTACLE
int rightPin = 26; //This is our input pin for right
int right = LOW; // HIGH MEANS NO OBSTACLE
void setup() {
//defini les entrees/sorties
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
pinMode(LED6, OUTPUT);
pinMode(LED7, OUTPUT);
pinMode(LED8, OUTPUT);
pinMode(LED9, OUTPUT);
pinMode(centerPin, INPUT);
pinMode(leftPin, INPUT);
pinMode(rightPin, INPUT);
}
void loop() {
center = digitalRead(centerPin);
left = digitalRead(leftPin);
right = digitalRead(rightPin);
if (center == HIGH || left == HIGH || right == HIGH) // CONDITION 1 AVANCE NORMALE
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, LOW);
digitalWrite(LED6, LOW);
digitalWrite(LED7, HIGH);
digitalWrite(LED8, LOW);
digitalWrite(LED9, LOW);
motor1.setSpeed(50);
motor2.setSpeed(50);
}
else if
(digitalRead(centerPin == LOW)) // CONDITION 2 CENTRE MASQUE
{
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
digitalWrite(LED6, HIGH);
digitalWrite(LED7, LOW);
digitalWrite(LED8, LOW);
digitalWrite(LED9, LOW);
motor1.setSpeed(-50);
motor2.setSpeed(-50);
delay(4000);
digitalWrite(LED2, HIGH);
motor1.setSpeed(0);
motor2.setSpeed(50); // TOURNE GAUCHE
delay(2000);
}
else if
(digitalRead(leftPin == LOW)) // CONDITION 3 GAUCHE MASQUE
{
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
digitalWrite(LED6, LOW);
digitalWrite(LED7, LOW);
digitalWrite(LED8, LOW);
digitalWrite(LED9, LOW);
motor1.setSpeed(-50);
motor2.setSpeed(-50);
delay(4000);
digitalWrite(LED8, HIGH);
motor1.setSpeed(50); // TOURNE DROITE
motor2.setSpeed(0);
delay(2000);
}
else if
(digitalRead(rightPin == LOW)) // CONDITION 3 DROITE MASQUE
{
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);
digitalWrite(LED6, LOW);
digitalWrite(LED7, LOW);
digitalWrite(LED8, LOW);
digitalWrite(LED9, HIGH);
motor1.setSpeed(-50);
motor2.setSpeed(-50);
delay(4000);
digitalWrite(LED2, HIGH);
motor1.setSpeed(0); // TOURNE GAUCHE
motor2.setSpeed(50);
delay(2000);
}
else
{
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, LOW);
digitalWrite(LED6, LOW);
digitalWrite(LED7, HIGH);
digitalWrite(LED8, LOW);
digitalWrite(LED9, LOW);
motor1.setSpeed(50);
motor2.setSpeed(50);
}}