Karakteres LCD BigFont
-
- DrótVégénSzéndarab
- Hozzászólások: 30
- Csatlakozott: 2016. június 27. hétfő, 16:29
Karakteres LCD BigFont
16x2 -es karakteres LCD-re szeretnék nagy karakterekkel változót kiirtani.
BigCrystal.h -t próbáltam, de változót nem ír ki.
Van rá valami trükk, hogy kiírja?
BigCrystal.h -t próbáltam, de változót nem ír ki.
Van rá valami trükk, hogy kiírja?
-
- DrótVégénSzéndarab
- Hozzászólások: 30
- Csatlakozott: 2016. június 27. hétfő, 16:29
Re: Karakteres LCD BigFont
Közben aztán sikerült megoldanom, kissé favágó módom.
Ha valakinek van jobb megoldása, és megosztja, azt szívesen veszem.
https://github.com/gregington/BigCrystal
A teszt kedvéért most egy számláló fut nagy karakterekkel.
Ha valakinek van jobb megoldása, és megosztja, azt szívesen veszem.
https://github.com/gregington/BigCrystal
A teszt kedvéért most egy számláló fut nagy karakterekkel.
Kód: Egész kijelölése
#include <BigCrystal.h>
#include <LiquidCrystal.h>
// Set up according to your LCD pins
LiquidCrystal lcd (4, 5, 6, 7, 8, 3);
BigCrystal bigCrystal(&lcd);
byte sz; //100-as helyiérték
byte t; //10-es
byte e; //1-es
byte szo; // százas oszlop
byte szs; // százas sor
byte to; // tizes oszlop
byte ts; // tizes sor
byte eo; // egyes sor
byte es; // egyes sor
int kijelzo = 0 ; // kiiratandó szám 1-999
void setup() {
bigCrystal.begin(16, 2);
}
void loop() {
szo = 0;
szs = 0;
to = 4;
ts = 0;
eo = 8;
es = 0;
sz = kijelzo /100;
t = ( kijelzo - (sz *100) - (kijelzo % 10) )/ 10;
e = kijelzo % 10 ;
if (sz == 0) //----------------------------------- 100
{bigCrystal.printBig(" ",szo,szs);}
if (sz == 1)
{bigCrystal.printBig("1",szo,szs);}
if (sz == 2)
{bigCrystal.printBig("2",szo,szs);}
if (sz == 3)
{bigCrystal.printBig("3",szo,szs);}
if (sz == 4)
{bigCrystal.printBig("4",szo,szs);}
if (sz == 5)
{bigCrystal.printBig("5",szo,szs);}
if (sz == 6)
{bigCrystal.printBig("6",szo,szs);}
if (sz == 7)
{bigCrystal.printBig("7",szo,szs);}
if (sz == 8)
{bigCrystal.printBig("8",szo,szs);}
if (sz == 9)
{bigCrystal.printBig("9",to,ts);}
if (t == 0) //----------------------------------- 10
{bigCrystal.printBig("0",to,ts);}
if (t == 1)
{bigCrystal.printBig("1",to,ts);}
if (t == 2)
{bigCrystal.printBig("2",to,ts);}
if (t == 3)
{bigCrystal.printBig("3",to,ts);}
if (t == 4)
{bigCrystal.printBig("4",to,ts);}
if (t == 5)
{bigCrystal.printBig("5",to,ts);}
if (t == 6)
{bigCrystal.printBig("6",to,ts);}
if (t == 7)
{bigCrystal.printBig("7",to,ts);}
if (t == 8)
{bigCrystal.printBig("8",to,ts);}
if (t == 9)
{bigCrystal.printBig("9",to,ts);}
if (e == 0) //----------------------------------- 1
{bigCrystal.printBig("0",eo,es);}
if (e == 1)
{bigCrystal.printBig("1",eo,es);}
if (e == 2)
{bigCrystal.printBig("2",eo,es);}
if (e == 3)
{bigCrystal.printBig("3",eo,es);}
if (e == 4)
{bigCrystal.printBig("4",eo,es);}
if (e == 5)
{bigCrystal.printBig("5",eo,es);}
if (e == 6)
{bigCrystal.printBig("6",eo,es);}
if (e == 7)
{bigCrystal.printBig("7",eo,es);}
if (e == 8)
{bigCrystal.printBig("8",eo,es);}
if (e == 9)
{bigCrystal.printBig("9",eo,es);}
kijelzo ++;
if (kijelzo == 999)
{kijelzo = 1;}
delay (500);
}
Re: Karakteres LCD BigFont
Én most nem foglalkozom a BigFont problémával.
Csak azt mutatom meg, hogyan váltsál 0-1 értéket, ASCII karakter kódra.
Ezzel kihagyhatod az if müveletek sorozatát!
Csak azt mutatom meg, hogyan váltsál 0-1 értéket, ASCII karakter kódra.
Ezzel kihagyhatod az if müveletek sorozatát!
Kód: Egész kijelölése
//#include <BigCrystal.h>
#include <LiquidCrystal.h>
#define ASCII_0 48 // 0 ASCII kodja
// Set up according to your LCD pins
LiquidCrystal lcd (4, 5, 6, 7, 8, 3);
//BigCrystal bigCrystal(&lcd);
char sz; //100-as helyiérték
char t; //10-es
char e; //1-es
byte szo; // százas oszlop
byte szs; // százas sor
byte to; // tizes oszlop
byte ts; // tizes sor
byte eo; // egyes sor
byte es; // egyes sor
int kijelzo = 0 ; // kiiratandó szám 1-999
void setup() {
Serial.begin(9600);
}
void loop() {
szo = 0;
szs = 0;
to = 4;
ts = 0;
eo = 8;
es = 0;
kijelzo = 345 ; // kiiratandó szám 1-999
sz = kijelzo /100;
t = ( kijelzo - (sz *100) - (kijelzo % 10) )/ 10;
e = kijelzo % 10 ;
if (sz == 0) //----------------------------------- 100
{//bigCrystal.printBig(" ",szo,szs);
Serial.print(" ");
}
else
{
sz += ASCII_0; // váltás ASCII karakterre
//bigCrystal.printBig(sz,szo,szs);
Serial.println(sz);
}
// ...
}
-
- DrótVégénSzéndarab
- Hozzászólások: 30
- Csatlakozott: 2016. június 27. hétfő, 16:29
Re: Karakteres LCD BigFont
Kösz a választ!
Őszintén megmondom, ezt nem igazán értem.
Ha kicsit elmagyaráznád, hálás lennék.
Őszintén megmondom, ezt nem igazán értem.
Ha kicsit elmagyaráznád, hálás lennék.
Re: Karakteres LCD BigFont
Van 1 nemzetközileg elfogadót kód rendszer:
ASCII Code
http://www.ascii-code.com
Mikor szöveget íratsz ki, akkor ezt használja a program.
E szerint a 0 értékhez a 48-as kód tartozik.
Ezért ’0’=sz=0+48, „1”=sz=1+48, … számolással megkapod a ki írandó karakter kódját.
sz=1; …
sz=sz+48 átalakítás minden értékre igaz 0-9-ig.
Te ezt az átalakítást 30db if() vizsgálattal oldottad meg?
Én csak 3 összeadással tenném ezt.
ASCII Code
http://www.ascii-code.com
Mikor szöveget íratsz ki, akkor ezt használja a program.
E szerint a 0 értékhez a 48-as kód tartozik.
Ezért ’0’=sz=0+48, „1”=sz=1+48, … számolással megkapod a ki írandó karakter kódját.
sz=1; …
sz=sz+48 átalakítás minden értékre igaz 0-9-ig.
Te ezt az átalakítást 30db if() vizsgálattal oldottad meg?
Én csak 3 összeadással tenném ezt.
-
- DrótVégénSzéndarab
- Hozzászólások: 30
- Csatlakozott: 2016. június 27. hétfő, 16:29
Re: Karakteres LCD BigFont
Én megvizsgáltam melyik helyiértéken, milyen szám van, és azt "szövegként" írattam ki.
Ha a százas 1, akkor írjon ki egy egyest, x,y pozícióba.
A bigCrystal.print parancs után, a "kiíratandó mező" nem lehet változó, csak konkrét karakter.
Remélem, nem írtam nagy baromságot.
Kód: Egész kijelölése
if (sz == 1)
{bigCrystal.printBig("1",szo,szs);}
A bigCrystal.print parancs után, a "kiíratandó mező" nem lehet változó, csak konkrét karakter.
Remélem, nem írtam nagy baromságot.
Re: Karakteres LCD BigFont
Éppen ezért definiáltam a változókat char-ként, az elején:
Kód: Egész kijelölése
char sz; //100-as helyiérték
char t; //10-es
char e; //1-es