Gpiozero forritasafnið
Á Raspberry Pi tölvunni eru 40 pinnar sem nýtast vel til að tengja tölvuna við næruhverfi hennar. Sumir pinnanna hafa ákveðin hlutverk, eins og að gefa ákveðna spennu, annars vegar 3,3 V og hins vegar 5 V, en 26 pinnanna eru svokallaðir GPIO pinnar. GPIO stendur fyrir General Purpose Input/Output.
Þeir eru gerðir til að geta tengst við alls kyns tæki og hægt er að skilgreina þá eftir hentugleika. Rétt er þó að byrja á varnaðarorðum: Pinnana má nota til að gefa frá sér eða nema 3,3 V spennu en þeir eru aðeins gefnir upp að þola 16 mA. Ef farið er yfir þetta er möguleiki á að skemma þann pinna.
Það er hægt að stýra og lesa af GPIO pinnunum með ýmsu móti í Python, en tvö forritasöfn eru sérstaklega gagnleg: RPi.GPIO og gpiozero.
Þetta fyrra er eldra og nokkuð hrátt. Notandinn þarf t.a.m. að skilgreina hvort pinnar séu í úttaks- eða inntaksham og kanna hvort inntakspinnar séu háir eða lágir. Gpiozero er nýrra og býr yfir ýmissi virkni sem einfaldar notandanum lífið talsvert.
Fyrstu skref
Gpiozero er vel skjalað með góðum leiðbeiningum um það hvernig einföld verkefni eru sett saman. Þau ættu að duga sem einföld grunnskref fyrir flóknari verkefni. Hér fyrir neðan eru íslenskir útdrættir á nokkrum þeirra.
Ljóstvistur
Ljóstvistinn þarf að tengja við númeraðan GPIO pinna á Raspberry Pi tölvunni og í gegnum viðnám við jörð. Hægt er að stýra honum með því að kveikja og slökkva á honum, eða með því að stýra styrk hans með púlsvíddarmótun, PWM eða Pulse Width Modulation.
from gpiozero import LED
from time import sleep
led = LED(17)
while True:
led.on()
sleep(1)
led.off()
sleep(1)
Ef þú vilt stýra ljósstyrknum er hægt að nota púlsvíddarmótunina:
from gpiozero import PWMLED
from time import sleep
led = PWMLED(17)
while True:
led.value = 0 # off
sleep(1)
led.value = 0.5 # half brightness
sleep(1)
led.value = 1 # full brightness
sleep(1)
Hnappur
Þú getur tengt hnapp við GPIO pinna til þess að hafa áhrif á forritið þitt. Til dæmis er hægt að láta forrit bíða eftir að smellt sé á hnapp eða hlusta eftir hnappsmellum. Prófaðu að tengja hnapp eins og myndin sýnir og keyrðu kóðann að neðan.
from gpiozero import Button
button = Button(2)
while True:
if button.is_pressed:
print("Button is pressed")
else:
print("Button is not pressed")
Þú getur svo breytt forritinu til þess að stýra ljósaperu með því að nota skipanirnar úr ljóstvistaforritunum hér að ofan.
Haldið lengra
Við höfum nú séð nokkur mikilvæg verkfæri forritunar: while-lykkjur og skilyrðissetningar, if og else. Fleiri gagnleg verkfæri sem við munum kynnast eru for-lykkjur, föll og klasar. Skoðum föllin fyrst.
Föll eru gagnleg til þess að einfalda kóða með því að búa til nýja skipun sem jafngildir skipunum sem koma oft fyrir í forritinu okkar. Til dæmis ef við erum oft að blikka ljósi þrisvar eða ætlum að búa til forrit sem tekur inn bókstaf og blikkar ljósi í samræmi við mors-kóða bókstafsins.
from gpiozero import LED
from time import sleep
led = LED(17)
def blikka_thrisvar():
led.on()
sleep(1)
led.off()
sleep(1)
led.on()
sleep(1)
led.off()
sleep(1)
led.on()
sleep(1)
led.off()
sleep(1)
Við getum einfaldað þennan kóða umtalsvert. Annars vegar getum við búið til annað fall sem inniheldur eitt blikk og endurtekið það þrisvar:
from gpiozero import LED
from time import sleep
led = LED(17)
def blikka():
led.on()
sleep(1)
led.off()
sleep(1)
def blikka_thrisvar():
blikka()
blikka()
blikka()
Eða með því að nota for-lykkju:
from gpiozero import LED
from time import sleep
led = LED(17)
def blikka_thrisvar():
for i in range(3):
led.on()
sleep(1)
led.off()
sleep(1)
Föll eru ákaflega gagnleg fyrirbæri og því eru forritasöfn, eins og gpiozero, time, math og fleiri, full af gagnlegum föllum. Til dæmis er gpiozero með föll fyrir ljóstvista sem koma í staðinn fyrir algengar aðgerðir:
from gpiozero import LED
led = LED(17)
def blikka_thrisvar(lengd):
led.blink(n=3, on_time=lengd, off_time=lengd)
blikka_thrisvar(0.5)