DatavisionLCD-kirjasto Arduinolle

Sain tässä hiljattain hutasu.net:in lukijalta Vesalta projektiapupyyntöä LCD-näytön ohjaukseen Arduinolla. Hän oli näitä kyseisiä näyttöjä itselleen haalinut useamman kappaleen, mutta helppokäyttöinen ohjausmetodi puuttui. Hän kysyi minulta apuja ja sovittiin, että hän lähettää minulle yhden näytöistään ja minä alan työstämään apukoodia näytön ohjaukseen. Näyttö on mallia Phico Datavision DV-16215-1-S2RB ja se koostuu kahdesta 2x16 merkin LCD-näytöstä, joita ohjaa näyttömoduuliin integroitu mikroprosessori. Itse näyttömoduulia taas ohjataan sarjaportilla periaatteella: valitse näyttö - anna komento - kirjoita dataa. Joitain apuja näytön ohjaamiseen löytyi myös picaxen foorumeilta ja Vesa oli hyvää esiselvitystä tehnyt mm. signaalin tasojen osalta. Niistä nimittäin selvisi, että signaalitasot toimivat päin p... siis väärinpäin kuten normaalissa sarjaportissa.

Näytön muokkaus

Näyttömoduulin takaa löytyy muutamia juotettavia jumppereita, joiden merkitystä aloin selvittämään lukaistuani pikaisesti picaxen foorumin ketjun läpi. Selvisi, että juotosjumpperi S3 täytyi poistaa ja lisätä juotos jumpperiin S2, jotta näyttö saadaan kommunikoimaan 9600 nopeudella, 8:lla databitillä, ilman pariteettia ja yhdellä stop-bitillä (8N1).

Muutettavat jumpperit S2 ja S3

Testikoodi ja kirjaston luonti

Kun perinteinen "Hello World" oli saatu tulostumaan, oli aika aloittaa kirjaston tekeminen. Päätin toteuttaa tästä hommasta kirjaston, koska näitä näyttömoduuleita jonkun verran saattaa olla näissä piireissä käytössä.

Arduino kirjaston tekemiseen löytyy netistä hyvät ohjeet, joita seuraamalla pääsee kyllä jyvälle miten homma pelaa. Alla linkkejä, joista oli hyötyä:

https://www.arduino.cc/en/Hacking/LibraryTutorial

http://playground.arduino.cc/Code/Library

https://www.arduino.cc/en/Reference/APIStyleGuide

Eli periaatteessa homma ei eroa mitenkään C++ ohjelmoinnista (olio-ohjelmoinnista). Eniten hankaluuksia tuotti tietenkin se, kun C++:lla ei ole paljoa tullut tehtyä...

Kirjaston tekemisessä pitää olla tarkkana luotavan library.properties -tiedoston kanssa ja siitä onkin ohjeistus arduinon githubin sivuilla: https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5:-Library-specification

Ohjeet varsinaiseen kirjaston julkaisemiseen löytyy sitten tästä linkistä: https://github.com/arduino/Arduino/wiki/Library-Manager-FAQ

Kirjaston julkaisu ja käyttäminen

Kirjaston julkaisussa versionumero on tärkein, että automaattinen kirjastojen tarkistusrutiini osaa kirjaston julkaista. Kyseinen rutiini suoritetaan gitissä tunnin välein ja onnistunut kirjaston lisäys näkyy muutaman tunnin sisällä Arduino IDE:n käyttöliittymässä:

Install napista kirjasto asentuu koneelle ja sen jälkeen sitä voi käyttää. Examples valikon alta löytyy DatavisionLCD -> BasicUsage - mistä nähdään kirjaston käyttö. Lisätietoja näytöstä löytyy GitHubista.

Esimerkki vaatii vielä hieman parantelua ja parempaa selitystä, mutta kun kirjasto nyt on julkisessa levityksessä, niin lisäysten ja muutosten tekeminen päivittyy käyttäjille automaattisesti. Tästä tähän sanoisi eräs kuuluisa vbloggaaja.