{"id":1446,"date":"2022-05-10T12:54:24","date_gmt":"2022-05-10T12:54:24","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/?post_type=chapter&#038;p=1446"},"modified":"2022-06-02T23:07:53","modified_gmt":"2022-06-02T23:07:53","slug":"raspberry-pi-nupud-ja-led-tuled","status":"web-only","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/chapter\/raspberry-pi-nupud-ja-led-tuled\/","title":{"raw":"Raspberry Pi nupud ja LED tuled","rendered":"Raspberry Pi nupud ja LED tuled"},"content":{"raw":"Selle teema eesm\u00e4rgiks on tutvustada kuidas \u00fchendada Raspberry Pi-ga erinevaid riistvaralisi seadmeid ning neid programmeerida. T\u00e4nases \u00f5ppetunnis vaatame kuidas makettplaati kasutada, selle k\u00fclge \u00fchendada lihtsaid nuppe ning LED tulesid.\r\n<h2>Makettplaat<\/h2>\r\nMakettplaat (ing. keeles\u00a0<em>breadboard<\/em>) on elektroonikas \u00fcks enim kasutatud vahendeid, et kiirelt protot\u00fc\u00fcpe luua. Makettplaadi eeliseks on see, et see v\u00f5imaldab \u00fchendada erinevaid komponente ilma jootmiseta ning lisaks sellele on see ka korduv kastuatav erinevate projektide jaoks. Makettplaadi puhul on oluline m\u00f5ista kuidas on kontaktid selle sees \u00fchendatud.\r\n\r\n[caption id=\"attachment_1542\" align=\"alignnone\" width=\"225\"]<img class=\"wp-image-1542 size-medium\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/20220603_013052-225x300.jpg\" alt=\"\" width=\"225\" height=\"300\" \/> Joonis 1. Makettplaat[\/caption]\r\n\r\nJoonis 1\u00a0 on \u00fche makettplaadi diagramm, kus on vasakul pool on joontega kujutatud makettplaadi kontaktide omavaheline \u00fchendatus. Nagu v\u00f5ite n\u00e4ha on keskmised veerud \u00fchendatud omavahel jadamisi ning \u00fclemised ja alumised kaks rida omakorda jadamisi.\r\n\r\n&nbsp;\r\n<h2>LED tule ehk valgusdioodi \u00fchendamine Raspberry Pi-ga<\/h2>\r\nJ\u00e4rgnevalt vaatame kuidas \u00fchendada valgusdioodi ehk edasiselt LED tuld Raspberry Pi-ga makettplaadi abil. Valgusdioodi kohta kasutatakse rahvusvahelist l\u00fchendit LED (ingl <em>light-emitting diode<\/em> \u2013 valgust kiirgav diood). Kui vaatame LED tuld siis n\u00e4eme, et sellel on kaks n\u00f6 jalga, millest l\u00fchemat nimetatakse katoodiks ning pikemat anoodiks. Anoodile antakse positiivne ja katoodile negatiivne pinge. Vaatame n\u00fc\u00fcd, kuidas \u00fchendada LED valgusti Raspberry Pi-ga nii, et valgusti s\u00fcttiks.\r\n\r\nEsmalt tuleb meil \u00fchendada LED tuli makettplaadiga nii:\r\n\r\n[caption id=\"attachment_1504\" align=\"alignnone\" width=\"300\"]<img class=\"wp-image-1504 size-medium\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_ja_takisti-300x280.jpg\" alt=\"\" width=\"300\" height=\"280\" \/> Joonis 2. LED tuli \u00fchendatud makettplaadiga[\/caption]\r\n\r\nOluline on siinkohal, et j\u00e4lgiksid kumb jalg on LED tule puhul pikem ning kumb l\u00fchem. Selles n\u00e4ites on l\u00fchem jalg \u00fchendatud takistiga. Takistiga \u00fchendame LED tule, et kaitsta seda \u00fclepinge ning l\u00e4bip\u00f5lemise eest.\r\n\r\nKui oled saanud LED tule ja takisti makettplaadiga \u00fchendatud on j\u00e4rgmiseks sammuks selle \u00fchendamine Raspberry Pi viikude ehk n\u00f5eltega juhtmete abil. Selle jaoks loome \u00fchenduse nii:\r\n\r\n[caption id=\"attachment_1506\" align=\"alignnone\" width=\"851\"]<img class=\"wp-image-1506 size-large\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_yhendatud-851x1024.jpg\" alt=\"\" width=\"851\" height=\"1024\" \/> Joonis 3. Raspberry Pi \u00fchendatud LED tulega[\/caption]\r\n\r\n&nbsp;\r\n\r\nJ\u00e4\u00e4b \u00fcle ainult programmeerimine. J\u00e4rgnevalt avame Thonny IDE ehk Pythoni programmeerimiskeskkonna. Selle jaoks mine \u00fclevalt vasakult nurgast kodu nupule -&gt; programmeerimine -&gt; Thonny Python IDE.\r\n\r\nAlustuseks tuleb meil oma programmile lisada teek nimega gpiozero. Selle jaoks kirjutame programmi algusesse <code>from gpiozero import LED<\/code>.\r\n\r\nN\u00fc\u00fcd kui teek on lisatud siis loome uue LED tule objekti, mille abil saame LED tuld sisse ja v\u00e4lja l\u00fclitada. Selle jaoks kirjutame j\u00e4rgmisele reale: led = LED(2). Number 2 t\u00e4hendab, et kasutame Raspberry Pi peal olevat mikron\u00f5ela (edaspidi pin) numbriga 2.\r\n\r\nJ\u00e4\u00e4b \u00fcle ainult led tule sissel\u00fclitamine. Selle jaoks tuleb kirjutada j\u00e4rgmisele reale vaid: <code>led.on()<\/code>.\r\nKogu kood:\r\n<code>from gpiozero import LED<\/code>\r\n<code>led = LED(2)<\/code>\r\n<code>led.on()<\/code>\r\nKui \u00fclesanne on valmis, siis proovi ka LED tuli v\u00e4lja l\u00fclitada. Vihjeks: mis on <code>on <\/code>vastand?\r\n<h2>Mikronupud<\/h2>\r\nNupud t\u00f6\u00f6tavad lihtsal p\u00f5him\u00f5ttel: kui nupp alla vajutada tekib nupu sees kontakt, mis omakorda \u00fchendab vooluringi. Kui nupult surve \u00e4ra v\u00f5tta \u00fchendab ta ennast ise lahti. T\u00e4nanses \u00f5ppetunnis kasutame tavalisi mikronuppe, mida saab h\u00f5lpsasti kasutada makettplaadiga.\r\n\r\nEsmalt on meil vaja \u00fchendada nupp makettplaadiga ning ka Raspberry Pi-ga. \u00dchendus toimib l\u00e4bi pin 3. \u00dcks juhe l\u00e4heb koos koos LED tulega GND pini l\u00e4bi makettplaadi. Teeme seda nii:\r\n\r\n[caption id=\"attachment_1509\" align=\"alignnone\" width=\"783\"]<img class=\"wp-image-1509 size-large\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/nupp-783x1024.jpg\" alt=\"\" width=\"783\" height=\"1024\" \/> Joonis 4. Raspberry Pi \u00fchendatud LED tule ja mikronupuga[\/caption]\r\n\r\nNB! Enne mikronupu asetamist kontrolli, et asetaksid nupu t\u00e4pselt nagu juhendis. Nimelt on nupul kahte t\u00fc\u00fcpi k\u00fcljed, \u00fched on siledad ja teised on kontaktidega. \u00dcks kontaktidega k\u00fclg moodustab \u00fche vooluringi, seega pead juhted \u00fchendama ka \u00fchele poolele.\r\n\r\nPythonis nupu kasutamise jaoks tuleb programmi algusesse lisada: <code>from gpiozero import Button<\/code>.\r\nPythonis saab luua uue nupu objekti sarnaselt LED objektile. Selleks tuleb kirjutada: <code>button = Button(3)<\/code> kus 3 t\u00e4histab pini numbrit.\r\nPythonis saame panna programmi seisma seni kuni nuppu vajutatakse. Selleks tuleb panna nupp ootama j\u00e4rgmise vajutuseni koodiga: <code>button.wait_for_press()<\/code>. Kui programm j\u00f5uab selle k\u00e4suni siis peatatakse k\u00f5ik muu ja oodatakse seni kuni nuppu vajutatakse.\r\nProovime, kas programm t\u00f6\u00f6tab. Kirjuta programm, mis loob uue nupu objekti ning ootab vajutust. Kui nuppu vajutatakse siis programm prindib \u201cNuppu vajutati\u201d. Kui katsetus toimib, siis mine j\u00e4rgmise sammu juurde.\r\n\r\nLoo j\u00e4rgmine programm:\r\n1. Esmalt loo LED objekt\r\n2. Teiseks loo Button objekt\r\n3. L\u00fclita LED tuli sisse\r\n4. Oota kuni vajutatakse nuppu\r\n5. L\u00fclita led tuli v\u00e4lja\r\n6. Kui eelmine samm sai valmis, siis sul on programm, mis l\u00fclitab LED tule nupuvajutusega sisse. N\u00fc\u00fcd soovime aga t\u00e4iendada programmi nii, et saaksime LED tuld sisse ja v\u00e4lja l\u00fclitada nupuvajutusega. Selle jaoks l\u00e4heb meil vaja\r\nl\u00f5putut kordust. Pythonis on selle jaoks while ts\u00fckkel. While ts\u00fckkel t\u00f6\u00f6tab lihtsa p\u00f5him\u00f5tte alusel, kui ts\u00fckli p\u00e4ises (ehk alguses sulgude vahel) olev n\u00f6. k\u00fcsimus on t\u00f5ene siis ts\u00fcklit korratakse, kui see on aga v\u00e4\u00e4r siis ts\u00fckkel l\u00f5petatakse. N\u00e4iteks:\r\n<code>while(minu_nimi = \u201cEero\u201d):<\/code>\r\n<code>print(\u201cTere Eero!\u201d)<\/code>\r\n\r\nSelline ts\u00fckkel t\u00f6\u00f6tab igavesti, kui muutuja <code>minu_nimi<\/code> on \"Eero\", sest ts\u00fckli p\u00e4ises k\u00fcsitakse, kas <code>minu_nimi<\/code> on Eero. Kui see on t\u00f5ene, siis ts\u00fckli kehas olevat koodi korrutatakse seni kuni minu_nimi ei ole enam Eero. Seega selles koodis on l\u00f5putu ts\u00fckkel.\r\nProovi vastata k\u00fcsimusele: mis juhtub kui while ts\u00fckkel algaks nii: <code>while(True):<\/code>?\r\n\r\n\u00dclesanne - nupu sisse- ja v\u00e4ljal\u00fclitamine\r\nEelmisest \u00fclesandest saadud teadmistega loo n\u00fc\u00fcd uus programm. Proovi esmalt programm ilma abita valmis saada. Kui j\u00e4\u00e4d h\u00e4tta siis\u00a0 vaata edasist juhendit.\r\n\r\nVihje: Raspberry Pi v\u00f5ib \u00fche nupuvajutuse asemel tuvastada mitu. Kuidas seda v\u00e4ltida? K\u00f5ige lihtsam viis selle v\u00e4ltimiseks on panna programm seisma l\u00fchikeseks ajaks p\u00e4rast nupuvajutust. Selle jaoks lisame programmi algusesse:\r\n<code>import time<\/code> ja kohe p\u00e4rast nupuvajutuse tuvastamist: <code>time.sleep(0.5)<\/code>, see funktsioon paneb terve programmi pooleks sekundiks seisma.\r\n\r\nLoome programmi, mis toimiks j\u00e4rgnevalt:\r\n1. Loome led tule objekti\r\n2. Loome nupu objekti\r\n3. L\u00fclitame led tule sisse\r\n4. Loome uue muutuja tuli_sees, millele anname algse v\u00e4\u00e4rtuse True\r\n5. Alustame l\u00f5putu while ts\u00fckli\r\n6. Ootame nupuvajutust\r\n7. Kui tuli_sees on True\r\n8. L\u00fclita tuli v\u00e4lja\r\n9. M\u00e4\u00e4ra tuli_sees False6\r\n10. Vastasel juhul\r\n11. L\u00fclita tuli sisse\r\n12. M\u00e4\u00e4ra tuli_sees True\r\n\r\nKas said programmi valmis?\r\n<h2>Valgusfoori \u00fclesanne<\/h2>\r\nJ\u00e4rgnevalt proovi iseseisvalt luua valgusfoor, mis v\u00f5ib koosneda ainult \u00fchest tulest ning nupust. Valgusfooril peaks olema \u00fcks ts\u00fckkel, mis toimub pidevalt, kuid nuppu vajutades aktiveerub teine ts\u00fckkel, p\u00e4rast mida l\u00e4heb valgusfoor tagasi esialgse ts\u00fckli t\u00f6\u00f6 peale.","rendered":"<p>Selle teema eesm\u00e4rgiks on tutvustada kuidas \u00fchendada Raspberry Pi-ga erinevaid riistvaralisi seadmeid ning neid programmeerida. T\u00e4nases \u00f5ppetunnis vaatame kuidas makettplaati kasutada, selle k\u00fclge \u00fchendada lihtsaid nuppe ning LED tulesid.<\/p>\n<h2>Makettplaat<\/h2>\n<p>Makettplaat (ing. keeles\u00a0<em>breadboard<\/em>) on elektroonikas \u00fcks enim kasutatud vahendeid, et kiirelt protot\u00fc\u00fcpe luua. Makettplaadi eeliseks on see, et see v\u00f5imaldab \u00fchendada erinevaid komponente ilma jootmiseta ning lisaks sellele on see ka korduv kastuatav erinevate projektide jaoks. Makettplaadi puhul on oluline m\u00f5ista kuidas on kontaktid selle sees \u00fchendatud.<\/p>\n<figure id=\"attachment_1542\" aria-describedby=\"caption-attachment-1542\" style=\"width: 225px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1542 size-medium\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/20220603_013052-225x300.jpg\" alt=\"\" width=\"225\" height=\"300\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/20220603_013052-225x300.jpg 225w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/20220603_013052-768x1024.jpg 768w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/20220603_013052-1152x1536.jpg 1152w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/20220603_013052-1536x2048.jpg 1536w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/20220603_013052-65x87.jpg 65w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/20220603_013052-350x467.jpg 350w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/20220603_013052-scaled.jpg 1920w\" sizes=\"auto, (max-width: 225px) 100vw, 225px\" \/><figcaption id=\"caption-attachment-1542\" class=\"wp-caption-text\">Joonis 1. Makettplaat<\/figcaption><\/figure>\n<p>Joonis 1\u00a0 on \u00fche makettplaadi diagramm, kus on vasakul pool on joontega kujutatud makettplaadi kontaktide omavaheline \u00fchendatus. Nagu v\u00f5ite n\u00e4ha on keskmised veerud \u00fchendatud omavahel jadamisi ning \u00fclemised ja alumised kaks rida omakorda jadamisi.<\/p>\n<p>&nbsp;<\/p>\n<h2>LED tule ehk valgusdioodi \u00fchendamine Raspberry Pi-ga<\/h2>\n<p>J\u00e4rgnevalt vaatame kuidas \u00fchendada valgusdioodi ehk edasiselt LED tuld Raspberry Pi-ga makettplaadi abil. Valgusdioodi kohta kasutatakse rahvusvahelist l\u00fchendit LED (ingl <em>light-emitting diode<\/em> \u2013 valgust kiirgav diood). Kui vaatame LED tuld siis n\u00e4eme, et sellel on kaks n\u00f6 jalga, millest l\u00fchemat nimetatakse katoodiks ning pikemat anoodiks. Anoodile antakse positiivne ja katoodile negatiivne pinge. Vaatame n\u00fc\u00fcd, kuidas \u00fchendada LED valgusti Raspberry Pi-ga nii, et valgusti s\u00fcttiks.<\/p>\n<p>Esmalt tuleb meil \u00fchendada LED tuli makettplaadiga nii:<\/p>\n<figure id=\"attachment_1504\" aria-describedby=\"caption-attachment-1504\" style=\"width: 300px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1504 size-medium\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_ja_takisti-300x280.jpg\" alt=\"\" width=\"300\" height=\"280\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_ja_takisti-300x280.jpg 300w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_ja_takisti-1024x955.jpg 1024w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_ja_takisti-768x716.jpg 768w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_ja_takisti-1536x1433.jpg 1536w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_ja_takisti-65x61.jpg 65w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_ja_takisti-225x210.jpg 225w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_ja_takisti-350x326.jpg 350w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_ja_takisti.jpg 1960w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><figcaption id=\"caption-attachment-1504\" class=\"wp-caption-text\">Joonis 2. LED tuli \u00fchendatud makettplaadiga<\/figcaption><\/figure>\n<p>Oluline on siinkohal, et j\u00e4lgiksid kumb jalg on LED tule puhul pikem ning kumb l\u00fchem. Selles n\u00e4ites on l\u00fchem jalg \u00fchendatud takistiga. Takistiga \u00fchendame LED tule, et kaitsta seda \u00fclepinge ning l\u00e4bip\u00f5lemise eest.<\/p>\n<p>Kui oled saanud LED tule ja takisti makettplaadiga \u00fchendatud on j\u00e4rgmiseks sammuks selle \u00fchendamine Raspberry Pi viikude ehk n\u00f5eltega juhtmete abil. Selle jaoks loome \u00fchenduse nii:<\/p>\n<figure id=\"attachment_1506\" aria-describedby=\"caption-attachment-1506\" style=\"width: 851px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1506 size-large\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_yhendatud-851x1024.jpg\" alt=\"\" width=\"851\" height=\"1024\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_yhendatud-851x1024.jpg 851w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_yhendatud-249x300.jpg 249w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_yhendatud-768x924.jpg 768w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_yhendatud-1277x1536.jpg 1277w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_yhendatud-1702x2048.jpg 1702w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_yhendatud-65x78.jpg 65w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_yhendatud-225x271.jpg 225w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_yhendatud-350x421.jpg 350w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/LED_yhendatud.jpg 1926w\" sizes=\"auto, (max-width: 851px) 100vw, 851px\" \/><figcaption id=\"caption-attachment-1506\" class=\"wp-caption-text\">Joonis 3. Raspberry Pi \u00fchendatud LED tulega<\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p>J\u00e4\u00e4b \u00fcle ainult programmeerimine. J\u00e4rgnevalt avame Thonny IDE ehk Pythoni programmeerimiskeskkonna. Selle jaoks mine \u00fclevalt vasakult nurgast kodu nupule -&gt; programmeerimine -&gt; Thonny Python IDE.<\/p>\n<p>Alustuseks tuleb meil oma programmile lisada teek nimega gpiozero. Selle jaoks kirjutame programmi algusesse <code>from gpiozero import LED<\/code>.<\/p>\n<p>N\u00fc\u00fcd kui teek on lisatud siis loome uue LED tule objekti, mille abil saame LED tuld sisse ja v\u00e4lja l\u00fclitada. Selle jaoks kirjutame j\u00e4rgmisele reale: led = LED(2). Number 2 t\u00e4hendab, et kasutame Raspberry Pi peal olevat mikron\u00f5ela (edaspidi pin) numbriga 2.<\/p>\n<p>J\u00e4\u00e4b \u00fcle ainult led tule sissel\u00fclitamine. Selle jaoks tuleb kirjutada j\u00e4rgmisele reale vaid: <code>led.on()<\/code>.<br \/>\nKogu kood:<br \/>\n<code>from gpiozero import LED<\/code><br \/>\n<code>led = LED(2)<\/code><br \/>\n<code>led.on()<\/code><br \/>\nKui \u00fclesanne on valmis, siis proovi ka LED tuli v\u00e4lja l\u00fclitada. Vihjeks: mis on <code>on <\/code>vastand?<\/p>\n<h2>Mikronupud<\/h2>\n<p>Nupud t\u00f6\u00f6tavad lihtsal p\u00f5him\u00f5ttel: kui nupp alla vajutada tekib nupu sees kontakt, mis omakorda \u00fchendab vooluringi. Kui nupult surve \u00e4ra v\u00f5tta \u00fchendab ta ennast ise lahti. T\u00e4nanses \u00f5ppetunnis kasutame tavalisi mikronuppe, mida saab h\u00f5lpsasti kasutada makettplaadiga.<\/p>\n<p>Esmalt on meil vaja \u00fchendada nupp makettplaadiga ning ka Raspberry Pi-ga. \u00dchendus toimib l\u00e4bi pin 3. \u00dcks juhe l\u00e4heb koos koos LED tulega GND pini l\u00e4bi makettplaadi. Teeme seda nii:<\/p>\n<figure id=\"attachment_1509\" aria-describedby=\"caption-attachment-1509\" style=\"width: 783px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-1509 size-large\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/nupp-783x1024.jpg\" alt=\"\" width=\"783\" height=\"1024\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/nupp-783x1024.jpg 783w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/nupp-229x300.jpg 229w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/nupp-768x1005.jpg 768w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/nupp-1174x1536.jpg 1174w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/nupp-1565x2048.jpg 1565w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/nupp-65x85.jpg 65w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/nupp-225x294.jpg 225w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/nupp-350x458.jpg 350w, https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-content\/uploads\/sites\/21\/2022\/05\/nupp-scaled.jpg 1957w\" sizes=\"auto, (max-width: 783px) 100vw, 783px\" \/><figcaption id=\"caption-attachment-1509\" class=\"wp-caption-text\">Joonis 4. Raspberry Pi \u00fchendatud LED tule ja mikronupuga<\/figcaption><\/figure>\n<p>NB! Enne mikronupu asetamist kontrolli, et asetaksid nupu t\u00e4pselt nagu juhendis. Nimelt on nupul kahte t\u00fc\u00fcpi k\u00fcljed, \u00fched on siledad ja teised on kontaktidega. \u00dcks kontaktidega k\u00fclg moodustab \u00fche vooluringi, seega pead juhted \u00fchendama ka \u00fchele poolele.<\/p>\n<p>Pythonis nupu kasutamise jaoks tuleb programmi algusesse lisada: <code>from gpiozero import Button<\/code>.<br \/>\nPythonis saab luua uue nupu objekti sarnaselt LED objektile. Selleks tuleb kirjutada: <code>button = Button(3)<\/code> kus 3 t\u00e4histab pini numbrit.<br \/>\nPythonis saame panna programmi seisma seni kuni nuppu vajutatakse. Selleks tuleb panna nupp ootama j\u00e4rgmise vajutuseni koodiga: <code>button.wait_for_press()<\/code>. Kui programm j\u00f5uab selle k\u00e4suni siis peatatakse k\u00f5ik muu ja oodatakse seni kuni nuppu vajutatakse.<br \/>\nProovime, kas programm t\u00f6\u00f6tab. Kirjuta programm, mis loob uue nupu objekti ning ootab vajutust. Kui nuppu vajutatakse siis programm prindib \u201cNuppu vajutati\u201d. Kui katsetus toimib, siis mine j\u00e4rgmise sammu juurde.<\/p>\n<p>Loo j\u00e4rgmine programm:<br \/>\n1. Esmalt loo LED objekt<br \/>\n2. Teiseks loo Button objekt<br \/>\n3. L\u00fclita LED tuli sisse<br \/>\n4. Oota kuni vajutatakse nuppu<br \/>\n5. L\u00fclita led tuli v\u00e4lja<br \/>\n6. Kui eelmine samm sai valmis, siis sul on programm, mis l\u00fclitab LED tule nupuvajutusega sisse. N\u00fc\u00fcd soovime aga t\u00e4iendada programmi nii, et saaksime LED tuld sisse ja v\u00e4lja l\u00fclitada nupuvajutusega. Selle jaoks l\u00e4heb meil vaja<br \/>\nl\u00f5putut kordust. Pythonis on selle jaoks while ts\u00fckkel. While ts\u00fckkel t\u00f6\u00f6tab lihtsa p\u00f5him\u00f5tte alusel, kui ts\u00fckli p\u00e4ises (ehk alguses sulgude vahel) olev n\u00f6. k\u00fcsimus on t\u00f5ene siis ts\u00fcklit korratakse, kui see on aga v\u00e4\u00e4r siis ts\u00fckkel l\u00f5petatakse. N\u00e4iteks:<br \/>\n<code>while(minu_nimi = \u201cEero\u201d):<\/code><br \/>\n<code>print(\u201cTere Eero!\u201d)<\/code><\/p>\n<p>Selline ts\u00fckkel t\u00f6\u00f6tab igavesti, kui muutuja <code>minu_nimi<\/code> on &#8220;Eero&#8221;, sest ts\u00fckli p\u00e4ises k\u00fcsitakse, kas <code>minu_nimi<\/code> on Eero. Kui see on t\u00f5ene, siis ts\u00fckli kehas olevat koodi korrutatakse seni kuni minu_nimi ei ole enam Eero. Seega selles koodis on l\u00f5putu ts\u00fckkel.<br \/>\nProovi vastata k\u00fcsimusele: mis juhtub kui while ts\u00fckkel algaks nii: <code>while(True):<\/code>?<\/p>\n<p>\u00dclesanne &#8211; nupu sisse- ja v\u00e4ljal\u00fclitamine<br \/>\nEelmisest \u00fclesandest saadud teadmistega loo n\u00fc\u00fcd uus programm. Proovi esmalt programm ilma abita valmis saada. Kui j\u00e4\u00e4d h\u00e4tta siis\u00a0 vaata edasist juhendit.<\/p>\n<p>Vihje: Raspberry Pi v\u00f5ib \u00fche nupuvajutuse asemel tuvastada mitu. Kuidas seda v\u00e4ltida? K\u00f5ige lihtsam viis selle v\u00e4ltimiseks on panna programm seisma l\u00fchikeseks ajaks p\u00e4rast nupuvajutust. Selle jaoks lisame programmi algusesse:<br \/>\n<code>import time<\/code> ja kohe p\u00e4rast nupuvajutuse tuvastamist: <code>time.sleep(0.5)<\/code>, see funktsioon paneb terve programmi pooleks sekundiks seisma.<\/p>\n<p>Loome programmi, mis toimiks j\u00e4rgnevalt:<br \/>\n1. Loome led tule objekti<br \/>\n2. Loome nupu objekti<br \/>\n3. L\u00fclitame led tule sisse<br \/>\n4. Loome uue muutuja tuli_sees, millele anname algse v\u00e4\u00e4rtuse True<br \/>\n5. Alustame l\u00f5putu while ts\u00fckli<br \/>\n6. Ootame nupuvajutust<br \/>\n7. Kui tuli_sees on True<br \/>\n8. L\u00fclita tuli v\u00e4lja<br \/>\n9. M\u00e4\u00e4ra tuli_sees False6<br \/>\n10. Vastasel juhul<br \/>\n11. L\u00fclita tuli sisse<br \/>\n12. M\u00e4\u00e4ra tuli_sees True<\/p>\n<p>Kas said programmi valmis?<\/p>\n<h2>Valgusfoori \u00fclesanne<\/h2>\n<p>J\u00e4rgnevalt proovi iseseisvalt luua valgusfoor, mis v\u00f5ib koosneda ainult \u00fchest tulest ning nupust. Valgusfooril peaks olema \u00fcks ts\u00fckkel, mis toimub pidevalt, kuid nuppu vajutades aktiveerub teine ts\u00fckkel, p\u00e4rast mida l\u00e4heb valgusfoor tagasi esialgse ts\u00fckli t\u00f6\u00f6 peale.<\/p>\n","protected":false},"author":34,"menu_order":4,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-1446","chapter","type-chapter","status-web-only","hentry"],"part":1419,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters\/1446","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/users\/34"}],"version-history":[{"count":14,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters\/1446\/revisions"}],"predecessor-version":[{"id":1543,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters\/1446\/revisions\/1543"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/parts\/1419"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapters\/1446\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/media?parent=1446"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/pressbooks\/v2\/chapter-type?post=1446"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/contributor?post=1446"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/lisamoodulid\/wp-json\/wp\/v2\/license?post=1446"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}