vineri, 20 iulie 2018

Ceas reglabil pe afisaj LCD12864 (ST7920)

   Avand de gand sa folosesc afisajul monocrom cu rezolutie de 128x64 cu driver ST7920 (l-am mai prezentat pe blog - http://nicuflorica.blogspot.com/search?q=st7920) la un sistem gen cronostat pe mai multe zone, am zis ca intai sa fac partea de ceas cu reglaj al datei si orei.
   M-am folosit de articolele cu afisajul, de articolul Arduino Astronomical Clock (or Arduino Pond Pump Controller!) si ale mele http://nicuflorica.blogspot.com/search?q=andydoz. Schema de conectare este
   iar configurarea in program (sketch) este
(se foloseste libraria u8glib)
   Am adaptat sketch-ul gasit in articolul Analog LCD clock - Arduino LCD combinandu-l cu cel al lui Andy, initial avand prezentarea asta
   Deoarece libraria RTClib nu are posibilitatea de a regla si ziua din luna (se poate face altfel, cum e prezentat in articolul Tronixstuff – Using DS1307 and DS3231 Real-time Clock Modules with Arduino, dar nu am timp prea mult de teste, asa ca am renuntat la aceasta facilitate momentan).
   Initial, am pus doar partea de afisare, dupa cum se vede in filmuletele:
programul utilizat fiind u8glib_RTC_clock1.ino, apoi am implementat si partea de reglaj,
     Daca se apasa scurt butonul de epe encoder apare un mesaj cu date despre program
iar daca se apasa lung intra in meniul de reglaj, la modificarea anului
prin rotirea encoderului se modifica valoarea (minimul fiind 2018, vorba lui Andy, asta nu e masina timpului sa trec in anii anteriori) apoi la paasare scurtaa  butonului se ajunge in meniul de reglaj al lunii
apoi se trece in reglajul zilei din luna
   Dupa apasarea butonului se intra in partea de reglaj a ceasului, la ore
si apoi la minute
Apasand din nou butonul se revine la modul de functionare normala, ca ceas
  In filmuletele de mai jos s evedem modul de functionare si reglare
ceas pe afisaj 128x64 cu ST7920 (3)
RTC clock on 128x64 display with ST7290 (3)
   Am constatat ca programul ocupa foarte mult spatiu (97%) si nu o sa imi incapa tot ce aveam de gand, asa ca voiam sa renunt si sa trec pe afisaj alfanumeric LCD2004 (20x4), dar dupa ce am discutat cu Vlad si mi-a zis ca fonturile folosite de mine consuma multa memorie, m-am mai jucat cu fonturile si am redus mult memoria ocupata (67%), dupa cum se vede in filmuletele
ceas pe afisaj 128x64 cu ST7920 (4)
RTC clock on 128x64 display with ST7290 (4)
   Sketch-ul optimizat este u8glib_RTC_clock2.ino.

7 comentarii:

  1. Hi,
    how to connect encoder module KY-040 with pins: - + SW DT CLK?

    RăspundețiȘtergere
    Răspunsuri
    1. you connect encoder as in schematic and sketch, but is not clear for you: + fron encoder to +5V from Arduino, SW to D4, DT to D3, CLK to D2, GND to GND

      Ștergere
    2. pins are defined in lines 14 and 84 sn sketch: https://github.com/tehniq3/u8glib_ST7290_clock/blob/master/u8glib_RTC_clock2.ino

      Ștergere
  2. Acest comentariu a fost eliminat de autor.

    RăspundețiȘtergere
  3. Hi bro, please help me.. I uploaded this code to my arduino boards about 1years ago and everythings was okay.. but now , when I trying to uploading this sketch , in my lcd just show first page, when I click the encoder the board going to restart mode with bellow error:
    _
    long push
    _
    _
    _
    _
    Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.

    Core 1 register dump:
    PC : 0x400d2825 PS : 0x00060230 A0 : 0x800d2849 A1 : 0x3ffb2180
    A2 : 0x3ffc10c0 A3 : 0x3ffc1040 A4 : 0x0000000a A5 : 0x00000001
    A6 : 0x00000008 A7 : 0x00000008 A8 : 0xffffffff A9 : 0x3ffb2130
    A10 : 0x3ffc1190 A11 : 0x3ffc1040 A12 : 0x00000035 A13 : 0x3ffc21cc
    A14 : 0x0000328a A15 : 0x00000004 SAR : 0x0000000a EXCCAUSE: 0x0000001c
    EXCVADDR: 0x0000000f LBEG : 0x400860b8 LEND : 0x400860ce LCOUNT : 0x00000000


    Backtrace: 0x400d2822:0x3ffb2180 0x400d2846:0x3ffb21a0 0x400d2152:0x3ffb21c0 0x400d217b:0x3ffb21e0 0x400d217b:0x3ffb2200 0x400d242f:0x3ffb2220 0x400d25dd:0x3ffb2260 0x400d574c:0x3ffb2290




    ELF file SHA256: c68d6e22213df9d6

    RăspundețiȘtergere
    Răspunsuri
    1. my sketch was compiled and uploaded with Arduino IDE 1.8.xx .. I not used Arduino IDE 2.xx but I think that was reason for errors

      Ștergere