Programovanie AVR v jazyku C: Rozdiel medzi revíziami
Z SensorWiki
Riadok 7: | Riadok 7: | ||
+ | Jedno tlačítko a jedna LED | ||
+ | <tabs><tab> | ||
+ | <source lang="arduino"> | ||
+ | /* Pripojenie periferii k vyvojovej doske Arduino: | ||
+ | * LED Diody LED1 - D13 - PB5 (zabudovana) | ||
+ | * LED2 - D7 - PD7 | ||
+ | * LED3 - A3/D17 - PC3 | ||
+ | * | ||
+ | * Tlacitka TLAC1 - D12 - PB4 | ||
+ | * TLAC2 - D6 - PD6 | ||
+ | * TLAC3 - A2/D16 - PC2 | ||
+ | */ | ||
+ | |||
+ | #define LED1 13 | ||
+ | #define LED2 7 | ||
+ | #define LED3 17 | ||
+ | |||
+ | #define TLAC1 12 | ||
+ | #define TLAC2 6 | ||
+ | #define TLAC3 16 | ||
+ | |||
+ | int State; | ||
+ | |||
+ | void setup() { | ||
+ | |||
+ | State = 1; | ||
+ | |||
+ | pinMode(LED1, OUTPUT); | ||
+ | pinMode(TLAC1, INPUT_PULLUP); | ||
+ | |||
+ | pinMode(LED2, OUTPUT); | ||
+ | pinMode(TLAC2, INPUT_PULLUP); | ||
+ | pinMode(LED3, OUTPUT); | ||
+ | pinMode(TLAC3, INPUT_PULLUP); | ||
+ | |||
+ | |||
+ | } | ||
+ | |||
+ | void loop() { | ||
+ | |||
+ | if (digitalRead(TLAC1)) | ||
+ | digitalWrite(LED1, LOW); | ||
+ | else | ||
+ | digitalWrite(LED1,HIGH); | ||
+ | |||
+ | /* potialto je to pre studentov, ako ukazka, pripadne to iste s TLAC2 a TLAC 3 ako demo, ze im to dobre funguje. To | ||
+ | * co nasleduje dalej, je uz riesenie R-S klopneho obvodu. S jednym tlacitkom az ked budeme vediet osetrit zakmity | ||
+ | */ | ||
+ | if ( (State==1) && !digitalRead(TLAC3)) | ||
+ | { | ||
+ | digitalWrite(LED2, LOW); | ||
+ | digitalWrite(LED3, HIGH); | ||
+ | State=2; | ||
+ | delay(1); | ||
+ | } | ||
+ | else if ( (State==2) && !digitalRead(TLAC3) ) // na dve tlacitka, teda ak je tu TLAC3 to funguje dobre, na jedno (zmena na TLAC2) nahodne, pretoze nemame osetrene zakmity | ||
+ | { | ||
+ | digitalWrite(LED2,HIGH); | ||
+ | digitalWrite(LED3,LOW); | ||
+ | State=1; | ||
+ | delay(1); | ||
+ | } | ||
+ | |||
+ | /* | ||
+ | if (digitalRead(TLAC3)) | ||
+ | digitalWrite(LED3, LOW); | ||
+ | else | ||
+ | digitalWrite(LED3,HIGH); | ||
+ | |||
+ | */ | ||
+ | } | ||
+ | </source> | ||
+ | </tab></tabs> | ||
== Literatúra == | == Literatúra == | ||
Verzia zo dňa a času 15:04, 21. január 2021
Zatial aspon referencia[REF 1]
Úloha:
Na cvičení predvedieme pripojenie tlačítka, ktoré bude ovládať jednu LED diódu. Vašou úlohou bude pripojiť dve externé diódy a dve tlačítka a spraviť z nich preklápací R-S obvod.
Jedno tlačítko a jedna LED
/* Pripojenie periferii k vyvojovej doske Arduino:
* LED Diody LED1 - D13 - PB5 (zabudovana)
* LED2 - D7 - PD7
* LED3 - A3/D17 - PC3
*
* Tlacitka TLAC1 - D12 - PB4
* TLAC2 - D6 - PD6
* TLAC3 - A2/D16 - PC2
*/
#define LED1 13
#define LED2 7
#define LED3 17
#define TLAC1 12
#define TLAC2 6
#define TLAC3 16
int State;
void setup() {
State = 1;
pinMode(LED1, OUTPUT);
pinMode(TLAC1, INPUT_PULLUP);
pinMode(LED2, OUTPUT);
pinMode(TLAC2, INPUT_PULLUP);
pinMode(LED3, OUTPUT);
pinMode(TLAC3, INPUT_PULLUP);
}
void loop() {
if (digitalRead(TLAC1))
digitalWrite(LED1, LOW);
else
digitalWrite(LED1,HIGH);
/* potialto je to pre studentov, ako ukazka, pripadne to iste s TLAC2 a TLAC 3 ako demo, ze im to dobre funguje. To
* co nasleduje dalej, je uz riesenie R-S klopneho obvodu. S jednym tlacitkom az ked budeme vediet osetrit zakmity
*/
if ( (State==1) && !digitalRead(TLAC3))
{
digitalWrite(LED2, LOW);
digitalWrite(LED3, HIGH);
State=2;
delay(1);
}
else if ( (State==2) && !digitalRead(TLAC3) ) // na dve tlacitka, teda ak je tu TLAC3 to funguje dobre, na jedno (zmena na TLAC2) nahodne, pretoze nemame osetrene zakmity
{
digitalWrite(LED2,HIGH);
digitalWrite(LED3,LOW);
State=1;
delay(1);
}
/*
if (digitalRead(TLAC3))
digitalWrite(LED3, LOW);
else
digitalWrite(LED3,HIGH);
*/
}
Literatúra
- ↑ AVR035: Efficient C Coding for AVR. Application note.