This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
et:examples:digi:switch [2014/10/08 07:42] – raivo.sell | et:examples:digi:switch [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | < | ||
====== Lüliti ====== | ====== Lüliti ====== | ||
- | //Vajalikud teadmised: [HW] [[et: | + | //Vajalikud teadmised: |
+ | [HW] [[et: | ||
+ | [AVR] [[et: | ||
+ | [LIB] [[et: | ||
+ | [PRT] [[et: | ||
===== Teooria ===== | ===== Teooria ===== | ||
Line 42: | Line 47: | ||
// Lõputu tsükkel | // Lõputu tsükkel | ||
- | while (true) | + | while (1) |
{ | { | ||
- | // nupule | + | // Nupule |
// mis süttib nupu alla vajutades | // mis süttib nupu alla vajutades | ||
if(pin_get_value(S1) == 1) | if(pin_get_value(S1) == 1) | ||
Line 71: | Line 76: | ||
===== Praktika ===== | ===== Praktika ===== | ||
- | Kodulabori Kasutajaliidese mooduli plaadil on kolm surunupp-lülitit. Lülitid ühendavad | + | Kodulabori Kasutajaliidese mooduli plaadil on kolm surunupp-lülitit. Lülitid ühendavad |
Lülitite asukohad on toodud riistvarakirjelduses. Lülitite oleku lugemiseks tuleb mikrokontrolleri vastavad viigud määrata sisendiks. AVR siseseid //pull-up// takisteid ei pea tööle rakendama, sest, nagu öeldud, viikudel juba on välised takistid. Kui nupp alla vajutada, on viigule vastaval siinil biti väärtus 0, kui nupp lahti lasta, siis väärtus 1. Selleks et näha, kas mikrokontroller sai nupuvajutusest aru, võib kasutada plaadil olevaid LED indikaatoreid. | Lülitite asukohad on toodud riistvarakirjelduses. Lülitite oleku lugemiseks tuleb mikrokontrolleri vastavad viigud määrata sisendiks. AVR siseseid //pull-up// takisteid ei pea tööle rakendama, sest, nagu öeldud, viikudel juba on välised takistid. Kui nupp alla vajutada, on viigule vastaval siinil biti väärtus 0, kui nupp lahti lasta, siis väärtus 1. Selleks et näha, kas mikrokontroller sai nupuvajutusest aru, võib kasutada plaadil olevaid LED indikaatoreid. | ||
Line 118: | Line 123: | ||
See funktsioon kasutab viite tekitamise funktsiooni, | See funktsioon kasutab viite tekitamise funktsiooni, | ||
- | Järgnev näide illustreerib nuppude kasutamist ja mitmekordse loenduse | + | Järgnev näide illustreerib nuppude kasutamist ja mitmekordse loenduse |
<code c> | <code c> | ||
- | // Kodulabori | + | // Kodulabori nuppude kontaktide põrkumise filtreerimise näidisprogramm |
- | // nuppude kontaktide põrkumise filtreerimise näidisprogramm | + | |
#include < | #include < | ||
Line 133: | Line 137: | ||
pin_setup_output(led_yellow); | pin_setup_output(led_yellow); | ||
pin_setup_output(led_green); | pin_setup_output(led_green); | ||
+ | |||
// Nupu viigu sisendiks seadmine | // Nupu viigu sisendiks seadmine | ||
pin_setup_input(S1); | pin_setup_input(S1); | ||
- | // Lõputu | + | // Lõputu |
- | while(1) | + | while (1) |
{ | { | ||
- | // Kontrollime, | + | // Nupu alla vajutamise kontroll |
if(button_read(S1)) | if(button_read(S1)) | ||
{ | { | ||
- | // Loenduri väärtusele vastava | + | // Loenduri väärtusele vastava |
if(counter == 0) led_on(led_green); | if(counter == 0) led_on(led_green); | ||
else led_off(led_green); | else led_off(led_green); | ||
Line 153: | Line 158: | ||
counter = (counter + 1) % 3; | counter = (counter + 1) % 3; | ||
- | // Ootame nupu lahtilaskmist | + | // Nupu vabastamise ootamine |
while(button_read(S1) != 0); | while(button_read(S1) != 0); | ||
} | } | ||
Line 160: | Line 165: | ||
</ | </ | ||
- | Kui nüüd programmi proovida, siis LED-id süttivad täpselt sellises järjekorras nagu kasutaja nupplülitit vajutab. | + | Kui nüüd programmi proovida, siis LED-id süttivad täpselt sellises järjekorras nagu kasutaja nupplülitit vajutab. Nuppude kasutamise näidiskood põhineb Kodulabori viikude teegil, mida on tutvustatud valgusdioodi näites. |
- | + | ||
- | Nuppude kasutamise näidiskood põhineb Kodulabori viikude teegil, mida on tutvustatud valgusdioodi näites. | + | |
Tabelis on näha teegis kirjeldatud nuppude konstandid ja vastavad Kontrollermooduli viigud. | Tabelis on näha teegis kirjeldatud nuppude konstandid ja vastavad Kontrollermooduli viigud. | ||
Line 168: | Line 171: | ||
|S0|PC2|PQ2|Kontrollermoodulil olev testnupp| | |S0|PC2|PQ2|Kontrollermoodulil olev testnupp| | ||
|S1|PC0|PH2|Kasutajaliidese moodulil olev alumine nupp| | |S1|PC0|PH2|Kasutajaliidese moodulil olev alumine nupp| | ||
- | |S2|PC1|PH1|Kasutajaliidese moodulil olev keskmine nupp| | + | |S2|PC1|PH1|Kasutajaliidese\ moodulil\ olev\ keskmine\ nupp| |
|S3|PC2|PH0|Kasutajaliidese moodulil olev ülemine nupp| | |S3|PC2|PH0|Kasutajaliidese moodulil olev ülemine nupp| | ||
<code c> | <code c> | ||
- | // Kodulabori | + | // Kodulabori nuppude testimise |
- | // nuppude testimise | + | |
#include < | #include < | ||
Line 184: | Line 186: | ||
pin_setup_output(led_yellow); | pin_setup_output(led_yellow); | ||
pin_setup_output(led_green); | pin_setup_output(led_green); | ||
+ | |||
// Nuppude viikude sisendiks seadmine | // Nuppude viikude sisendiks seadmine | ||
pin_setup_input(S1); | pin_setup_input(S1); | ||
Line 190: | Line 193: | ||
// Lõputu tsükkel | // Lõputu tsükkel | ||
- | while (true) | + | while (1) |
{ | { | ||
// Igale nupule vastab üks LED, | // Igale nupule vastab üks LED, | ||
- | // mis süttib | + | // mis süttib |
if(button_read(S1)) led_on(led_green); | if(button_read(S1)) led_on(led_green); | ||
else led_off(led_green); | else led_off(led_green); |