PICAXE a menu na LCD

jova
Příspěvky: 340
Registrován: 16 pro 2013, 11:40

PICAXE a menu na LCD

Příspěvek od jova » 06 bře 2017, 09:50

Zdravím chtěl jsem se optat, jak řešíte menu na LCD displeji a výběr v něm.
Už pár dní se snažím o vytvoření něčeho univerzálního, co by nezabíralo příliš místa v paměti a moc se nedaří.
Zatím jsem se dopracoval k variantě přepínání velkých / malých písmen. Viz ukázka: https://www.youtube.com/watch?v=yHgWzmte52E

Kód: Vybrat vše

lcdm1:
serout B.0, baud, (254,135)   
if b8=0 then serout B.0, baud, ("START"):else serout B.0, baud, ("start") endif
serout B.0, baud, (254,193)
if b8=1 then serout B.0, baud, ("POCET KROKU MOTORU"):else serout B.0, baud, ("pocet kroku motoru")endif
serout B.0, baud, (254,152)
if b8=2 then serout B.0, baud, ("POCET SNIMKU"):else serout B.0, baud, ("pocet snimku")endif
serout B.0, baud, (254,213)
if b8=3 then serout B.0, baud, ("NASTAVENI PARAMETRU"):else serout B.0, baud, ("nastaveni parametru")endif
pause 300
return

To ale vyžaduje dvojí texty a tím i velkou náročnost na paměť.

Další variantou je označování řádků vkládáním > před první písmeno řádky, to je už lepší, ale stejně to ještě není ono.

Kód: Vybrat vše

menu2:
serout C.1, baud, (254,128)
serout C.1, baud, (" nastav cas")
serout C.1, baud, (254,192)
serout C.1, baud, (" nastav zvoneni") 
serout C.1, baud, (254,148)
serout C.1, baud, (" nastav hodiny")
serout C.1, baud, (254,212)
serout C.1, baud, (" konec")

if vyber=3 then serout C.1, baud, (254,128) endif
if vyber=2 then serout C.1, baud, (254,192) endif 
if vyber=1 then serout C.1, baud, (254,148) endif 
if vyber=0 then serout C.1, baud, (254,212) endif
serout C.1, baud, (">")
Co mi dělá ale nejvíce problém je, jak na takovémhle displeji vybrat a označit například čas tak, aby bylo jasné že se jeho hodnota bude měnit.
ukázka.jpg
Řadič pro LCD používám z těchto stránek: http://electromag1.wifeo.com/fabriquer- ... icaxe-.php

DavidO
Příspěvky: 959
Registrován: 01 kvě 2013, 21:27

Re: PICAXE a menu na LCD

Příspěvek od DavidO » 06 bře 2017, 10:29

Řadič Hitachi HD44780 umí zobrazovat pozici kurzoru, a to jako podtržení nebo jako bloček. Nastavuje se v rámci příkazu "Display on/off control", viz datasheet řadiče. Pro zvýraznění, že budu měnit hodnotu, bych asi volil ten blikající bloček (případně nejdřív podtržítkem najel na odpovídající místo, pak zmáčknul čudlík na přechod do editovacího režimu, který by byl zvýrazněný tím bločkem).

jova
Příspěvky: 340
Registrován: 16 pro 2013, 11:40

Re: PICAXE a menu na LCD

Příspěvek od jova » 06 bře 2017, 13:31

O téhle funkci vím, bohužel ten Francouz, co jsem koukal tam zřejmě tuhle možnost do převodníku nenaprogramoval. Dokázal by jste to někdo doplnit?
http://sd-2.archive-host.com/membres/up ... _serie.zip

DavidO
Příspěvky: 959
Registrován: 01 kvě 2013, 21:27

Re: PICAXE a menu na LCD

Příspěvek od DavidO » 06 bře 2017, 14:05

Ale jo, naprogramoval ;)
Pošle se to tam přes tu 254 stejně jako třeba příkaz ke změně polohy kurzoru.

jova
Příspěvky: 340
Registrován: 16 pro 2013, 11:40

Re: PICAXE a menu na LCD

Příspěvek od jova » 06 bře 2017, 14:06

A jak? :shock:
Já už na to několikrát koukal a nic tam nenašel. Bohužel mé programátorské schopnosti mají své limity :(

DavidO
Příspěvky: 959
Registrován: 01 kvě 2013, 21:27

Re: PICAXE a menu na LCD

Příspěvek od DavidO » 06 bře 2017, 14:55

serout B.0, baud, (254,něco) slouží k poslání příkazu něco. Čísla větší jak 128 jsou nastavení adresy tedy kurzoru na zvolené místo (podle tabulky na té jeho popisné stránce, 128 je 1.ř. 1.sl. apod). Čísla menší jsou jiné příkazy, viz tabulka 6 na str. 24 v datasheetu zde. Tam je v řádku Display on/off control napsané, co se má poslat pro to které nastavení displeje a kurzoru, význam D,C,B je ještě detailněji popsaný na str. 26. No a když si kurzor zapnu, tak pak bude zobrazovaný tam, kam je právě nastavená adresa pro psaní (např. typicky za poslední právě vypsaný znak).

jova
Příspěvky: 340
Registrován: 16 pro 2013, 11:40

Re: PICAXE a menu na LCD

Příspěvek od jova » 06 bře 2017, 16:15

Dík, něco už to dělá.
Jen mi nevyhovuje ta pozice kurzoru za posledním vypsaným znakem, potřeboval bych jí dostat pod ten znak, aby se tím označil ten který se mění. Nějak na to nemohu přijít.

tomasp
Příspěvky: 50
Registrován: 15 dub 2014, 23:01

Re: PICAXE a menu na LCD

Příspěvek od tomasp » 06 bře 2017, 17:00

Pohyb kurzoru vpřed/vzad je také popsán v té samé tabulce, je to příkaz "Cursor or Display Shift".
Pro pohyb kursoru vlevo by se podle toho mělo odeslat bitově toto : 00010000
což je decimálně 16.

Takže zavolat

Kód: Vybrat vše

serout B.0, baud, (254,16)
.

Musíš to sám vyzkoušet, já s tímto displejem nikdy nepracoval.

PS: Ještě jsem tady našel stránku, kde autor některé zajímavé kódy příkazů "předžvýkal":
http://www.dinceraydin.com/lcd/commands.htm

Uživatelský avatar
fulda
Příspěvky: 1031
Registrován: 04 led 2016, 17:18

Re: PICAXE a menu na LCD

Příspěvek od fulda » 06 bře 2017, 19:27

Kurzor se postaví tam, kde je adresa pro další zápis.
Já neznám ty knihovny, ale určitě mají nějaké nastavení pozice odkud chceš psát.

---
Edit: je tam tabulka s řádkama a sloupcema a pak příkaz: serout C.1, baud, (254,148)
Za pravopisné chyby v této zprávě může moje učitelka češtiny.

jova
Příspěvky: 340
Registrován: 16 pro 2013, 11:40

Re: PICAXE a menu na LCD

Příspěvek od jova » 06 bře 2017, 23:04

Tak dostat tam ten kurzor za text už není problém, ale dostat ho pod tu proměnnou nebo pod text součastně se mi zatím nepodařilo.
Je vůbec otázka zda je to možné? :roll:
Naposledy upravil(a) jova dne 06 bře 2017, 23:53, celkem upraveno 1 x.

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 0 hostů