Bretagne
Offline
Jr. Member
Karma: 0
Posts: 80
|
 |
« on: April 17, 2011, 02:06:46 pm » |
Bonjour,
J'ai branché mon lcd 16x4 et je rencontre un décalage sur les ligne 3 et 4.
AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA AAAAAAAAAAAAAA AAAAAAAAAAAAAA
J'ai essayépar curiosité de déclarer un écran 5x4 et j'obtiens bien le bon nombre de caractères mais décalés
AAAAA AAAAA AAAAA AAAAA
Avez vous une idée ? Je vous remercie d'avance.
|
|
|
|
|
Logged
|
|
|
|
|
bussy st george
Offline
Jr. Member
Karma: 0
Posts: 65
|
 |
« Reply #1 on: April 18, 2011, 03:55:28 am » |
Bonjour
Avec le code utilisé pour afficher sa seras mieux. Cordialement
|
|
|
|
|
Logged
|
Windows Certif MCSA. Electronicien. Arduino Mega 2560. 68hc11F1, 68705U3, 68705P3. Perl,Java,ABAP,VB,VBS,VBnet,Php,Asp,Css,C,C++,C#,MySql,SQL.
|
|
|
|
Bretagne
Offline
Jr. Member
Karma: 0
Posts: 80
|
 |
« Reply #2 on: April 18, 2011, 09:09:39 am » |
Le code est celui de l'exemple, setCursor. // include the library code: #include <LiquidCrystal.h>
// these constants won't change. But you can change the size of // your LCD using them: const int numRows = 4; const int numCols = 16;
// initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() { // set up the LCD's number of columns and rows: lcd.begin(numCols,numRows); }
void loop() { // loop from ASCII 'a' to ASCII 'z': for (int thisLetter = 'a'; thisLetter <= 'z'; thisLetter++) { // loop over the columns: for (int thisCol = 0; thisCol < numRows; thisCol++) { // loop over the rows: for (int thisRow = 0; thisRow < numCols; thisRow++) { // set the cursor position: lcd.setCursor(thisRow,thisCol); // print the letter: lcd.print(thisLetter, BYTE); delay(200); } } } }
et le montage est celui ci:  Merci d'avance.
|
|
|
|
|
Logged
|
|
|
|
|
bussy st george
Offline
Jr. Member
Karma: 0
Posts: 65
|
 |
« Reply #3 on: April 18, 2011, 09:43:13 am » |
Re bonjour Moi j'ai u le méme probléme que toi sur un 4x40, et un 4x20, les ligne 3 et 4 etait décaler de 1 car !!!. avec la libréry LiquidCrystal440.hj'ai fait une soustraction de la position lcd.begin(numCols -x,numRows -y); me demande pas commant mes sur le 4x40 sa marche. a teste lcd.setCursor(numCols-thisRow,numRows-thisCol);. ci joint un petit bout de mon code.. // ##################### DEBUT TRAITEMENT TRAJET ###### FINI ###########################
if (affichemenu==2) { displaytrajet(); // caractaire spécial lcd.setCursor(nColumns-39,0); // col 5 row 3 if (theure<10){lcd.print("0");} // HEURE lcd.print(theure); lcd.print(":"); if (tminute<10){lcd.print("0");} // MINUTE lcd.print(tminute); lcd.print(":"); if (tseconde<10){lcd.print("0");} // seconde lcd.print(tseconde); // ---------------------------------------- AFFICHE kilométre lcd.setCursor (nColumns-28,0); // Cursor at column 2 row 4 lcd.print(kilo,2); lcd.print(" Km "); //---------------------------------------- AFFICHE LE PEAGE lcd.setCursor (nColumns-39,1); lcd.print(peage); // PRIX lcd.setCursor(nColumns-32,1); // Cursor at column 10 row 1 lcd.print("Peage"); // --------------------------------------- AFFICHAGE DU PRIX DE L'ESECNCES lcd.setCursor(nColumns-39,2); // Cursor at column 10 row 1 lcd.print(conso_escence); // PRIX lcd.setCursor(nColumns-32,2); // Cursor at column 10 row 1 lcd.print("Carbu. "); lcd.print(litre,2); // affiche le nombre de litre consomer lcd.print(" L"); // AFFICHE du prix total ///************************* conso_escence lcd.setCursor(nColumns-39,3); // Cursor at column 10 row 1 lcd.print(prix_trajet,2); // PRIX lcd.setCursor(nColumns-32,3); // Cursor at column 10 row 1 lcd.print("Total"); ///************************ affiche la moy lcd.setCursor(nColumns-24,3); // Cursor at column 10 row 1 car_valueD=(litre/kilo)*100; // calcule consomation moyenne pour 100km lcd.print("Moy "); lcd.print(car_valueD); lcd.print(" Li "); } // ***************************FIN AFFICHAGE MODE TRAJET*************************** speut aider cordialement
|
|
|
|
« Last Edit: April 18, 2011, 09:45:39 am by powerpack »
|
Logged
|
Windows Certif MCSA. Electronicien. Arduino Mega 2560. 68hc11F1, 68705U3, 68705P3. Perl,Java,ABAP,VB,VBS,VBnet,Php,Asp,Css,C,C++,C#,MySql,SQL.
|
|
|
|
Bretagne
Offline
Jr. Member
Karma: 0
Posts: 80
|
 |
« Reply #4 on: April 18, 2011, 02:16:03 pm » |
Je test ça demain, je te remercie. Je te tiens au courant.
|
|
|
|
|
Logged
|
|
|
|
|
Bretagne
Offline
Jr. Member
Karma: 0
Posts: 80
|
 |
« Reply #5 on: April 18, 2011, 02:18:12 pm » |
Effectivement, ça marche !
lcd.setCursor(-4, 2);
tu as une idée du prk ?
Merci encore !
|
|
|
|
|
Logged
|
|
|
|
|
bussy st george
Offline
Jr. Member
Karma: 0
Posts: 65
|
 |
« Reply #6 on: April 18, 2011, 02:41:01 pm » |
bonsoir
J'ai ma petit idée du probléme la libaryLCD bug sur le départ de la 3 ligne et 4 ligne, aprés observation du code C de la libreryLCD, la seul parade ces de mettre en "-" . Aprés il faut changer du code C dans la libraryLCD. écouter j'ai un trou de 2h00 demain au travail, je regarde sa plus en détail et je te post une solus. Cordialement
|
|
|
|
|
Logged
|
Windows Certif MCSA. Electronicien. Arduino Mega 2560. 68hc11F1, 68705U3, 68705P3. Perl,Java,ABAP,VB,VBS,VBnet,Php,Asp,Css,C,C++,C#,MySql,SQL.
|
|
|
|
bussy st george
Offline
Jr. Member
Karma: 0
Posts: 65
|
 |
« Reply #7 on: April 18, 2011, 03:04:59 pm » |
Re Bonsoir Bon aprés un bref tour sur la toile, le départ de la 3 lignes varie en fonction de frabricants en général 14 et 54 mes cela peut étre dif ché hitachi cela n'est pas les méme que motorola. dou le bout de code a changer dans LiquidCrystal.cpp en fonction de la marche du LCD. Pour toit essais (0x12 ou 0x16) et (0x52 ou 0x56). void LiquidCrystal::setCursor(uint8_t col, uint8_t row) { int row_offsets[] = { 0x00, 0x40, 0x14, 0x54 }; if ( row > _numlines ) { row = _numlines-1; // we count rows starting w/0 } command(LCD_SETDDRAMADDR | (col + row_offsets[row])); }
Cordialement
|
|
|
|
|
Logged
|
Windows Certif MCSA. Electronicien. Arduino Mega 2560. 68hc11F1, 68705U3, 68705P3. Perl,Java,ABAP,VB,VBS,VBnet,Php,Asp,Css,C,C++,C#,MySql,SQL.
|
|
|
|
Bretagne
Offline
Jr. Member
Karma: 0
Posts: 80
|
 |
« Reply #8 on: April 19, 2011, 02:48:02 am » |
Je me suis bricolé un truc équivalent... pas aussi propre que toi void lcd_setCursor(int cols, int rows) { int new_cols = (rows >=2) ? cols-4 : cols; lcd.setCursor(new_cols, rows); }
Merci pour ta modif ^^
|
|
|
|
|
Logged
|
|
|
|
|
Bretagne
Offline
Jr. Member
Karma: 0
Posts: 80
|
 |
« Reply #9 on: April 19, 2011, 03:06:04 am » |
J'ai testé avec ta modification, et essayé les diverses combinaison (0x12 ou 0x16) et (0x52 ou 0x56). Rien a faire, les lignes 3 et 4 sont décalées de 4 caractères.
sniff....
Merci.
|
|
|
|
|
Logged
|
|
|
|
|
|