Affichage de tout les caractéres

Bonjour toutou le monde,
C’est l’hiver et j’ai ressorti l’attirail Arduino pour m’occuper…
Mon problème:
j’essaie de faire “tourner” ce bout de programme de démo pour me remettre dans le bain.

//YWROBOT
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,20,4); // set the LCD address to 0x3F for a 20 chars and 4 line display
void setup()
{
lcd.init(); // initialize the lcd
lcd.init();
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(0,0);
lcd.print(“Hello, world!”);
lcd.setCursor(0,1);
lcd.print(“Ywrobot Arduino!”);
lcd.setCursor(0,2);
lcd.print(“Arduino LCM IIC 2004”);
lcd.setCursor(0,3);
lcd.print(“Power By Ec-yuan!”);
}
void loop()
{
}

Je n’arrive pas a comprendre pourquoi je n’ai que la première lettre de chaque ligne qui s’affiche…

Exp;
H
Y
A
P

l’afficheur est un 20 col x 4 lin

Bien à vous pour le coup de main
@++

Salut

Quelle est la librairie LiquidCrystal_I2C utilisée ?

Bonjour hbachetti
Oui c'est la LiquidCrystal_I2C.h qui normalement est fournie avec l'éditeur, après je ne sais pas si il y une version ni où trouver le N° de version....
@++

Dans l'IDE, la gestion des bibliothèque ouvre une fenêtre. tu peux sélectionner une bibliothèque installée et voir son numéro de version

Oui Merci lesept,
Mais ceci ne m'explique pas pourquoi je n'ai que la première lettre de la ligne???
@++

bonsoir
sur pas avoir inversé colonne ligne?

Non, c'était juste pour répondre à ta question. Pour ton problème, je ne vois rien dans ton code qui l'explique.
Sois c'est un problème de connexion, soit de bibliothèque : essaye une autre bibli pour voir...

Sinon, change d'écran : moi j'ai laissé tomber ces écrans pour passer à des TFT ou des OLED, plus faciles à mettre en oeuvre (moins de galère) et plus performants.

j’ utilise une librairie “LiquidCrystal_I2C” provenance :

This library is based on work done by DFROBOT (www.dfrobot.com).

l’ exemple fournit qui fonctionne trés bien est le suivant

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{
	// initialize the LCD
	lcd.begin();

	// Turn on the blacklight and print a message.
	lcd.backlight();
	lcd.print("Hello, world!");
}

void loop()
{
	// Do nothing here...
}

ps : j’ ai un module a base de PCF8574 avec 16 picots males
et deux afficheur avec 16 picots femelles , en general je ne modifie juste 16par 2 ou 20 par 4

PBZOOM:
bonsoir
sur pas avoir inversé colonne ligne?

A priori oui, puisque les lignes s’affiche au bon endroit c’est le reste des caractères qui n’est pas affiché…
L’afficheur fonctionne avec ce programme c’est bizzzard.
#include <Wire.h>
#include <LiquidCrystal_PCF8574.h>

LiquidCrystal_PCF8574 lcd(0x3F); // set the LCD address to 0x27 for a 16 chars and 2 line display

int show;

void setup()
{
int error;

Serial.begin(115200);
Serial.println(“LCD…”);

while (! Serial);

Serial.println(“Dose: check for LCD”);

// See http://playground.arduino.cc/Main/I2cScanner
Wire.begin();
Wire.beginTransmission(0x3F);
error = Wire.endTransmission();
Serial.print("Error: ");
Serial.print(error);

if (error == 0) {
Serial.println(": LCD found.");

} else {
Serial.println(": LCD not found.");
} // if

lcd.begin(20, 4); // initialize the lcd
show = 0;
} // setup()

void loop()
{
if (show == 0) {
lcd.setBacklight(255);
lcd.home(); lcd.clear();
lcd.print(“Hello LCD”);
delay(1000);

lcd.setBacklight(0);
delay(400);
lcd.setBacklight(255);

} else if (show == 1) {
lcd.clear();
lcd.print(“Cursor On”);
lcd.cursor();

} else if (show == 2) {
lcd.clear();
lcd.print(“Cursor Blink”);
lcd.blink();

} else if (show == 3) {
lcd.clear();
lcd.print(“Cursor OFF”);
lcd.noBlink();
lcd.noCursor();

} else if (show == 4) {
lcd.clear();
lcd.print(“Display Off”);
lcd.noDisplay();

} else if (show == 5) {
lcd.clear();
lcd.print(“Display On”);
lcd.display();

} else if (show == 7) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("*** Premiere line.");
lcd.setCursor(0, 1);
lcd.print("*** Deuxieme line.");
lcd.setCursor(0, 2);
lcd.print("*** Troisieme line.");
lcd.setCursor(0, 3);
lcd.print("*** Quatrieme line.");

} else if (show == 8) {
lcd.scrollDisplayLeft();
} else if (show == 9) {
lcd.scrollDisplayLeft();
} else if (show == 10) {
lcd.scrollDisplayLeft();
} else if (show == 11) {
lcd.scrollDisplayLeft();
} // if

delay(1000);
show = (show + 1) % 12;
}

Pour les écrans TFT ou OLED je n’ai pas asse de pratique pour maitriser ces écrans de plus j’en ai deux qui traine dans une boite.

A vair dire l’Arduino est un passe temps pour l’hiver, comme je ne peut pas faire voler mon drone…
@++

J’ai modifier le code comme ceci est ça fonction avec mon afficheur
#include <Wire.h>
#include <LiquidCrystal_PCF8574.h>
LiquidCrystal_PCF8574 lcd(0x3F); // set the LCD address to 0x27 for a 16 chars and 2 line display
void setup()
{
// Print a message to the LCD.
lcd.setBacklight(255);
lcd.begin(20, 4); // initialize the lcd
lcd.setCursor(0, 0);
lcd.print(“Hello, world!”);
lcd.cursor();
lcd.setCursor(0, 1);
lcd.print(“Ywrobot Arduino!”);
lcd.cursor();
lcd.setCursor(0, 2);
lcd.print(“Arduino LCM IIC 2004”);
lcd.cursor();
lcd.setCursor(0, 3);
lcd.print(“Power By Ec-yuan!”);
lcd.cursor();
lcd.blink();
}
void loop()
{
}

Je vais pouvoir trouver trouver un code pour le détecteur DHT11 et la pression atmosphérique…
@++

Peux-tu éditer tes messages précédents pour mettre tes codes entre les balises qui sont faites pour ça, balises CODE, car sans elles c'est vite illisible et certains caractères sont changés ? Merci

En effet, ce serait excusable si le nombre de posts était égal à 1, mais là non.

Sinon, pour en revenir à nos moutons, je remarque que dans le code initial, une méthode init() est utilisée, alors que dans les codes suivants c'est la fonction begin() qui est employée.
Cela peut faire la différence.
D'autre part toutes les librairies ne fournissent pas de méthode init().
Pour savoir ce que fait exactement la méthode init() de la librairie du premier post, il faudrait savoir d'où elle provient.

Oui c'est la LiquidCrystal_I2C.h qui normalement est fournie avec l'éditeur, après je ne sais pas si il y une version ni où trouver le N° de version....
j' utilise une librairie "LiquidCrystal_I2C" provenance :
This library is based on work done by DFROBOT (www.dfrobot.com).

Pas très utile pour connaître la provenance de la librairie :confused:
Il vaudrait mieux fournir un lien, que tu trouveras probablement dans l'historique de ton navigateur.

Refais un essai de ton premier code en remplaçant init() par begin().
En fonction de la librairie begin() à besoin de deux paramètres ... ou pas.

@+

bonjour
et merci hbachetti

1°) j’ n’ ai pas de lien , trop vieux et je nettoie fréquemment mon historique.
“This library is based on work done by DFROBOT (www.dfrobot.com).” est une phrase que j’ ai copié collé dans le fichier read me de la librairie dans mon arduino ide 1.8…

je viens de télécharger (en .zip) sur ==>

http://www.archiduino.com/liquidcrystal_i2c-h-library-arduino-ide-1-6-x/

et la surprise ce n’ est toujours pas la même…
dans la librairie que j’ utilise actuellement et don bien sur je ne retrouve pas le lien
,dans le fichier LiquidCrystal_I2C.h on peut lire :

/**
 * This is the driver for the Liquid Crystal LCD displays that use the I2C bus.
 *
 * After creating an instance of this class, first call begin() before anything else.
 * The backlight is on by default, since that is the most likely operating mode in
 * most cases.
 */

et efectivement erreur de compilation…

De plus je viens de m 'apercevoir , dans ce meme fichier
que #include <Wire.h> N ’ EST PAS PRESENT.
je doit systématiquement le rajouter au debut de més sketch…

d’ ou réflextion deplacé de ma part dans ce post

comme quoi des fois on crois savoir…

Hélas, qu'il s'agisse de LiquidCrystal ou de LiquidCrystal_I2C il y a une ribambelle de bibliothèques et c'est le bazar.

As-tu un "adaptateur" I2C soudé à ton écran pour utiliser la bibliothèque ? Sinon essaie de remplacer "0x3F" par "0x27"
Bonne soirée

Dans les posts #8 #9 Loulou17700 soumet deux exemples de code qui fonctionnent avec l'adresse 0x3F.
Donc changer d'adresse n'est pas la solution.

@+

Bonjour tout le monde, je rentre de weekend et je voie que j'ai beaucoup de messages à lires je vous en remercie.
Il semble que la dernière librairie que j'utilise me donne satisfaction je vais la garder pour mon petit montage thermo humide pression atmo…
Ce qui est bizard c'est le nombre de librairie disponible pour un afficheur générique
Pour info: LCD pour Arduino 20x4 Basé sur le Contrôleur HD44780 plus Serial Port Module pour ArduinoLCD1602 Display que j'ai soudé sur l'afficheur …
@ Lesept Pour les écrans OLED j'en ai trouvé dans mes boites j'ai trouvé également des tutos pour voir ce que ça donne le problème c'est qu'il tout petit la taille d'un timbre poste donc il faut une loupe, si non la connectique est simple 4 fils, j'en ai un autre estampillé Arduino plus grand avec un lecteur sd intégré réf Arduino Écran LCD 1,77'' A000096 je vais essayer de trouver des exemples…
@++