Blog
2016.01.02 18:50

Tippek és Trükkök az Adafruit PITFT érintőképernyő használatához

 

Hogyan fejlesszünk grafikus programot Python nyelven a PITFT-re? Hogyan használjuk a PITFT-n lévő gombokat Python programból?

Amikor kézbevesszük ezt a klassz Raspberry PI-hez gyártott érintőképernyős TFT kijelzőt, rögtön elfog a hév, hogy valami nagyszerű dolgot kellene rá fejleszteni. Lehetne például az internetrádió grafikus, érintésvezérelt kezelőfelülete, vagy néhány plusz tartozékkal akár egy oszcilloszkóp kijelzője, vagy láthatnám rajta a hőmérőszenzorok állapotát.

Ekkor azonban felmerül a kérdés, hogy oké, de hogyan lássak neki?

Az egyik legkézenfekvőbb megoldást ismét a Python nyelv adja. Egyszerű elsajátítani, rengeteg segédlet van hozzá sok-sok példával. Itt most megosztunk pár ötletet veletek, hogy Ti már egyből a mélyvízbe ugorhassatok a saját ötletetek megvalósítására koncentrálhassatok. Ne azzal kelljen órákat eltölteni, hogy ezeket az apróságokat (de szinte legfontosabb alapokat) kelljen összeszedni a netről.

Szóval lássunk neki! Ahhoz, hogy az itt leírtak működjenek, feltétlenül szükséges, hogy az itt található leírás szerint telepítsd a kijelzőt. Valamint legyen hálózathoz csatlakoztatva, hogy másik gépről is el tudjuk érni hálózaton keresztül. A grafikus környezet fejlesztésekor fontos szempont, hogy azonnal ki is tudjuk próbálni azt. Ennek érdekében a fejlesztést, programozást az Adafruit által kialakított WEBIDE környezetben végezzük, Python nyelvet használva. Ennek lényege, hogy egy egyszerű kis szoftvert telepítünk a Raspberry PI-re, ami biztosítja, hogy egy másik gépről, böngészőből (Chrome, Firefox) el tudjuk érni kedvenc Raspberry PI gépünket. Ezen WEB-es felületről egyidőben több fájlt is tudunk szerkeszteni és parancssori hozzáférést (bash) is biztosít.

Miközben egy böngészőn keresztül elérjük a Raspberry PI-t, közben a grafikus programunk futását láthatjuk a Raspberry PI-re illesztett PITFT  érintőpaneles kijelzőn. A Python nyelv rendkívül kifinomult módon támogatja a grafikus programok fejlesztését a pygame modul segítségével. Ez a modul kifejezette játékfejlesztésre lett létrehozva, és egyszerű használata lehetőséget nyújt arra, hogy igen rövid idő és igen kevés programsor használatával látványos grafikus megoldásokat hozzunk létre. A pygame-ről részletes leírás itt érhető el: http://www.pygame.org/docs/  Sok sok példaprogram biztosítja a könnyű megértést. De térjünk rá a lényegre.

Az első kérdés, hogy hogyan mondjuk meg a Python környezetnek, hogy a  PITFT-t használja grafikus megjelenítőként?

Minden pygame összetevőt használó python program, kell hogy rendelkezzen az alábbi kijelzőt inicializáló programsorral:

pygame.display.init()

Mielőtt ez a sor lefut, előtte meg kell "mondani" a környezetnek, hogy melyik az a kijelző amit használnia kell. Jelen esetben ezt az alábbi módon tehetjük meg, hogy a PITFT-n lássuk az eredményt.

Először is importálni kell az 'os' modult. Ehhez a programunk elejére illesszük be az alábbi sort:

import os

Ezután a már korábban említett képernyő inicializáló sor elé tegyük be az alábbi kódot:

os.environ["SDL_FBDEV"] = "/dev/fb1"

Ez mondja meg a Python környezetnet, hogy a /dev/fb1 nevű eszközt kell használnia a grafikus megjelenítéshez. Ez pedig nem más mint a PITFT kijelző.

A programunk tehát valahogy így kell kezdődjön:

import os

os.environ["SDL_FBDEV"] = "/dev/fb1"

pygame.display.init()

Második tipp:

Hogyan használjuk a PITFT érintőpaneles kijelző panelján elhelyezkedő 4 db szabadon felhasználható nyomógombot?

Az Adafruit mérnökei ügyesen kitalálták, hogy 4 db nyomógombot is rátesznek az érintőkijelző paneljára. Ezek a gombok A GPIO#23 , #22, #21 (az új /Rev2-es/ Raspberry PI-k esetében ez a #27-es) és #18 portokra van kivezetve. Azaz ezen GPIO portokat tudjuk a programból figyelni, és ha megnyomjuk valamelyik gombot, akkor annak hatására végrehajthatunk saját kódokat.

Ehhez először is importálnunk kell az RPi.GPIO modult a python programunkba az alábbi módon:

import RPi.GPIO as GPIO

Ezután be kell állítanunk a GPIO módot. Itt ügyelni kell arra, hogy a fent felsorolt GPIO számozás nem a Raspberry PI tüskesorán a csatlakozó sorszámát jelenti, hanem az un. BCM számozás szerint számozást. Hogy ez mit is jelent valójában, arra most nem térünk ki, de itt részletes leírást találsz róla.

Szóval a megfelelő mód beállítása:

GPIO.setmode(GPIO.BCM)

Ezek után már csak egy feladat maradt, hogy megmondjuk, hogy ezek a GPIO portok IN azaz bemeneti portok. Azonban itt jön egy apró trükk! Nem elég csak IN módba tenni, hanem be kell állítani a pull_up_down regisztert is. Ezzel a trükkel lesznek használhatók a portok a nyomógombokkal. Ez a következő kóddal adható meg:

Button1 = 23

GPIO.setup(Button1, GPIO.IN, pull_up_down=GPIO.PUD_UP)

Természetesen ezt minden egyes GPIO portra be kell állítani, amit használni szeretnénk. Az alábbi linken letölthető a PITFTscope.py program, mely egy oszcilloszkóp képernyőjét rajzolja ki és a '2'-es gomb lenyomására kirajzol egy szimulált jelet. Majd a '3'-as gomb megnyomására letörli a képernyőt.

;