system
June 18, 2012, 3:46pm
1
Bonjour,
Je viens d’acquérir l'écran LCD 20x4 de Sparkfun (ref LCD-09568). Il fonctionne bien, mais je ne peux pas adresser la ligne 3 et 4 directement
Voici l'exemple de base que j'ai un peu modifié
#include <SoftwareSerial.h>
#include <serLCD.h>
// Set pin to the LCD's rxPin
int pin = 2;
char Buf[10];
serLCD lcd(pin);
void setup()
{
lcd.clear();
for (int i=1; i<=4; i++)
{
lcd.selectLine(i);
sprintf(Buf, "Ligne %i", i);
lcd.print(Buf);
}
}
void loop() {}
M'affiche
Ligne 1
Ligne 2Ligne 3Ligne 4Ligne
4
J'ai bien téléchargé la lib ici
http://www.arduino.cc/playground/Learning/SparkFunSerLCD
Dans le code de SerLCD.cpp il y a
/* Initialize.. not used trying to implement all display sizes
void serLCD::init(int pin, int rows, int cols){
pinMode(pin, OUTPUT);
delay(4);
begin(9600);
if(cols == LCD_20CHAR){
_numchars = LCD_20CHAR;
specialCommand(LCD_SET20CHAR);
}else{ // default to 16 char display
_numchars = LCD_16CHAR;
specialCommand(LCD_SET16CHAR);
}
Avec marqué Not Used pour la fonction init ???
Je ne comprend pas comment il est alors sensé détecter que c'est un écran 20x4 et non pas 16x2 ?
sype
June 18, 2012, 4:24pm
2
Je ne connais pas trop le SerLCD mais as-tu essayé d'utiliser la librairie standard LiquidCrystal ?
Ou du moins est-ce possible ?
system
June 18, 2012, 4:35pm
3
C'est un écran série, il n'utilise que 3 fils (c'est ça qui est bien )
(5v GND et Rx)
Donc je ne pense pas qu'on puisse utiliser la librairie LiquidCrystal
sype
June 18, 2012, 5:55pm
4
En tout cas tu as les broches nécessaires RW , RS , enable et B4-B7
system
June 18, 2012, 7:23pm
5
Je ne sais pas pourquoi la fonction init() est en commentaire mais a priori c'est pourtant celle-ci qu'il faut utiliser.
En regardant plus en détail il y a plein de limitation à un écran de 16x2
par exemple :
void serLCD::setCursor(int row, int col){
int row_offsets[2][4] = {
{ 0x00, 0x40, 0x10, 0x50 },
{ 0x00, 0x40, 0x14, 0x54 }
};
if((row > 0 && row < 3) && (col > 0 && col < 17)){
command(LCD_SETDDRAMADDR | ((col - 1) + row_offsets[_rowoffset][(row - 1)]));
}
}
row ne peut valoir que 1 ou 2 et col uniquement entre 1 t 16
En gros, cette lib n'est pas terminée, probablement par ce que le gars qui l'a écrit n'avait que le modele 16x2 et n'a pas pu tester le modèle 4x20
Il va falloir que tu t'y colles et ensuite tu publie ta version améliorée.
EDIT : Ici, ils listent plein de lib compatibles avec l'écran série de Sparkfun. Toi trouver bonheur ? Arduino Playground - LCD
system
June 19, 2012, 1:33pm
6
Résolu.
Parfait, merci à vous.
XD