Bonsoir
Une demande de connaissance pour un afficheur LCD en liaison i2c
je cherche a visualisé sur un afficheur LCD les data de dialogue entre Domoticz et Mysensors.
le schéma de l'install
sur le site https://www.arduino.cc/en/Tutorial/LibraryExamples/LiquidCrystalSerialDisplay
un exemple de code "This example sketch accepts serial input from a host computer and displays it on the LCD"
une recopie de la partie gestion LCD (sans la partie GateWay de MySensors)
// include the library code:
#include <LiquidCrystal.h>
// initialize the library by associating any needed LCD interface pin
// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
// initialize the serial communications:
Serial.begin(9600);
}
void loop() {
// when characters arrive over the serial port...
if (Serial.available()) {
// wait a bit for the entire message to arrive
delay(100);
// clear the screen
lcd.clear();
// read all the available characters
while (Serial.available() > 0) {
// display each character to the LCD
lcd.write(Serial.read());
}
}
}
l'afficheur me donne bien les data du bus Usb, mais toujours sur la même ligne >:(
Je cherche que chaque nouvelle trame de dialogue s'affiche sur la ligne suivante (incrémente)
et arriver a la 4eme ligne on retourne à la 1er ligne de l’afficheur.
j'ai testé aussi le croquis de Simple Arduino code used to show data on the lcd shield over a serial connection. Ideal to have the output of a script (Node/Ruby/Pyhon etc) shown on a pretty lcd screen · GitHub
mais rien ne s'affiche.
//https://gist.github.com/ravenlp/5794749
Code Arduino simple utilisé pour afficher des données afficheur LCD via une connexion série.
Idéal pour afficher la sortie d'un script (Node / Ruby / Pyhon etc) sur un joli écran lcd
Modif pour LCD i2c
*/
#include <Wire.h> /* LCD i2c */
#include <LiquidCrystal_I2C.h>
int counter = 0;
LiquidCrystal_I2C lcd(0x20,16,4); /*adresse i2c et type lcd */
void setup(){
Serial.begin(115200);
lcd.init(); /* init. lcd*/
lcd.backlight();
}
void loop()
{
if (Serial.available()) //only read when a character is available
{
char c = Serial.read();
Serial.write(c);
lcd.print(c);
counter++;
}
if (counter == 16)
{
delay(100);
lcd.setCursor(1, 2);
lcd.print(" fin");
counter = 0;
lcd.setCursor(0, 0);
}
}
un test aussi avec :
*/
#include <Wire.h> /* LCD i2c */
#include <LiquidCrystal_I2C.h>
char c[33];
LiquidCrystal_I2C lcd(0x20,16,4); /*adresse i2c et type lcd */
void setup(){
Serial.begin(115200);
lcd.init(); /* init. lcd*/
lcd.backlight();
}
void loop()
{
// quand les caractères arrivent sur le port série ...
if (Serial.available()) {
delay(100); /*attendez un peu que tout le message arrive*/
lcd.clear(); /* efface l'écran*/
int i = 0; /*lit tous les caractères disponibles*/
while (Serial.available() > 0) {
c[i++] = Serial.read();
//lcd.write();
//data += Serial.read();
}
// Efface le reste
for(; i < 33; i++){
c[i] = ' ';
}
/// Imprimer la première ligne
for( i = 0; i < 16; i++){
lcd.write(c[i]);
}
// Imprimer la deuxième ligne
lcd.setCursor(0,1);
for( i = 16; i < 33; i++){
lcd.write(byte(c[i]));
}
}
delay(100);
}
bref je nage dans le potage.
un petit cours, une info, un lien sur de l'existant sur le sujet ???
Merci
