26 Raspberry Pi nupud ja LED tuled
Selle teema eesmärgiks on tutvustada kuidas ühendada Raspberry Pi-ga erinevaid riistvaralisi seadmeid ning neid programmeerida. Tänases õppetunnis vaatame kuidas makettplaati kasutada, selle külge ühendada lihtsaid nuppe ning LED tulesid.
Makettplaat
Makettplaat (ing. keeles breadboard) on elektroonikas üks enim kasutatud vahendeid, et kiirelt prototüüpe luua. Makettplaadi eeliseks on see, et see võimaldab ühendada erinevaid komponente ilma jootmiseta ning lisaks sellele on see ka korduv kastuatav erinevate projektide jaoks. Makettplaadi puhul on oluline mõista kuidas on kontaktid selle sees ühendatud.
Joonis 1 on ühe makettplaadi diagramm, kus on vasakul pool on joontega kujutatud makettplaadi kontaktide omavaheline ühendatus. Nagu võite näha on keskmised veerud ühendatud omavahel jadamisi ning ülemised ja alumised kaks rida omakorda jadamisi.
LED tule ehk valgusdioodi ühendamine Raspberry Pi-ga
Järgnevalt vaatame kuidas ühendada valgusdioodi ehk edasiselt LED tuld Raspberry Pi-ga makettplaadi abil. Valgusdioodi kohta kasutatakse rahvusvahelist lühendit LED (ingl light-emitting diode – valgust kiirgav diood). Kui vaatame LED tuld siis näeme, et sellel on kaks nö jalga, millest lühemat nimetatakse katoodiks ning pikemat anoodiks. Anoodile antakse positiivne ja katoodile negatiivne pinge. Vaatame nüüd, kuidas ühendada LED valgusti Raspberry Pi-ga nii, et valgusti süttiks.
Esmalt tuleb meil ühendada LED tuli makettplaadiga nii:
Oluline on siinkohal, et jälgiksid kumb jalg on LED tule puhul pikem ning kumb lühem. Selles näites on lühem jalg ühendatud takistiga. Takistiga ühendame LED tule, et kaitsta seda ülepinge ning läbipõlemise eest.
Kui oled saanud LED tule ja takisti makettplaadiga ühendatud on järgmiseks sammuks selle ühendamine Raspberry Pi viikude ehk nõeltega juhtmete abil. Selle jaoks loome ühenduse nii:
Jääb üle ainult programmeerimine. Järgnevalt avame Thonny IDE ehk Pythoni programmeerimiskeskkonna. Selle jaoks mine ülevalt vasakult nurgast kodu nupule -> programmeerimine -> Thonny Python IDE.
Alustuseks tuleb meil oma programmile lisada teek nimega gpiozero. Selle jaoks kirjutame programmi algusesse from gpiozero import LED
.
Nüüd kui teek on lisatud siis loome uue LED tule objekti, mille abil saame LED tuld sisse ja välja lülitada. Selle jaoks kirjutame järgmisele reale: led = LED(2). Number 2 tähendab, et kasutame Raspberry Pi peal olevat mikronõela (edaspidi pin) numbriga 2.
Jääb üle ainult led tule sisselülitamine. Selle jaoks tuleb kirjutada järgmisele reale vaid: led.on()
.
Kogu kood:
from gpiozero import LED
led = LED(2)
led.on()
Kui ülesanne on valmis, siis proovi ka LED tuli välja lülitada. Vihjeks: mis on on
vastand?
Mikronupud
Nupud töötavad lihtsal põhimõttel: kui nupp alla vajutada tekib nupu sees kontakt, mis omakorda ühendab vooluringi. Kui nupult surve ära võtta ühendab ta ennast ise lahti. Tänanses õppetunnis kasutame tavalisi mikronuppe, mida saab hõlpsasti kasutada makettplaadiga.
Esmalt on meil vaja ühendada nupp makettplaadiga ning ka Raspberry Pi-ga. Ühendus toimib läbi pin 3. Üks juhe läheb koos koos LED tulega GND pini läbi makettplaadi. Teeme seda nii:
NB! Enne mikronupu asetamist kontrolli, et asetaksid nupu täpselt nagu juhendis. Nimelt on nupul kahte tüüpi küljed, ühed on siledad ja teised on kontaktidega. Üks kontaktidega külg moodustab ühe vooluringi, seega pead juhted ühendama ka ühele poolele.
Pythonis nupu kasutamise jaoks tuleb programmi algusesse lisada: from gpiozero import Button
.
Pythonis saab luua uue nupu objekti sarnaselt LED objektile. Selleks tuleb kirjutada: button = Button(3)
kus 3 tähistab pini numbrit.
Pythonis saame panna programmi seisma seni kuni nuppu vajutatakse. Selleks tuleb panna nupp ootama järgmise vajutuseni koodiga: button.wait_for_press()
. Kui programm jõuab selle käsuni siis peatatakse kõik muu ja oodatakse seni kuni nuppu vajutatakse.
Proovime, kas programm töötab. Kirjuta programm, mis loob uue nupu objekti ning ootab vajutust. Kui nuppu vajutatakse siis programm prindib “Nuppu vajutati”. Kui katsetus toimib, siis mine järgmise sammu juurde.
Loo järgmine programm:
1. Esmalt loo LED objekt
2. Teiseks loo Button objekt
3. Lülita LED tuli sisse
4. Oota kuni vajutatakse nuppu
5. Lülita led tuli välja
6. Kui eelmine samm sai valmis, siis sul on programm, mis lülitab LED tule nupuvajutusega sisse. Nüüd soovime aga täiendada programmi nii, et saaksime LED tuld sisse ja välja lülitada nupuvajutusega. Selle jaoks läheb meil vaja
lõputut kordust. Pythonis on selle jaoks while tsükkel. While tsükkel töötab lihtsa põhimõtte alusel, kui tsükli päises (ehk alguses sulgude vahel) olev nö. küsimus on tõene siis tsüklit korratakse, kui see on aga väär siis tsükkel lõpetatakse. Näiteks:
while(minu_nimi = “Eero”):
print(“Tere Eero!”)
Selline tsükkel töötab igavesti, kui muutuja minu_nimi
on “Eero”, sest tsükli päises küsitakse, kas minu_nimi
on Eero. Kui see on tõene, siis tsükli kehas olevat koodi korrutatakse seni kuni minu_nimi ei ole enam Eero. Seega selles koodis on lõputu tsükkel.
Proovi vastata küsimusele: mis juhtub kui while tsükkel algaks nii: while(True):
?
Ülesanne – nupu sisse- ja väljalülitamine
Eelmisest ülesandest saadud teadmistega loo nüüd uus programm. Proovi esmalt programm ilma abita valmis saada. Kui jääd hätta siis vaata edasist juhendit.
Vihje: Raspberry Pi võib ühe nupuvajutuse asemel tuvastada mitu. Kuidas seda vältida? Kõige lihtsam viis selle vältimiseks on panna programm seisma lühikeseks ajaks pärast nupuvajutust. Selle jaoks lisame programmi algusesse:
import time
ja kohe pärast nupuvajutuse tuvastamist: time.sleep(0.5)
, see funktsioon paneb terve programmi pooleks sekundiks seisma.
Loome programmi, mis toimiks järgnevalt:
1. Loome led tule objekti
2. Loome nupu objekti
3. Lülitame led tule sisse
4. Loome uue muutuja tuli_sees, millele anname algse väärtuse True
5. Alustame lõputu while tsükli
6. Ootame nupuvajutust
7. Kui tuli_sees on True
8. Lülita tuli välja
9. Määra tuli_sees False6
10. Vastasel juhul
11. Lülita tuli sisse
12. Määra tuli_sees True
Kas said programmi valmis?
Valgusfoori ülesanne
Järgnevalt proovi iseseisvalt luua valgusfoor, mis võib koosneda ainult ühest tulest ning nupust. Valgusfooril peaks olema üks tsükkel, mis toimub pidevalt, kuid nuppu vajutades aktiveerub teine tsükkel, pärast mida läheb valgusfoor tagasi esialgse tsükli töö peale.