Programovanie AVR v jazyku C: Rozdiel medzi revíziami
Zo stránky SensorWiki
Bez shrnutí editace |
Bez shrnutí editace |
||
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 z 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.