Karakteres LCD BigFont

Hogyha sikeresen O/PLED illetve hagyományos alfanumerikus - esetleg tán grafikus kijelzővel gyűlik meg a baja valakinek:)
berkesandor
DrótVégénSzéndarab
Hozzászólások: 30
Csatlakozott: 2016. június 27. hétfő, 16:29

Karakteres LCD BigFont

HozzászólásSzerző: berkesandor » 2017. február 28. kedd, 20:37

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?

Avatar
Robert
Elektronbűvölő
Hozzászólások: 9912
Csatlakozott: 2005. december 9. péntek, 7:00
Tartózkodási hely: Budapest
Kapcsolat:

Re: Karakteres LCD BigFont

HozzászólásSzerző: Robert » 2017. március 1. szerda, 12:35

Kód? Verzió? Eljáráskönyvtár linkje?
http://www.tavir.hu - a gazda :)

berkesandor
DrótVégénSzéndarab
Hozzászólások: 30
Csatlakozott: 2016. június 27. hétfő, 16:29

Re: Karakteres LCD BigFont

HozzászólásSzerző: berkesandor » 2017. március 1. szerda, 13:12

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.

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);

}

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3232
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: Karakteres LCD BigFont

HozzászólásSzerző: kapu48 » 2017. március 1. szerda, 19:38

É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!

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);
  }
// ...

}

berkesandor
DrótVégénSzéndarab
Hozzászólások: 30
Csatlakozott: 2016. június 27. hétfő, 16:29

Re: Karakteres LCD BigFont

HozzászólásSzerző: berkesandor » 2017. március 2. csütörtök, 6:21

Kösz a választ!

Őszintén megmondom, ezt nem igazán értem. :oops:
Ha kicsit elmagyaráznád, hálás lennék.

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3232
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: Karakteres LCD BigFont

HozzászólásSzerző: kapu48 » 2017. március 2. csütörtök, 15:08

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.

berkesandor
DrótVégénSzéndarab
Hozzászólások: 30
Csatlakozott: 2016. június 27. hétfő, 16:29

Re: Karakteres LCD BigFont

HozzászólásSzerző: berkesandor » 2017. március 2. csütörtök, 15:17

Én megvizsgáltam melyik helyiértéken, milyen szám van, és azt "szövegként" írattam ki.

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

if (sz == 1)
  {bigCrystal.printBig("1",szo,szs);}


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. :oops:

Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3232
Csatlakozott: 2008. augusztus 29. péntek, 6:00
Tartózkodási hely: Újkígyós

Re: Karakteres LCD BigFont

HozzászólásSzerző: kapu48 » 2017. március 2. csütörtök, 15:25

É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


Vissza: “LCD kezelése”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 0 vendég