me revoilà avec un autre problème, je m'explique : j'ai un écran LCD piloté via un port série dont je me sers pour afficher la date et une température.
pour la mesure de température et son affichage, aucun souci ; par contre impossible d'afficher le caractère "°"
j'ai bien trouvé des docs concernant l'écran :
et un PDF en pièce jointe
mais impossible d'afficher ce caractère, j'ai essayé :
LCD.print("°")
LCD.write(11011111) (voir tableau en dernière page du PDF)
et nombre d'autres combinaisons au hasard (dont le code ascii de ce caractère, à savoir 0176, et aussi 176), mais rien n'y fait, je ne sais pas si certains ont déjà eu ce genre de problème, mais je me vois assez mal essayer les 16² = 256 combinaisons...
Au pire pour les 256 combinaisons, tu peux faire une boucle en affichant 16 caractères par ligne que tu changes toutes les deux secondes, t'auras fait tes 256 combinaisons en moins de 3 min
Exactement, comme "0x" définit un hex. Mais y'a juste un truc qui me turlupine : que vient faire la librairie LCD si c'est ton écran est en liaison série ??
En général le caractère ° (degré) n'existe pas dans le jeu de caractères, il faut le programmer dans les quelques caractères spéciaux disponibles
icare
bon, ça marche avec "LCD.write(0b11011111)", merci B@tto
B@tto:
[...] y'a juste un truc qui me turlupine : que vient faire la librairie LCD si c'est ton écran est en liaison série ??
bah à vrai dire je l'ai pas dans les librairies incluses au début de mon programme, par contre je me suis basé sur ce code :
#include <SoftwareSerial.h>
#define txPin 2
SoftwareSerial LCD = SoftwareSerial(0, txPin);
// since the LCD does not send data back to the Arduino, we should only define the txPin
const int LCDdelay=10; // conservative, 2 actually works
// wbp: goto with row & column
void lcdPosition(int row, int col) {
LCD.write(0xFE); //command flag
LCD.write((col + row*64 + 128)); //position
delay(LCDdelay);
}
void clearLCD(){
LCD.write(0xFE); //command flag
LCD.write(0x01); //clear command.
delay(LCDdelay);
}
void backlightOn() { //turns on the backlight
LCD.write(0x7C); //command flag for backlight stuff
LCD.write(157); //light level.
delay(LCDdelay);
}
void backlightOff(){ //turns off the backlight
LCD.write(0x7C); //command flag for backlight stuff
LCD.write(128); //light level for off.
delay(LCDdelay);
}
void serCommand(){ //a general function to call the command flag for issuing all other commands
LCD.write(0xFE);
}
void setup()
{
pinMode(txPin, OUTPUT);
LCD.begin(9600);
clearLCD();
lcdPosition(0,0);
LCD.print("Hello world!");
}
void loop()
{
}
(fourni par sparkfun si je me souviens bien...)
du coup si j'ai tout bien compris on écrit "LCD.print" au lieu de "serial.print" grâce à la 5ème ligne (en comptant les lignes vides)
@icare : là il existait, voir le PDF que j'ai joint au premier message
merci beaucoup à tous en tout cas pour vos réponses express
Oki oui c'est bien ce que je pensais, en fait ils se servent de la librairie softserial qui permet d'émuler un port série sur n'importe quel port digital, et la au lieu de lui donné un nom en relation genre serial1, serial 2 ... ils l'on tout simplement appelé LCD