J'ai fait l'acquisition d'une carte uno avec laquelle Lextronic m'a gentillement offert un écran LCD 40*4.
J'ai donc suivi le tutoriel "helloworld" pour essayer cet écran.
Déja concernant les pins de l'écran, il y en a 16 dont une pin 6:N/C et les pins 15 et 16 : E1 et E2, je suppose que Les pins 15 et 16 correspondent à Enable mais pourquoi il y en à deux? Et que veux dire N/C ?
Ensuite à l'exécution du programme j'ai quelque problème :
Sur la 1ere ligne j'ai bien le texte "hello, world!" qui s'affiche,
Sur la 2ème j'ai bien le temps depuis le dernier reset de l'arduino,
Mais
Sur la 3ème j'ai une série de chiffres (souvent 3), des symboles et quelques lettres qui s'affichent défois de manière bien plus contrasté que les autres lignes et défois avec le même contraste. J'ai un potentiomètre de 100k pour le contraste.
Sur la 4ème j'ai peut être rien, je ne vois pas bien!
N/C signifie "non connecté", pour les 16 broches les pin 15 et 16 doivent être le retroéclairage je pense.
Si les deux premiers ligne s'affiche correctement c'est surement que la librairie liquidcrystal n'est pas correctement paramétré ou alors quelle bug sur ce type d'écran.
A tu bien mis lcd.begin(40, 4); ?
D'accord c'est bien ce que je pensais pour la broche 6 il n'y a rien, il n'en reste donc plus que 15 fonctionnelles sur les 16.
Dans le cas d'un écran rétroéclairé il y a 16 broches dont deux A et K servent à l'eclairage.
Or moi les deux dernières sont E1 et E2 dont une des deux étant Enable.
L'ecran en question est un mdl(s) 40466, et en cherchant les caractéristiques je confirme qu'il n'y a pas de rétroéclairage
Oui j'ai bien mis lcd.begin(40, 4); cela n'a rien changé...
Mais dans le programme on ne gère que les 2 premières lignes, celles qui fonctionnent!
Ce qui me dérange aussi c'est la différence de contraste, je n'arrive presque pas à lire les lignes venant du programme, mais pour la 3ème ligne qui bug, le contraste passe d'un contraste indentique, à un contraste beaucoup plus foncé et lisible!
Est ce que c'est un lcd compatible avec le jeux d'instructions "Hitachi HD44780" standard ?
Lextronic font beaucoup de lcd graphiques et de lcd programmable, qu'il est des lcd avec un jeu d'instructions et un câblage non standard ne m'étonnerai même pas.
j'avais jamais vu des lcd 4x40 architecturé comme cela.
En gros les broches 15 et 16 sont là pour sélectionné la série de lignes à utiliser, si E1 est à LOW c'est sur les 2 premières lignes qu'on écrit, si c'est E2 c'est sur les 2 dernières ...
La broche en N/C est justement le EN (enable) sur un afficheur classique, donc en gros il faut géré soi même la sélection des lignes ou faire deux object liquidcrystal dont toute les broches sont commune sauf E1/E2.
Exemple:
#include <LiquidCrystal.h>
LiquidCrystal lcd12(12, 10, 5, 4, 3, 2); // LiquidCrystal(rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd34(12, 11, 5, 4, 3, 2);
// câblage identique à celui d'un afficheur classique excepté que E1 et E2 sont sur les broches 10 et 11 (deux afficheurs 2x40 au lieu d'un 4x40)
// http://arduino.cc/en/uploads/Tutorial/LCD_schem.png
void setup()
{
lcd12.begin(40, 2);
lcd34.begin(40, 2);
lcd12.print("hello, world!");
lcd34.print("hello, world!");
}
void loop() {
}
Merci beaucoup,
effectivement, apparamment, ce LCD se gère comme 2 LCD 40*2, donc dans le programme il faut ecrire les fonctions en doubles.
J'ai également modifier dans la boucle :
#include <LiquidCrystal.h>
LiquidCrystal lcd12(12, 10, 5, 4, 3, 2); // LiquidCrystal(rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd34(12, 11, 5, 4, 3, 2);
void setup() {
// set up the LCD's number of columns and rows:
lcd12.begin(40, 2);
lcd34.begin(40, 2);
// Print a message to the LCD.
lcd12.print("hello, world!");
lcd34.print("hello, world!");
}
void loop() {
// set the cursor to column 0, line 1
lcd12.setCursor(0, 1);
lcd34.setCursor(0, 1);
// print the number of seconds since reset:
lcd12.print(millis()/1000);
lcd34.print(millis()/1000);
De plus je n'ai plus de différence de contraste, mais même avec un potentiomètre de 100k je ne vois prèsque rien est ce normal?
Merci beaucoup de votre aide
Ce LCD était offert avec un arduino, sûrement pour une bonne raison (mauvaise vente)!
Pour mon problème de contraste j'ai essayé avec un ptoentiomètre de 220k, on y voit toujours rien et pas plus qu'avec un de 100k , je pense que le pbl vient d'ailleur.
J'utilise du fil de fer de bricolage de jardin, avec une gaine verte, que l'on trouve dans toute les grandes surfaces! Est ce que cela peut poser des problèmes?
De plus quand j'avais les chiffres et symboles dans la deuxième partie de l'écran, là le contraste etait bon!
Le fil de fer de jardin est destiné avant tout... au jardin!
Les câbles utilisés en électricité ou en électronique ont des âmes en cuivre, qui est réputé pour sa conductivité.
Je te conseille donc d’investir dans du fil monobrin AWG22, pas cher au mètre.
schizophrene:
Le fil de fer de jardin est destiné avant tout... au jardin!
Les câbles utilisés en électricité ou en électronique ont des âmes en cuivre, qui est réputé pour sa conductivité.
Je te conseille donc d’investir dans du fil monobrin AWG22, pas cher au mètre.
Pas besoin de sortir l'artillerie lourde, un simple morceau de câble de téléphone, à casto ou brico dépot c'est même pas 1€ le métre et il y a 6 fils à l'intérieur ^^
euh, normallement, le câble "ivoire", c'est pas 8 fils ? sinon, va voir sur les chantiers ou chez ton électricien : il aura probablement des chutes de quelques dizaines de centimètres à te donner (à moins qu'il garde tout pour revendre "en cuivre")
J'ai pris du fil de téléphone (avec 8 brins en cuivre) mais cela ne change rien a mon problème de contraste, je n'y vois rien!
Par contre quand l'ecran affiche des caractères non voulu (fil débranché par exemple) le contraste est bon!
De plus ce fil est très fin (plus que mon fil de bricolage) et du coup peu pratique.
hypothèse absurde : un "rafraichissement" trop rapide de l'écran.
Du style : affichage / effaçage continu par une boucle. Déjà vu ça (sur un écran CRT, pour info) : l'affichage se faisait correctement, mais la mise à jour était trop fréquente ; sachant que la mise à jour commencait par effacer l'ecran, l'écran restait désespérement vide pour des yeux humains.
Et comme ton loop consiste justement à afficher le temps depuis le dernier reset... Mets un délay de quelques ms après ton dernier lcdxx.print
PS : et cela expliquerait aussi pourquoi les "caractères non voulus" ont un meilleur contraste : ils ne sont presque JAMAIS mis à jour
taddot:
hypothèse absurde : un "rafraichissement" trop rapide de l'écran.
Du style : affichage / effaçage continu par une boucle. Déjà vu ça (sur un écran CRT, pour info) : l'affichage se faisait correctement, mais la mise à jour était trop fréquente ; sachant que la mise à jour commencait par effacer l'ecran, l'écran restait désespérement vide pour des yeux humains.
Et comme ton loop consiste justement à afficher le temps depuis le dernier reset... Mets un délay de quelques ms après ton dernier lcdxx.print
PS : et cela expliquerait aussi pourquoi les "caractères non voulus" ont un meilleur contraste : ils ne sont presque JAMAIS mis à jour
Hypothèse plus que probable, sauf si il utilise mon code d'exemple ou tout ce trouve dans le setup() ...
Le mieux serait de mettre un delay(1000) pour tester.
Sinon autre hypothèse, lextronic n'est pas connu pour faire des cadeaux sans raison, peut être que ce lcd ne se vendait pas justement à cause de ce genre d'ennuis ?
effectivement, un delay(1000) dans la loop t'aidera, et en général, la broche contraste se connecte au "wipper" d'un potard de 10K, les deux bornes externes de ce potar étant reliées à GND et Vcc. c'est pas marqué partout, mais c'est comme ça que j'ai résolu mon pb avec un 16x2... le potar entre contraste et GND uniquement n'est pas très précis pour le réglage...
Le code exemple que j'utilise est celui-ci
"Library originally added 18 Apr 2008
by David A. Mellis
library modified 5 Jul 2009
by Limor Fried (http://www.ladyada.net)
example added 9 Jul 2009
by Tom Igoe
modified 22 Nov 2010
by Tom Igoe"
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd12(12, 10, 5, 4, 3, 2); // LiquidCrystal(rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd34(12, 11, 5, 4, 3, 2);
void setup() {
// set up the LCD's number of columns and rows:
lcd12.begin(40, 2);
lcd34.begin(40, 2);
// Print a message to the LCD.
lcd12.print("hello, world!");
lcd34.print("hello, world!");
}
void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd12.setCursor(0, 1);
lcd34.setCursor(0, 1);
// print the number of seconds since reset:
lcd12.print(millis()/1000);
lcd34.print(millis()/1000);
delay(1000);
}
Le fait de rajouter le delay ne me permet pas de mieux voir sur mon ecran, je dois presque me mettre parallele à l'ecran pour mieux voir!
Par contre, je n'ai plus de différence de contraste entre le texte attendu et les caractères non voulu quand je débranche un Enable.
Comme le conseil Super_Cinci j'ai bien potentiomètre branché entre GND et Vcc et la borne du milieu sur le contraste. C'est un potentiometre de 220K et je dois me mettre à fond pour voir un soupçon mieux que rien!
D'ou cela peut venir, essayer de mettre un potard de 10k?
Avec le potentiomètre 10K tourné à fond d'un coté, je vois rien en vue du dessus et j'arrive presque à apercevoir le texte si je me penche bien (regard à 45°).
Si je tourne le potentiomètre de l'autre coté je vois plus rien du tout.
J'ai le même contraste en branchant V0 directement sur Gnd. (au lieu du potentiomètre).
C'est pas un problème de rafraichissement car je fais juste print HelloWorld dans setup() et rien dans loop().
C'est pas un problème de cables non plus.
J'utilise LiquidCrystal.