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

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

Rezistor 10kOhm

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

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

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!

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

nebliká mi dioda na pinu deset

vložil jsem do arduina tenhle program a nic!

int LED = 10;

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

Datum
Vložil
Titulek

Re: nebliká mi dioda na pinu deset

no program máš správně. Asi bude.problem v zapojení. Nebo otočená LED?

Datum
Vložil
Titulek

Arduino Due

Dobrý den,

nedávno jsem si zakoupil Arduino Due s tím, že bych si udělal domácí automatizaci spolu s jednoduchým zapezpečovacím systémem. Chtěl jsem použít tento jednoduchý skic. viz 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));
}


Více zde: http://arduino8.webnode.cz/news/lekce-3-pripojime-ledku-a-tlacitka/



akorát mám problém, že Led dioda mi svítí neustále, nevíte v čem může být chyba. Mimochodem zkoušel jsem to s Unem a tam to jede v pořádku jenom s tím Due mám problém. Nevíte v čem by mohla být chyba ? Děkuji za odpověď.

1 | 2 | 3 | 4 | 5 >>

Vyhledávání

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