Bonjour.
Je suis novice en programmation et ai vraisemblablement présumé de mes capacités.
Pour faciliter la fabrication de palette, Je cherche à allumer 4 lampes, via 4 relais lors de l’appuie sur des boutons poussoir, et indiquer sur un afficheur LCD quel combinaison est sélectionnée.
Concrètement, lors de l'appuie sur le 1er BP, les relais 1 et 2 doivent s'allumer, et afficher sur l'écran 1 petite palette. Lors de l'appuie sur le 2eme BP, les relais 1 et 3 doivent s'allumer, et afficher sur l'écran 1 grande palette. Lors de l'appuie sur le3eme BP, les relais 1, 3 et 4 doivent s'allumer, et afficher sur l'écran 2 grandes palette. Enfin l'appuie sur le 4éme Bp doit éteindre tous les relais et afficher des * sur l'écran.
Pour m'aider dans ce projet, je l'ai préparé sur le site wokwi.com.
PROJET FINAL v1 - Wokwi Arduino and ESP32 Simulator)
Le premier appuie sur n'importe quel bouton fonctionne bien, mais J'ai un comportement inattendu à partir du second appuie.....
Ci dessous le code que j'ai bidouillé :
#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C // inclure la librairie LiquidCrystal_I2C
LiquidCrystal_I2C lcd(0x27, 20, 4); // LiquidCrystal_I2C
int relai1PIN = 6; // PIN de sortie relai n°1
int relai2PIN = 7; // PIN de sortie relai n°2
int relai3PIN = 8; // PIN de sortie relai n°3
int relai4PIN = 9; // PIN de sortie relai n°4
int button1Pin = 2; // PIN d'entrée BP n°1 - 1petite
int button2Pin = 3; // PIN d'entrée BP n°2 - 1 grande
int button3Pin = 4; // PIN d'entrée BP n°3 - 2 grandes
int button0Pin = 11; // PIN d'entrée BP n°0 - OFF
int timeDelay = 500; //
void setup(){
//Démarrage de l'afficheur et msg de bienvenue
lcd.init();
lcd.backlight();
lcd.setCursor(6, 0);
lcd.print("Bonjour");
lcd.setCursor(3, 1);
lcd.print("Quelle palette");
lcd.setCursor(5, 2);
lcd.print("fabriquer ?");
pinMode(relai1PIN, OUTPUT); // Définition PIN relai n°1 en sortie
pinMode(relai2PIN, OUTPUT); // Définition PIN relai n°2 en sortie
pinMode(relai3PIN, OUTPUT); // Définition PIN relai n°3 en sortie
pinMode(relai4PIN, OUTPUT); // Définition PIN relai n°4 en sortie
pinMode(button1Pin, INPUT); // Définition PIN BP n°1 en entrée
pinMode(button2Pin, INPUT); // Définition PIN BP n°2 en entrée
pinMode(button3Pin, INPUT); // Définition PIN BP n°3 en entrée
pinMode(button0Pin, INPUT); // Définition PIN BP n°0 en entrée
digitalWrite(relai1PIN, LOW); // éteint le relai n°1
digitalWrite(relai2PIN, LOW); // éteint le relai n°2
digitalWrite(relai3PIN, LOW); // éteint le relai n°3
digitalWrite(relai4PIN, LOW); // éteint le relai n°4
}
void loop(){
if (digitalRead(button1Pin) == HIGH) // Appuis sur le BP n°1
{
digitalWrite(relai1PIN, LOW); // éteint le relai n°1
digitalWrite(relai2PIN, LOW); // éteint le relai n°2
digitalWrite(relai3PIN, LOW); // éteint le relai n°3
digitalWrite(relai4PIN, LOW); // éteint le relai n°4
digitalWrite(relai1PIN, HIGH); // allume le relai n°1
digitalWrite(relai2PIN, HIGH); // allume le relai n°2
//digitalWrite(relai3PIN, LOW); // éteint le relai n°3
//digitalWrite(relai4PIN, LOW); // éteint le relai n°4
// affiche le message palette 1 petite
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("********************");
lcd.setCursor(0, 1);
lcd.print("Palette selectionnee");
lcd.setCursor(6, 2);
lcd.print("1 petite");
lcd.setCursor(0, 3);
lcd.print("********************");
}
if (digitalRead(button2Pin) == HIGH) // Appuis sur le BP n°2
{
digitalWrite(relai1PIN, LOW); // éteint le relai n°1
digitalWrite(relai2PIN, LOW); // éteint le relai n°2
digitalWrite(relai3PIN, LOW); // éteint le relai n°3
digitalWrite(relai4PIN, LOW); // éteint le relai n°4
digitalWrite(relai1PIN, HIGH); // allume le relai n°1
//digitalWrite(relai2PIN, LOW); // éteint le relai n°2
digitalWrite(relai3PIN, HIGH); // allume le relai n°3
//digitalWrite(relai4PIN, LOW); // éteint le relai n°4
// affiche le message palette 1 grande
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("********************");
lcd.setCursor(0, 1);
lcd.print("Palette selectionnee");
lcd.setCursor(6, 2);
lcd.print("1 grande");
lcd.setCursor(0, 3);
lcd.print("********************");
}
if (digitalRead(button3Pin) == HIGH) // Appuis sur le BP n°3
{
digitalWrite(relai1PIN, LOW); // éteint le relai n°1
digitalWrite(relai2PIN, LOW); // éteint le relai n°2
digitalWrite(relai3PIN, LOW); // éteint le relai n°3
digitalWrite(relai4PIN, LOW); // éteint le relai n°4
digitalWrite(relai1PIN, HIGH); // allume le relai n°1
//digitalWrite(relai2PIN, LOW); // éteint le relai n°2
digitalWrite(relai3PIN, HIGH); // allume le relai n°3
digitalWrite(relai4PIN, HIGH); // allume le relai n°4
// affiche le message palette 2 grandes
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("********************");
lcd.setCursor(0, 1);
lcd.print("Palette selectionnee");
lcd.setCursor(5, 2);
lcd.print(" 2 grandes");
lcd.setCursor(0, 3);
lcd.print("********************");
}
if (digitalRead(button0Pin) == HIGH) // Appuis sur le BP n°0
{
digitalWrite(relai1PIN, LOW); // éteint le relai n°1
digitalWrite(relai2PIN, LOW); // éteint le relai n°2
digitalWrite(relai3PIN, LOW); // éteint le relai n°3
digitalWrite(relai4PIN, LOW); // éteint le relai n°4
// affiche le message ***********
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("********************");
lcd.setCursor(0, 1);
lcd.print("********************");
lcd.setCursor(0, 2);
lcd.print("********************");
lcd.setCursor(0, 3);
lcd.print("********************");
}
}
Si quelqu'un avait un début de piste à explorer....
D'avance merci !