This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
et:examples:digi:switch [2015/02/26 12:07] – raivo.sell | et:examples:digi:switch [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ~~PB~~ | + | < |
====== Lüliti ====== | ====== Lüliti ====== | ||
//Vajalikud teadmised: | //Vajalikud teadmised: | ||
[HW] [[et: | [HW] [[et: | ||
- | [AVR] [[et: | + | [AVR] [[et: |
[LIB] [[et: | [LIB] [[et: | ||
- | [PRT] [[et: | + | [PRT] [[et: |
===== Teooria ===== | ===== Teooria ===== | ||
Line 47: | 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 76: | 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 123: | 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 nuppude kontaktide põrkumise filtreerimise näidisprogramm | // Kodulabori nuppude kontaktide põrkumise filtreerimise näidisprogramm | ||
Line 137: | 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); |
if(counter == 1) led_on(led_yellow); | if(counter == 1) led_on(led_yellow); | ||
- | else led_off(led_yellow); | + | else led_off(led_yellow); |
if(counter == 2) led_on(led_red); | if(counter == 2) led_on(led_red); | ||
- | else led_off(led_red); | + | else led_off(led_red); |
// Loenduri suurendamine ja mooduli 3 võtmine | // Loenduri suurendamine ja mooduli 3 võtmine | ||
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 175: | Line 176: | ||
<code c> | <code c> | ||
- | // Kodulabori nuppude testimise näidisprogramm. | + | // Kodulabori nuppude testimise näidisprogramm |
#include < | #include < | ||
Line 185: | 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 191: | 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); |
if(button_read(S2)) led_on(led_yellow); | if(button_read(S2)) led_on(led_yellow); | ||
- | else led_off(led_yellow); | + | else led_off(led_yellow); |
if(button_read(S3)) led_on(led_red); | if(button_read(S3)) led_on(led_red); | ||
- | else led_off(led_red); | + | else led_off(led_red); |
} | } | ||
} | } | ||
</ | </ |