Egyedi karakter, karakteres LCD-n

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
75roll
DrótVégénSzéndarab
Hozzászólások: 15
Csatlakozott: 2013. február 11. hétfő, 18:19

Egyedi karakter, karakteres LCD-n

Hozzászólás Szerző: 75roll »

Karakteres LCD-re szerettem volna kiíratni egyedi karatert.
Akkumlátor töltöttséget szeretnék vele megjeleníteni, hat fokozatban. Próbából kiírattam egyszerre mind a hat akku töltöttségi fokozatot, hogy hogyan is fog "festeni", de nem teljesen úgy sikerült mint ahogy elterveztem.
Kezdőként biztosan nem jól írtam a próba kódot.

Kód: Egész kijelölése

#include <LiquidCrystal.h>
LiquidCrystal lcd(4,5,6,7,8,9);

byte a0[8] ={B01110,
             B11111,
             B10001,
             B10001,
             B10001,
             B10001,
             B10001,
             B11111};
             
byte a1[8] ={B01110,
             B11111,
             B10001,
             B10001,
             B10001,
             B10001,
             B11111,
             B11111}; 

byte a2[8] ={B01110,
             B11111,
             B10001,
             B10001,
             B10001,
             B11111,
             B11111,
             B11111};

byte a3[8] ={B01110,
             B11111,
             B10001,
             B10001,
             B11111,
             B11111,
             B11111,
             B11111};

byte a4[8] ={B01110,
             B11111,
             B10001,
             B11111,
             B11111,
             B11111,
             B11111,
             B11111};

byte a5[8] ={B01110,
             B11111,
             B11111,
             B11111,
             B11111,
             B11111,
             B11111,
             B11111};

void setup() {
  
  lcd.createChar(0, a0); 
  lcd.createChar(1, a1);
  lcd.createChar(2, a2);
  lcd.createChar(3, a3);
  lcd.createChar(4, a4);
  lcd.createChar(5, a5);
   
}

void loop(){ 
 
   lcd.setCursor(15, 0);
   lcd.print(a0[8]); 
     
   lcd.setCursor(14, 0);
   lcd.print(a1[8]); 
  
   lcd.setCursor(13, 0);
   lcd.print(a2[8]); 
   
   lcd.setCursor(12, 0);
   lcd.print(a3[8]); 
  
   lcd.setCursor(11, 0);
   lcd.print(a4[8]); 
  
   lcd.setCursor(10, 0);
   lcd.print(a5[8]); 
   
   delay(150);    
     }

Amit szerettem volna:

Hat fokozatban kiíratni egyedi karakterekkel az akku töltöttségi szintjét, és azokat egyszerre megjeleníteni ellenőrzés céljából.
Az első karakter még sikerült is, de a többi fokozat karaktere már mind az utolsó ként definiált karakter képében jelent meg, nem pedig fokozatokban.
a következő bekapcsolásnál tovább romlott a helyzet. A 2. 3. 4. 5. karakter helyett három függőleges vonal jelent meg és ez így történt minden további újra indítás során.

Miért nem jelent meg a többi fokozat karaktere és a következő bekapcsolás után miért lettek a függőleges csíkok?

:oops:
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Egyedi karakter, karakteres LCD-n

Hozzászólás Szerző: Robert »

Nekem az lcd.init() hiányzik a setup() részből....
Zsozsi
Újonc
Újonc
Hozzászólások: 1
Csatlakozott: 2013. május 23. csütörtök, 0:29

Re: Egyedi karakter, karakteres LCD-n

Hozzászólás Szerző: Zsozsi »

A definiált karaktereket az lcd.write(byte( egyedi karakter sorszáma )) hívással kell megjeleníteni a tutorial szerint ... és az lcd.begin()-t ne felejtsük el a setup() részből (ahogy tanult kolegánk Robert is megjegyezte) ...

szerk.: az inicializálás helyes formátuma: lcd.begin(16, 2) ...

én így csinálnám (suttyó verzió, ciklus használata nélkül) :

lcd.setCursor(10, 0) ;
lcd.write(byte(5)) ;
lcd.write(byte(4)) ;
lcd.write(byte(3)) ;
lcd.write(byte(2)) ;
lcd.write(byte(1)) ;
lcd.write(byte(0)) ;
75roll
DrótVégénSzéndarab
Hozzászólások: 15
Csatlakozott: 2013. február 11. hétfő, 18:19

Re: Egyedi karakter, karakteres LCD-n

Hozzászólás Szerző: 75roll »

Valóban le maradt az lcd.init()! :D :oops:

Zsozsi verziója szebb mint az enyém! :wink:


Köszönöm szépen a segítségeteket!
Nincs meg a kellő jogosultságod a hozzászóláshoz csatolt állományok megtekintéséhez.
Válasz küldése