Lekce 3 - Připojíme LED diodu a tlačítka

23.12.2012 18:35

Dnes si k Arduinu připojíme nějakou LED diodu a poté i dvě tlačítka. Otestujeme si jak digitální výstup, tak i digitální vstup. K našim hrátkám budeme potřebovat:

  • Arduino
  • nepájivé kontaktní pole
  • 2 tlačítka
  • LED dioda
  • 1ks rezistor 1,2 kΩ
  • 2ks rezistor 10 kΩ
  • propojovací vodiče 

 

     Výrobu propojovacích vodičů jsem si ukázali v předchozí lekci. LED diodu můžete použít liibovolnou. Z tlačítek vzhledem k použití se mi nejvíce osvědčil typ P-DT6SW z nabídky firmy GME za cenu cca 13 Kč. Mikrospínače s nepajivém kontaktním poli často nedrží a je nutná jejich dodatečná úprava.

     Po zapojení LED diody podle obrázku níže si naše Arduino napragramuje tak, aby naše dioda blikala.

     Led diodu jsme připojili na digitální výstup 10 přes odpor 1,2kOhmu k GND a to z důvodu, že LED dioda není stavěná na 5V, ale na 2,1V. Teď k samotnému programu pro blikání LED. 


int LEDka = 10;                 // LED připojena na pin 10

void setup()
  {
    pinMode(LEDka, OUTPUT);    // pin 10 nastaven jako výstup 
  }

void loop()
{
  digitalWrite(LEDka, HIGH);    // pin 10 na vysokou úroveň
  delay(500);                   // čekej 500ms
  digitalWrite(LEDka, LOW);     // pin 10 na nízkou úroveň
  delay(500);                   // čekej 500ms
}

Těm, co se LED diaoda rozblikala gratuluji a nyní poustoupíme k další části tutoriálu a připojíme tlačitko podle následujícího schématu.

Omlouvám se za chybu na obrázku, tlačítko musí být připojeno k +5V a ne k GND !!!!

Program:

int LEDka = 10; // LED připojena na pin 10

int TLAC = 9;   // Tlacitko pripojeno na pin 9

 

void setup()
  {
    pinMode(LEDka, OUTPUT); // pin 10  nastaven jako výstup 
    pinMode(TLAC, INPUT);   // pin 9  nastaven jako vstup
  }
void loop()
{
  /*
  pomocí funkce digitalRead( pin )
  přečteme hodnotu a pomocí funkce 
  digitalWrite(pin, hodnota) ji zapišeme na pin,
  kde je připojena LEDka 
  
  alternativní zápis je:
  val = digitalRead(TLAC);
  digitalWrite(LEDka, val);  
  */
 
  digitalWrite(LEDka, digitalRead(TLAC));
}

 Jak již jste určitě vyzkoušeli LED dioda svítí pouze, když je zmáčkuté tlačítko. Nyní program trošku zmodifuikujeme a tlačítko nyní bude mít funkci tzv. START/STOP. Stiskem LEDku rozsvítíme a dalším stiskem diodu zhasneme.

 

int LEDka = 10; // LED připojena na pin 10
int TLAC = 9;  // Tlacitko pripojeno na pin 9
boolean svetlo = false; // Pomocná hodnota světlo
 
 
void setup()
  {
    pinMode(LEDka, OUTPUT);    // pin 10  nastaven jako výstup 
    pinMode(TLAC, INPUT);    // pin 9  nastaven jako vstup
    
  }
void loop()
{
  // když je hodnota na tlačítku vysoká (true)
  if (digitalRead(TLAC))
  {
   //když je světlo, udělej tmu a naopak
   if (svetlo) svetlo = false; else svetlo = true;
   //zapiš hodnotu světla na výstup
   digitalWrite(LEDka, svetlo);
   //dokud je tlačítko sepnuté čekej 50ms
   while (digitalRead(TLAC)) delay(50);
  }
}
 
 
Video jak by mělo tlačítko fungovat v obou případech:

Diskusní téma: Lekce 3 - Připojíme LED diodu a tlačítka

pozdě

Petr 07.05.2017
sice píšu 5 let po vydání článku, tak nevím zda ještě někdo čte koment, ale chybí mi tam věta: int val = 0; . (doufám, že jsem si jí vymyslel správně, každopádně to funguje). Jinak dík za návody moc mi pomáhají.


P.

Re: pozdě

jenyk_cz 18.10.2021
teď jsem to přečetl a stejně to nechápu

Re: Re: pozdě

Pynkas 18.10.2021
já taki ne!

Re: Re: Re: pozdě

xxxxxxx 26.07.2023
Pokud píšeš "taki" tak se celkem nedivím že to nechápeš.

Good info

Pharmc513 16.08.2016
Very nice site!

Good info

Pharmk743 11.08.2016
Very nice site!

Rezistor 10kOhm

Franta 30.03.2015
Z jakého důvodu je ve schématu použit ten rezistor 10kOhm?

Re: Rezistor 10kOhm

gilhad 27.05.2015
pullup/pulldown - pokud není pin připojen tlačítkem (něčím jiným) k nějakému napětí (typicky 5V nebo 0V), tak ho "slabě přitáhne" ke svému napětí. Pokut stisknete tlačítko, tak jeho odpor je nepatrný, tudíž přitáhne pin ke svému zdroji a ten odpor přetluče (10kOhm je tolik, že skoro všechno je menší odpor a neteče jím skoro žádný proud).
Účelem je, aby vždy byla na pinu nějaká definovaná hodnota a nevisel jen tak ve vzduchu a nezkoušel chytat radiové vlny a jiné šumy.

zase mi to nefunguje!

jarda 27.01.2015
zkoušel jsem nahrát tento zdroják i na pin 2.

int LED = 2;

void setup()
{
pinMode(LED, OUTPUT);
}
void loop()
{
digitalWrite(LED, HIGH);
delay(500);
digitalWrite(LED, LOW);
delay(500);
}

Ale pořád to nefunguje sem tak nešťastnej ACHJO!

Re: zase mi to nefunguje!

George 15.02.2015
Pin D2 = 4. nožička na ATMEGA328. A na arduinu je rozdíl A2 a D2. V tomto případě se to rovná D2
1 | 2 | 3 | 4 | 5 >>

Přidat nový příspěvek