Bonjour,
Je souhaite avoir 6 écrans LCD qui affichent des choses différentes quand j’appuie sur des boutons poussoirs.
A l'heure d’aujourd’hui le problème que j'ai c'est que les écrans affichent tout en même temps.
Qu'elle est la solution ?
Merci d'avance
Bonsoir aubin_61
C'est quel type d'affichage, donnes un lien.
Cordialement
jpbbricole
L'affichage est un texte.
Avec comme ecran LCD 1602
Bonsoir aubin_61
As tu le modèle qui permet de changer l'adresse de l'affichage.
Fais une photo du dos de l'affichage.
Cordialement
jpbbricole
Au niveau de l'adressage c'est bon car j'ai bien tout mes écrans.
C'est lorsque j’appuie sur l'un des boutons pur changer "de pages" que toutes les pages s'affichent en même temps.
Bonsoir aubin_61
Ok, alors mets ton programme en ligne.
Cordialement
jpbbricole
Les adresses I2C ne serait-elle pas les mêmes sur tous les modules ?
Que dit le scanner I2C ?
// VERSION 2.6 USB
// INTIALISATION
// MIDI
#define midiChannel (byte) 0
//LCD
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// IDENTIFICATION DES LCD I2C
LiquidCrystal_I2C lcd1 (0x20, 16, 2);
LiquidCrystal_I2C lcd2 (0x21, 16, 2);
LiquidCrystal_I2C lcd3 (0x27, 16, 2);
LiquidCrystal_I2C lcd4 (0x23, 16, 2);
LiquidCrystal_I2C lcd5 (0x24, 16, 2);
LiquidCrystal_I2C lcd6 (0x25, 16, 2);
//Switch
int switch1 = 30; // the number of the switch pin
int switch2 = 31;
int switch3 = 32;
int switch4 = 33;
//ledswitch
int ledswitch1 = 34;
int ledswitch2 = 35;
int ledswitch3 = 36;
int ledswitch4 = 37;
int switch1begin = 0;
int switch2begin = 0;
int switch3begin = 0;
int switch4begin = 0;
// POTAR
//Potar1_1
int PinCLK1_1 = 13;
int PinDT1_1 = 7;
int PinSW1_1 = 2;
static long potarPos1_1 = -1; // Au 1er démarrage, il passera à 0
int PinCLKLast1_1 = LOW;
int nbPas1_1 = 20; // Résolution de l'encodeur
int n1_1 = LOW;
// LAYER CONTROLLE PAR SWITCH
int layer1 = false;
int layer2 = false;
int layer3 = false;
int layer4 = false;
void setup() {
Serial.begin(9600);//intialize serial monitor with 9600 baud
//initialize the LCD
lcd1.init();
lcd2.init();
lcd3.init();
lcd4.init();
lcd5.init();
lcd6.init();
lcd1.backlight(); // turn the backlight ON for the LCD1
lcd2.backlight();
lcd3.backlight();
lcd4.backlight();
lcd5.backlight();
lcd6.backlight();
//Switch
pinMode (switch1, INPUT_PULLUP); //intialize the switch pin is a input
pinMode (switch2, INPUT_PULLUP);
pinMode (switch3, INPUT_PULLUP);
pinMode (switch4, INPUT_PULLUP);
//ledswitch
pinMode (ledswitch1, OUTPUT);
pinMode (ledswitch2, OUTPUT);
pinMode (ledswitch3, OUTPUT);
pinMode (ledswitch4, OUTPUT);
switch1begin=0;
switch2begin=0;
switch3begin=0;
switch4begin=0;
//Potar
pinMode (12, INPUT); //pin CLK
pinMode (7, INPUT); //pin DT
pinMode (2, INPUT); //Pin SW
} // VOID SETUP
void loop() {
//LCD
lcd1.setCursor(0, 0);
lcd1.print ("Display 1");
lcd2.setCursor(0, 0);
lcd2.print ("Display 2");
lcd3.setCursor(0, 0);
lcd3.print ("Display 3");
lcd4.setCursor(0, 0);
lcd4.print ("Display 4");
lcd5.setCursor(0, 0);
lcd5.print ("Display 5");
lcd6.setCursor(0, 0);
lcd6.print ("Display 6");
//Switch
//Switch 1
Serial.print(switch1begin);
if (switch1begin) //on teste si etatAllumage est à 1
{
digitalWrite (layer1, true);
digitalWrite (layer2, false);
digitalWrite (layer3, false);
digitalWrite (layer4, false);
lcd1.clear();
lcd2.clear();
lcd3.clear();
lcd4.clear();
lcd5.clear();
lcd6.clear();
}
else //sinon
{
digitalWrite (layer1, false);
}
//lecture de l'état du bouton et stockage dans etatBouton
boolean switch1state = digitalRead(switch1);
Serial.println(switch1state);
//test des conditions
if (!switch1state)//si bouton appuyé (donc le pin indique 0 car il est en mode INPUT_PULLUP)
{
if (switch1begin) //si etatAllumage à 1
{
switch1begin=0; //on le passe à 0
}
else //sinon
{
switch1begin=1; //on le passe à 1
}
delay(10);
}
//Switch 2
Serial.print(switch2begin);
if (switch2begin) //on teste si etatAllumage est à 1
{
digitalWrite (layer2, true);
digitalWrite (layer1, false);
digitalWrite (layer3,false);
digitalWrite (layer4,false);
lcd1.clear();
lcd2.clear();
lcd3.clear();
lcd4.clear();
lcd5.clear();
lcd6.clear();
}
else //sinon
{
digitalWrite (layer2 ,false);
}
//lecture de l'état du bouton et stockage dans etatBouton
boolean switch2state = digitalRead(switch2);
Serial.println(switch2state);
//test des conditions
if (!switch2state)//si bouton appuyé (donc le pin indique 0 car il est en mode INPUT_PULLUP)
{
if (switch2begin) //si etatAllumage à 1
{
switch2begin=0; //on le passe à 0
}
else //sinon
{
switch2begin=1; //on le passe à 1
}
delay(10);
}
//Switch 3
Serial.print(switch3begin);
if (switch3begin) //on teste si etatAllumage est à 1
{
digitalWrite (layer1, false);
digitalWrite (layer2, false);
digitalWrite (layer3, true);
digitalWrite (layer4, false);
lcd1.clear();
lcd2.clear();
lcd3.clear();
lcd4.clear();
lcd5.clear();
lcd6.clear();
}
else //sinon
{
digitalWrite (layer3 ,false);
}
//lecture de l'état du bouton et stockage dans etatBouton
boolean switch3state = digitalRead(switch3);
Serial.println(switch3state);
//test des conditions
if (!switch3state)//si bouton appuyé (donc le pin indique 0 car il est en mode INPUT_PULLUP)
{
if (switch3begin) //si etatAllumage à 1
{
switch3begin=0; //on le passe à 0
}
else //sinon
{
switch3begin=1; //on le passe à 1
}
delay(10);
}
//Switch 4
Serial.print(switch4begin);
if (switch4begin) //on teste si etatAllumage est à 1
{
digitalWrite (layer1, false);
digitalWrite (layer2, false);
digitalWrite (layer3, false);
digitalWrite (layer4, true);
lcd1.clear();
lcd2.clear();
lcd3.clear();
lcd4.clear();
lcd5.clear();
lcd6.clear();
}
else //sinon
{
digitalWrite (layer4 ,false);
}
//lecture de l'état du bouton et stockage dans etatBouton
boolean switch4state = digitalRead(switch4);
Serial.println(switch4state);
//test des conditions
if (!switch4state)//si bouton appuyé (donc le pin indique 0 car il est en mode INPUT_PULLUP)
{
if (switch4begin) //si etatAllumage à 1
{
switch4begin=0; //on le passe à 0
}
else //sinon
{
switch4begin=1; //on le passe à 1
}
delay(10);
}
// BOUCLE PRINCIPALE
// LAYER 1
while (layer1 = true)
{
// LED SWITCH 1
digitalWrite(ledswitch1, HIGH);//on allume la LED
// LCD
lcd1.setCursor(0, 0);
lcd1.print ("Display 1.1");
lcd2.setCursor(0, 0);
lcd2.print ("Display 2.1");
lcd3.setCursor(0, 0);
lcd3.print ("Display 3.1");
lcd4.setCursor(0, 0);
lcd4.print ("Display 4.1");
lcd5.setCursor(0, 0);
lcd5.print ("Display 5.1");
lcd6.setCursor(0, 0);
lcd6.print ("Display 6.1");
//BREAK
if(layer2 = true)
{
break;
}
if(layer3 = true)
{
break;
}
if(layer4 = true)
{
break;
}
} // LAYER 1 WHILE
// LAYER 2
while (layer2 = true)
{
// LED SWITCH 2
digitalWrite(ledswitch2, HIGH);//on allume la LED
// LCD
lcd1.setCursor(0, 0);
lcd1.print ("Display 1.2");
lcd2.setCursor(0, 0);
lcd2.print ("Display 2.2");
lcd3.setCursor(0, 0);
lcd3.print ("Display 3.2");
lcd4.setCursor(0, 0);
lcd4.print ("Display 4.2");
lcd5.setCursor(0, 0);
lcd5.print ("Display 5.2");
lcd6.setCursor(0, 0);
lcd6.print ("Display 6.2");
//BREAK
if(layer1 = true)
{
break;
}
if(layer3 = true)
{
break;
}
if(layer4 = true)
{
break;
}
} // LAYER 2 WHILE
// LAYER 3
while (layer3 = true)
{
// LED SWITCH 3
digitalWrite(ledswitch3, HIGH);//on allume la LED
// LCD
lcd1.setCursor(0, 0);
lcd1.print ("Display 1.3");
lcd2.setCursor(0, 0);
lcd2.print ("Display 2.3");
lcd3.setCursor(0, 0);
lcd3.print ("Display 3.3");
lcd4.setCursor(0, 0);
lcd4.print ("Display 4.3");
lcd5.setCursor(0, 0);
lcd5.print ("Display 5.3");
lcd6.setCursor(0, 0);
lcd6.print ("Display 6.3");
//BREAK
if(layer1 = true)
{
break;
}
if(layer2 = true)
{
break;
}
if(layer4 = true)
{
break;
}
} // LAYER 3 WHILE
// LAYER 4
while (layer4 = true)
{
// LED SWITCH 4
digitalWrite(ledswitch4, HIGH);//on allume la LED
// LCD
lcd1.setCursor(0, 0);
lcd1.print ("Display 1.4");
lcd2.setCursor(0, 0);
lcd2.print ("Display 2.4");
lcd3.setCursor(0, 0);
lcd3.print ("Display 3.4");
lcd4.setCursor(0, 0);
lcd4.print ("Display 4.4");
lcd5.setCursor(0, 0);
lcd5.print ("Display 5.4");
lcd6.setCursor(0, 0);
lcd6.print ("Display 6.4");
//BREAK
if(layer1 = true)
{
break;
}
if(layer2 = true)
{
break;
}
if(layer3 = true)
{
break;
}
} // LAYER 4 WHILE
} // VOID LOOP
// Fonctions communes
void sendMessage (byte cmd, byte ch, byte val) {
cmd= cmd|byte (midiChannel);
Serial.write (cmd);
Serial.write (ch);
Serial.write (val);
}
Comment les écrans savent-ils qu'ils ont ces adresses ? Que dit le scanner I2C ?
As-tu pris le fer à souder pour changer les straps qui modifient l'adresse ?
Bonsoir aubin_61
Est ce que cette séquence
lcd1.setCursor(0, 0);
lcd1.print ("Display 1");
lcd2.setCursor(0, 0);
lcd2.print ("Display 2");
lcd3.setCursor(0, 0);
lcd3.print ("Display 3");
lcd4.setCursor(0, 0);
lcd4.print ("Display 4");
lcd5.setCursor(0, 0);
lcd5.print ("Display 5");
lcd6.setCursor(0, 0);
lcd6.print ("Display 6");
se passe bien, le bon texte, dans le bon écran?
Pourrais-tu résumer la fonction de ton programme?
Cordialement
jpbbricole
Bonjour aubin_61
Changes tout tes
while (layerX = true)
en
while (layerX == true)
Pour tester l'égalité, c'est ==
= est pour assigner une valeur, par exemple..
Cordialement
jpbbricole
et aussi tous les
en
if(layerX == true)
oui l'affichage est bon pour ça j'ai testé
Oui tout est bien au bon endroit.
La fonction du programme est un controlleur midi.
Les 4 switchs sont pour changer de pages (layer).
Les écrans servent pour l'affichage de chaque layers.
exemple switch 1 = displays 1.1 ; displays 2.1 ...
switch 2 = displays 1.2 ; displays 2.2 ...
...
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.