RCmania.cz - web pro modeláře a modely
http://www.rcmania.cz/

Arduino - Hodiny na LCD TFT displeji, refresh display
http://www.rcmania.cz/viewtopic.php?f=41&t=85081
Stránka 1 z 1

Autor:  vlkodlak [ čtv 22.11.2018 9:39 ]
Předmět příspěvku:  Arduino - Hodiny na LCD TFT displeji, refresh display

Zdravím,
hraju si s TFT displejem a hodinami. Chci zobrazit na displeji aktualní čas, ale v kodu mám nějakou chybu. Čas se zobrazuje, ale čísla se nepřepisují korektě, "mastí" se přez sebe.
Dokážete mi prosím někdo poradit ? Děkuji.

__________________________________________________________________________

#include <Wire.h>
#include "RTClib.h"

#include <Adafruit_GFX.h>
#include <Adafruit_TFTLCD.h>


RTC_DS1307 DS1307;



char datumCas[100];
char cas[120];

#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4

#define cerna 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

void setup() {

tft.reset();
tft.begin(0x9481);
tft.setRotation(1);
tft.setTextSize(4);
tft.drawRect(0,0,480,320,cerna);
// komunikace přes sériovou linku rychlostí 9600 baud
Serial.begin(9600);
// kontrola připojeného obvodu reálného času
if (! DS1307.begin()) {
Serial.println("Hodiny nejsou pripojeny!");
while (1);
}
// kontrolu spuštění obvodu reálného času
if (! DS1307.isrunning()) {
Serial.println("Hodiny nejsou spusteny! Spoustim nyni..");
}
// pro nastavení času v obvodu reálného času použijte jednorázově(!)
// následující příkaz v pořadí rok, měsíc, den, hodina, minuta, vteřina
// příklad: 26.4.2016 9:10:11
//DS1307.adjust(DateTime(2018, 11, 16, 10, 36, 30));


}

void loop()
{

// načtení aktuálního času a data do proměnné datumCas
DateTime datumCas = DS1307.now();
sprintf(cas, "%02d:%02d:%02d", datumCas.hour(),datumCas.minute(),datumCas.second());

tft.setCursor(80,100);
tft.setTextColor(WHITE);
tft.print (cas);
tft.setCursor(180,150);

delay (1000);

}

Autor:  BoŠ [ čtv 22.11.2018 10:37 ]
Předmět příspěvku:  Re: Arduino - Hodiny na LCD TFT displeji, refresh display

vlkodlak píše:
...

Nevím, jak knihovna spolupracuje s driverem displeje, ale obecně platí, že si ovladač driveru uloží požadované znaky do paměti, dle které je potom driver zobrazuje aktivací příslušných segmentů na displeji. V textovém režimu je vcelku jasné, že znaky přepisuje komplet, to znamená, že celou matici přepíše. V grafickém režimu se ale může stát, že aktivuje pouze segmenty nutné pro zobrazení nového znaku, ale nepřepisuje všechny segmenty v dané matici. Neboli nakonec rozsvítí takřka vše. Takže bych hledal problém v nastavení režimu displeje. A nebo před zobrazením nového znaku zobrazit předchozí znak barvou pozadí a teprve poté nový znak bílou barvou.

Autor:  JirkaA [ čtv 22.11.2018 10:45 ]
Předmět příspěvku:  Re: Arduino - Hodiny na LCD TFT displeji, refresh display

B. je pravda, u grafického displeje si ten kousek místa musíš před přepsáním smáznout, v knihovně na to bude určitě funkce (přinejhorším obdélník s barvou okraje i výplně shodnou s barvou pozadí).

Autor:  ellet [ čtv 22.11.2018 10:58 ]
Předmět příspěvku:  Re: Arduino - Hodiny na LCD TFT displeji, refresh display

... a nebo jednoduše těsně před tiskem dalšího času přetisknout ten starý barvou pozadí. (Mělo by se to trochu upravit - blikání.)

Autor:  BoŠ [ čtv 22.11.2018 11:13 ]
Předmět příspěvku:  Re: Arduino - Hodiny na LCD TFT displeji, refresh display

Každopádně záleží na tom, jak je napsaná knihovna.

Autor:  ellet [ čtv 22.11.2018 11:34 ]
Předmět příspěvku:  Re: Arduino - Hodiny na LCD TFT displeji, refresh display

Měl bych dvě proměnné DateTime. V jedné poslední tisknutý čas, v druhé aktuální (čteno ve smyčce). Tisk po změně, starý barvou pozadí......a zase čekat na změnu.
Mělo by to fungovat bez ohledu na knihovnu uspokojivě.

Autor:  JirkaA [ čtv 22.11.2018 11:42 ]
Předmět příspěvku:  Re: Arduino - Hodiny na LCD TFT displeji, refresh display

ellet píše:
Měl bych dvě proměnné DateTime. V jedné tisknutý čas, v druhé aktuální (čteno ve smyčce). Tisk po změně, starý barvou pozadí......a zase čekat na změnu.
Mělo by to fungovat bez ohledu na knihovnu uspokojivě.


Tak to je snad nejhorší možné řešení z hlediska času :) Vykreslovat font podruhý, to trvá podstatně dýl, než to přeplácnout obdélníkem, to se nediv že to bliká..

Autor:  ellet [ čtv 22.11.2018 11:51 ]
Předmět příspěvku:  Re: Arduino - Hodiny na LCD TFT displeji, refresh display

JirkaA píše:
Tak to je snad nejhorší možné řešení z hlediska času :) Vykreslovat font podruhý, to trvá podstatně dýl, než to přeplácnout obdélníkem, to se nediv že to bliká..
Jestli to bliká, jsem nezkoušel a zkoušet nebudu. Tisk ve smyčce a mezitím mazání (bez ohledu na změnu tisknuté veličiny) k blikání nebo snížení jasu asi povede ať je rychlost jakákoli. I pomalejší tisk po změně (t.j. po vteřině) bude prakticky neznatelný. Důležitý vidím to po změně (a vystačí s tím co zná a má).
Proti rychlejšímu mazání ale nic nemám :)
(Teď ale dodatečně koukám, že jsem na konci přehlídl ten delay(1000), stejně bych to vyhodil.)

Autor:  tomashr [ čtv 13.12.2018 13:11 ]
Předmět příspěvku:  Re: Arduino - Hodiny na LCD TFT displeji, refresh display

Poznámka na okraj - teď nedávno jsem si u Arduina trochu naběhl s OLED displejem, kdy po upgradu Arduino IDE na 1.8 to totálně tuhlo a padalo (přitom šlo o kód dříve perfektně funkční). Ukázalo se, že s novým IDE kraví knihovny pro něj - GFX, adafruit atd. Po nějaké době vylezl upgrade jak IDE, tak knihoven a řekl bych, že nyní už to vše chodí,dobře.
Berte jen jako obecné upozornění - zjevně ten poslední upgrade Arduino IDE nebyl úplně bez bolestí a měl i dopady do knihoven, při nějakých nejasnostech zkuste projít Library Manager a aktualizovat..

Autor:  ddano007 [ sob 15.12.2018 21:10 ]
Předmět příspěvku:  Re: Arduino - Hodiny na LCD TFT displeji, refresh display

A čo máš teraz za verziu IDE s ktorou to už ide? :lol:

Stránka 1 z 1 Všechny časy jsou v UTC + 1 hodina
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/