Operácie

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

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