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:

Zpět

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

Datum
Vložil
Titulek

Re: Re: Re: pozdě

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

Datum
Vložil
Titulek

Re: Re: pozdě

já taki ne!

Datum
Vložil
Titulek

Re: pozdě

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

Datum
Vložil
Titulek

pozdě

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.

Datum
Vložil
Titulek

Good info

Very nice site!

Datum
Vložil
Titulek

Good info

Very nice site!

Datum
Vložil
Titulek

Re: Rezistor 10kOhm

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.

Datum
Vložil
Titulek

Rezistor 10kOhm

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

Datum
Vložil
Titulek

Re: zase mi to nefunguje!

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

Datum
Vložil
Titulek

zase mi to nefunguje!

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!

1 | 2 | 3 | 4 | 5 >>

Vyhledávání

arduino8.cz © 2015 Všechna práva vyhrazena.