Bonjour,
Mon écran LCD n'affiche que "111" et je ne comprend pas pourquoi.
Mon programme simule un suiveur solaire et des capteurs fin de courses, degree pour la position des panneau
Il simule aussi un état d'urgence si il y a l'appuie d'un bouton, urg.
Des leds simulent le fait que les panneaux touche les capteur fin de cours, LEDg et LEDd
Merci de bien vouloir m'aider
Voici mon code :
'''
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int sensorPin = 0;
//const int ledD=10;
//const int boutonD = 0;
int etatBoutonD;
//const int ledG=9;
//const int boutonG = 3;
int etatBoutonG;
//const int ledA=8;
//const int boutonA = 4;
int etatBoutonA;
int degree;
int pos;
int urg;
#define btnRIGHT 0
#define btnUP 1
#define btnDOWN 2
#define btnLEFT 3
#define btnSELECT 4
#define btnNONE 5
void setup() {
lcd.begin(16,2);
degree = 0;
urg = 1;
Serial.begin(9600);
//pinMode(ledD,OUTPUT);
pinMode(btnRIGHT,INPUT);
//pinMode(ledG,OUTPUT);
pinMode(btnLEFT,INPUT);
//pinMode(ledA,OUTPUT);
pinMode(btnSELECT,INPUT);
}
void loop() {
etatBoutonA = digitalRead(btnSELECT);
if ( degree >=13 ){
//digitalWrite(ledA, HIGH);
delay(200);
//digitalWrite(ledA, LOW);
delay(200);
lcd.setCursor(0,0);
lcd.print("Position depasser");
lcd.setCursor(0,1);
lcd.print("Remise Precededente");
for (int t=0; t<1; t++){
//digitalWrite(ledD, LOW);
degree = degree -1;
//digitalWrite(ledA, HIGH);
delay(500);
//digitalWrite(ledA, LOW);
delay(500);
}
degree = 11;
}
if ( degree <=-1 ){
//digitalWrite(ledA, HIGH);
delay(200);
//digitalWrite(ledA, LOW);
delay(200);
lcd.setCursor(0,0);
lcd.print("Position depasser");
lcd.setCursor(0,1);
lcd.print("Remise Initial");
for (int t=0; t<1; t++){
//digitalWrite(ledD, LOW);
degree = degree +1;
//digitalWrite(ledA, HIGH);
delay(500);
//digitalWrite(ledA, LOW);
delay(500);
}
degree = 0;
}
if(etatBoutonA == HIGH) {
degree = 1;
urg = urg +1;
if (urg == 3 ){
urg = 1;
}
delay(1000);
}
else{
// Etat bouton Droite + led
etatBoutonD = digitalRead(btnRIGHT);
if(etatBoutonD == HIGH) {
degree = degree +1 ;
delay(200);
}
else{
//digitalWrite(ledD, LOW);
}
//Detecter sur Est
if (degree == 0 ) {
//digitalWrite(ledD, HIGH);
pos = 1;
}
// Etat bouton gauche + led
etatBoutonG = digitalRead(btnLEFT);
if(etatBoutonG == HIGH) {
degree = degree - 1 ;
delay(200);
}
else{
//digitalWrite(ledG, LOW);
}
//detecter si pos OUEST
}
if (degree == 1,11){
pos = 0;
}
if (degree == 12 ) {
//digitalWrite(ledG, HIGH);
pos = 2;
}
if (degree == 0 ) {
//digitalWrite(ledD, HIGH);
pos = 1;
}
if ( etatBoutonG && etatBoutonD == HIGH ){
degree = 0;
}
// ecrire la position Est
if (urg == 1){
//digitalWrite(ledA, LOW);
//Position
if (pos == 0) {
lcd.setCursor(0,0);
lcd.print("Position ");
lcd.setCursor(9,0);
lcd.print(degree);
lcd.setCursor(11,0);
lcd.print(" ");
lcd.setCursor(0,1);
lcd.print("Etat : BON ");
if (degree <=9 ){
lcd.setCursor(10,0);
lcd.print(" ");
}
}
// Position EST
if (pos == 1) {
lcd.setCursor(0,0);
lcd.print("Position ");
lcd.setCursor(9,0);
lcd.print("Est ");
lcd.setCursor(0,1);
lcd.print("Etat : BON ");
}
// Position Ouest
if (pos == 2) {
lcd.setCursor(0,0);
lcd.print("Position ");
lcd.setCursor(9,0);
lcd.print("Ouest ");
lcd.setCursor(0,1);
lcd.print("Etat : BON ");
}
}
// Urgence
if (urg == 2){
//digitalWrite(ledA, HIGH);
degree = 0 ;
lcd.setCursor(0,0);
lcd.print("ALERTE !!! ");
lcd.setCursor(0,1);
lcd.print("Etat : CRITIQUE");
}
}