Eftersom VFD-displayen är såpass krånglig att styra kommer det att bli tre artiklar bara om hur man styr den. I den här artikeln kommer ni att lära er hur man lägger ut text i 3 olika storlekar, samt hur man gör ramar och fyrkanter med LCDC. Ni kommer även att lära er hur man gör för att visa någonting när man slår på LCDC. I nästa del kommer ni att lära er hur man lägger ut grafik på VFD-displayen, samt hur man får ett meddelande att visas då man slår på datorn. I den tredje och förhoppningsvis sista delen kommer jag att ta upp lite mer avancerade saker, som hur man byter ljusstyrka och hur man får animerade skärmar.
Det första
du ska göra är att ladda hem LCDC. LCDC är det bästa programmet
för att styra alla former av LCD- och VFD-displayer under windows. Programmet
kostar ca 200 kronor, men mjukvara som är värd att använda
är värd att köpa. När du installerat detta behöver
du en speciell konfigurationsfil till den här displayen, en enkel sådan
kan du ladda hem
här. Lägg
den i din LCDC/Definitions mapp, och starta upp LCDC. Välj Configure/Test,
LCD connection, och välj Noritake_Simple i drop-down listan. Sedan måste
du klicka på den gröna bocken i övre högra hörnet,
då uppdaterar LCDC sig med de nya drivrutinerna.
Drivrutin till VFD:n
|
|
Sedan går
du in på test display och skriver någonting i rutan där det
står L.C.D.C!. tryck sedan på Send, och du får förhoppningsvis
ut texten du skrev in.
Om du kör linux så är LCDProc det bästa programmet, jag
håller för närvarande på att skriva en output driver
för dessa displayer, om du skulle hittat en färdigskriven så
skicka gärna ett mail till mig. För stunden vet jag dock inget sätt
att styra denna VFD:n ifrån linux.
För att
skicka kommandon till VFD-displayen så skriver man [##nr], där
nr är numret på funktionen/koordinaten som man vill skicka. Observera
att man kan skicka text utan att behöva använda dessa hakar. De
flesta kommandon är uppbyggda av flera koder, först har man en kod
för att visa vilket kommando man vill använda, och sedan skickar
man parametrar efteråt. En parameter är någonting som kommandot
behöver för att veta vad det ska göra, om du tillexempel vill
flytta pekaren till position 10,21 måste du först skicka koden
för "flytta pekare" , och sedan skicka 10 och 21 som parametrar,
annars vet inte displayen vart den ska flytta pekaren. En lista på alla
kommandon och vilka parametrar de behöver kan du hitta i manualen, kom
ihåg att koderna står hexadecimalt i manualen, medans displayen
vill ha siffrorna i vanlig bas 10. Du måste alltså göra om
siffrorna från hexadecimalt till decimalt innan du skickar de till displayen.
Detta kan du göra i windows inbyggda miniräknare.
Nu ska du skapa
en ny skärm i LCDC. Detta gör du genom att gå in på
Screen Builder, och klicka på plus i högerkanten. Välj nu
rad 1, och skriv in följande text i command: [##16][##0][##8]. Detta
gör att pekaren flyttas till den positionen, om vi inte flyttar den dit
kommer inte texten att synas. Skriv sedan Hello World i textrutan, och spara
filen. Döp den till någonting vettigt, och starta sedan displayen.
Men vi vill väl ha mer än så, gå in i den nya skärmen
du har skapat och välj rad två. Skriv in [##16][##0][##16] i commandrutan,
och skriv Domination i textrutan. Spara, och titta på den nya skärmen.
Testa nu och lägg till flera skärmar med många rader, som
du kanske ser så är det det högraste värdet i command
som styr vart den kommer att skriva i höjdled. Notera att det inte spelar
någon roll vilket utav raderna du väljer i programmet, kommandot
som du skriver in anger vart det ska synas på skärmen.
Naturligtvis
går det att spara skrämuppsättningar i LCDC, och även
ladda in sparade. För att göra det klickar du på de olika
ikonerna högst upp när du är inne i Screen Builder läget,
bilderna förklar sig själva. Jag har gjort en liten displayfil till
ovanstående skärmförsök, du kan ladda hem filen här.
En av fördelarna
med att ha en grafisk display är att man inte är låst vid
en teckenstorlek. På den här displayen finns det inte mindre än
3 olika fontstorlekar, tyvär så saknar samtliga å, ä
och ö. För att ändra fontstorlek använder du ett av följande
kommandon: [##28] för liten storlek, [##29] för medel och [##30]
för stor. Glöm inte att displayen kommer ihåg vilken storlek
du använde sist, så det kan vara klokt att inleda varje kommando
med [##29] om du vill ha standardfonten, ifall du skulle råka ha använt
den stora eller den lilla fonten senast. Du kan ladda hem en displayfil som
visar olika fontstorlekar här.
Som du eventuellt
såg i det tidigare exempelt så tömdes hela displayen innan
den lade ut texten, detta är väldigt användbart eftersom allting
blir kladdigt annars. Ett bra sätt att göra detta är att använda
s.k events. Events visas genom att man klickar på Events i skärmdeklareringsläget.
Klicka på plus i vänsterkanten, och du har fått en event.
Det finns hur många parametrar som helst, i den här artikeln ska
vi nöja oss med att tömma skärmen. Ställ in eventen så
att det ser ut på följande vis:
Event
|
Detta
betyder i klartext: Innan skärm Screen_1 visas ska displayen utföra
kommandot ClearDisplay. Funktionen ClearDisplay har jag deklarerat i konfigurationsfilen,
det är alltså ingenting inbyggt i LCDC. Detta är ett användningsområde,
det finns flera andra, t.ex visa en speciell skärm när du har fått
nytt mail, rita en ram innan du visar texten, visa winampskärm när
du byter låt, visa varning om det bara finns 8mb ledigt utrymme på
en hårddisk o.s.v. Ett väldigt kraftfullt verktyg som det kommer
att ordas mer om i senare artiklar.
När
man kör displayen på 20fps utan att uppdatera innehållet
ser det flimmrigt ut, det syns tydligt i exemplen tidigare. Det går
naturligtvis att ställa in hur många fps varje skärm ska vara
på, och här bör man ha så låg som möjligt
utan att innehållet "förstörs". Om du har en display
som visar hur många sekunder det är kvar på en winamplåt
kan det räcka med 2fps, medan grafik som rör sig kan kräva
20fps för att se bra ut. Tumregeln är allltså att ha så
liten fps som innehållet tillåter utan att förstöras.
Detta gör också att processorn belastas mindre. Det finns en "Fps
Rate" inställning i konfigurationen för varje skärm, så
det är bara att ändra efter eget behag. Statisk text (som de tidigare
exemplen) flimmrar dessutom betydligt mer än skärmar med variabler,
så tro inte att den kommer att flimra så mycket hela tiden.
Nu är det
ju ganska tråkigt att bara ha statisk text på skärmen, man
vill ju gärna visa lite saker på den som uppdateras ifrån
datorn. Det är väldigt roligt att visa vilken låt som spelas
just nu, så varför inte göra en enkel winampskärm.
Innan vi börjar koda måste winamp-pluginen aktiveras i LCDC. Detta
gör du genom att gå in på Configure/Test, Plugin Configuration
och sedan klicka i WA2. Notera att det bara fungerar med winampversioner 2.xx.
Nu när det är färdigt är det bara att skapa en ny skärm,
och släppa loss. Börja med att ange vart du vill ha det första
fältet (i mitt fall artist). Jag valde att ha det i det övre vänstra
hörnet, mitt kommando blev [##29][##16][##0][##8]. Klicka sedan på
den lilla stjärnan till höger om textfältet, och gå fram
i trädet tills du hittat vad du vill visa där. Dubbelklicka på
det, och klicka på ok. Välj sedan rad två och ange vart du
vill visa det fältet i kommandoraden, jag valde att ha den precis under
det övre fältet i mindre font, så mitt kommando blev [##28][##16][##0][##15].
Gör på samma sätt som tidigare, men välj en annan variabel
(t.ex låttitel). Spara nu, och slå på displayen. Starta
winamp och välj en låt, och njut av det du lyckats åstadkomma
hittills.
Det kan vara en bra idé att ha en event som gör om skärmen
när låten byts, för att göra det så skapar du en
ny event och väljer Wa2 -> On track change, och Dsp -> Process
commands. Sedan skriver du ClearScreen i parameters.
Eftersom den
här displayen faktiskt är grafisk så är det möjligt
att göra bilder och liknande, men ramar kan lyfta utseendet ganska ordentligt
också. Det går att göra både fyllda och ofyllda fyrkanter
med inbyggda kommandon i VFD-displayen, kommandot för en fylld fyrkant
är [##17] och kommandot för en ram är [##20]. Parametrarna
är (i ordning) den vänstra x-koordinaten, den högsta y-koordinaten,
den högra x-koordinaten och den lägsta y-koordinaten. Om jag vill
göra en ram ifrån (3,10) till (10,30) skickar jag alltså
[##20][##3][##10][##10][##30].
Naturligtvis kan man skicka dessa kommandon i varje kommandorad samtidigt
som man lägger ut datan, men det kan vara en bra idé att göra
en event som lägger ut ramarna innan skärmen visas.
Det finns
lite fler kommandon inbyggda i VFD-displayen, bland annat kan man invertera
ett område. Att invertera innebär att om punkten är släckt
så tänds den, och om den är tänd så släcks
den. Det kan bland annat användas för att visa en progressbar, eller
bara som en effekt. Kommandot för att invertera ett område är
[##19]. Parametrarna är samma som för ramen och det fyllda området.
Här kommer
lite bilder som visar exempel på skärmar du kan göra med dina
kunskaper hittills. Kom ihåg att bilderna inte gör rättvisa
för det riktiga utseendet, det är svårt att ta kort på
en VFD.
NordicHardware med Inverskommando, stor font
|
Mycket info, liten font, inverskommando
|
Medium och stor font, visar hela displayen
|
Som tidigare, fast enbart displayytan
|
En liten prydlig winampskärm med ramar
|
Detta avslutar den första av en serie ariklar som har avsikten att lära ut hur man programmerar en VFD. Det var inga dunderkommandon denna gången, men det kommer i senare guider, man måste lära sig det grundläggande innan man kan göra det avancerade. Det tar ett tag att lära sig detta, men när man kan det går det betydligt snabbare och det är inte lika hopplöst som det ser ut att vara. Med kunskaperna ifrån den här guiden kan man göra det som gick med LCD’n, och lite mer (bargraphs undantagna), så om ni bara var ute efter ett bättre utseende behövs inte mer än så. Men för er som vill kunna lägga ut pixelgrafik och kanske till och med skriva ett litet spel till displayen kommer det mera inom en snar framtid, så ni behöver inte vara oroliga.