Operácie

Programovanie AVR v jazyku C

Z SensorWiki

Verzia z 15:04, 21. január 2021, ktorú vytvoril Balogh (diskusia | príspevky)

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

  1. AVR035: Efficient C Coding for AVR. Application note.