Programovanie AVR v jazyku C
Zo stránky SensorWiki
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.