blog.ijacek007.cz

Blog o všem trochu jinak.

Jakmile se kě mě dostal modul ARDUINO měl jsem chuť osadit jej do zkušební desky a začít se učit jak jej používat a co vše s jeho možností lze sestrojit. Jako první jsem si ale zapojil všech dvanáct digitálních výstupů a pokusil jsem se je použít pro rozsvícení světelné led diody. Posbíral jsem tedy součástky a začal jsem je vkládat do zkušebního pole.


zapojení běžícího světla na nepajívem kontaktním poli

Zapojení je velice primitivní a spočívá vlastně jen v tom, umístit na zkušební desku dvanáct led diod s odpory a spojit každou diodu z jedním digitálním výstupem.


schéma zapojení

Pak je již na řadě samotné naprogramování postupného rozsvěcení led diod. Pro účel testu jsem si vytvořil počítadlo, do kterého jsem postupně přidával či odebíral kroky. Každý krok tak vždy patřil jednomu digitálnímu výstupu a to je celé. V konečném efektu vznikne běžící světlo, které se posunuje od první do dvanácté led diody a zase zpět. Tím vytvoří efekt známý z filmu Knight Rider z osmdesátých let.

Celý kód je velmi jednoduchý a skládá se vlastně jen z pár podmínek.

/*
 Ijacek.007
 Blog.ijacek007.cz
*/

int led1 = 13;
int led2 = 12;
int led3 = 11;
int led4 = 10;
int led5 = 9;
int led6 = 8;
int led7 = 7;
int led8 = 6;
int led9 = 5;
int led10 = 4;
int led11 = 3;
int led12 = 2;

int krok = 0;
int nahoru=1;

// the setup routine runs once when you press reset:
void setup() {
  // initialize the digital pin as an output.
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led7, OUTPUT);
  pinMode(led8, OUTPUT);
  pinMode(led9, OUTPUT);
  pinMode(led10, OUTPUT);
  pinMode(led11, OUTPUT);
  pinMode(led12, OUTPUT);
}

// the loop routine runs over and over again forever:

void loop(){

 if (nahoru==1){
     krok=krok + 1;
 }else{
     krok=krok-1;
 }

  delay(100);

 if (krok ==1 ) {  digitalWrite(led1, HIGH);   }else{ digitalWrite(led1, LOW); }

 if (krok ==2 ) {  digitalWrite(led2, HIGH);   }else{ digitalWrite(led2, LOW); }

 if (krok ==3 ) {  digitalWrite(led3, HIGH);   }else{ digitalWrite(led3, LOW); }

 if (krok ==4 ) {  digitalWrite(led4, HIGH);   }else{ digitalWrite(led4, LOW); }

 if (krok ==5 ) {  digitalWrite(led5, HIGH);   }else{ digitalWrite(led5, LOW); }

 if (krok ==6 ) {  digitalWrite(led6, HIGH);   }else{ digitalWrite(led6, LOW); }

 if (krok == 7) {  digitalWrite(led7, HIGH);   }else{ digitalWrite(led7, LOW); }

 if (krok == 8) {  digitalWrite(led8, HIGH);   }else{ digitalWrite(led8, LOW); }

 if (krok == 9) {  digitalWrite(led9, HIGH);   }else{ digitalWrite(led9, LOW); }

 if (krok == 10) { digitalWrite(led10, HIGH);  }else{ digitalWrite(led10, LOW);}

 if (krok == 11) { digitalWrite(led11, HIGH);  }else{ digitalWrite(led11, LOW);}

 if (krok == 12) { digitalWrite(led12, HIGH);  }else{ digitalWrite(led12, LOW);}


 if (krok==12){
 nahoru=0;
 }
 if (krok ==1)
{
 nahoru =1;

}

}

Máme 12 výstupů, a proto 12 kroků, kdy každý krok je určen jedné led diodě. Kroky se první začnou přičítat a tím se postupně bude rozsvěcet led, která je závislá, právě na konkrétním kroku. Jakmile dojdeme ke kroku 12, což je poslední dioda, řekneme programu že má místo přičítání, kroky odčítat. Proměnné nahoru nastavíme hodnotu 0 a tím kroky začneme odčítat. Led diody začnou rozsvěcet v opačném pořadí. Jakmile dosáhneme kroku 1 opět nastavíme proměnou nahoru na 1 a tím se zase začnou kroky přičítat. Tak to jde vlastně pořád dokola.


zapojení na nepájivém poli.

Na videu si můžete prohlédnout, jak to celé vypadá. Nejprve je vidět zapnutí modulu, kdy se pouze program načte. Jakmile je však nahrán program, světlo se již chová přesně tak jak jsem Vám popsal.

Soubory ke stažení

Zdrojový kod progamu

Schéma zapojení do programu Fritzing


Štítky článku elektronika | programovani | stavebnice |
Autor Ijacek.007 17.06.2012 zobrazeno 15 724x
Předchozí článek Pořídil jsem si ARDUINO NANO v3
Arduino zapojení pro měření teploty s DS18S20 Další článek


1

deravej_kotel

2014-02-02 12:54:47

Ten zdroják to je děs :D Nee jako fakt, vždyť by to šlo napsat jednim cyklem for :) a jednotlivé porty ledek narvat do pole, než vytvářet tunu intů


gravatar2iconblog.ijacek007.cz

Ijacek.007

2014-02-02 22:08:23

jj však to taky není nijak optimalizovány prostě je to jednoduchý kód. Všechno se dá udělat lepe ale pro ukázku fungování to bohatě stačí.


gravatar3

Stanislav

2016-04-04 10:03:44

Dobrý den, bylo by možné naprogramovat arduino tak. aby led se postupně rozsvěcovaly a až se rozsvítí celá řada aby zhasly a opět se postupně rozsvěcovali a to v rychlejším sledu ( blinkr). Děkuji


gravatar4iconblog.ijacek007.cz

Ijacek.007

2016-04-04 10:16:19

samozřejmě naprogramovat by to šlo :-)


gravatar

Vložit komentář

Nick *:
WWW:
Email * (nezobrazuje se ):
Gravatar:
Pamatuj si mě:
Komentář článku *:
Opiš následující text: *

* - vyžadované údaje. RSS kanál s komentáři

Přihlášení



Audioknihy

Jsme milovníci audio knížek, kterých aktuálně máme zakoupených 426. Poslech všech dohromady zabral přes 5945 hodin.

Z tohoto množství jsme si již stihli poslechnout téměř 48% tedy 203 audioknih.

Aktuálně poslouchaná audioknihakniha je Orlova kořist

Poslední hodnocenou audioknihou je Marek Dvořák: Mezi nebem a pacientem Hodnocení audioknihy 4/5.

Nejlépe hodnocenou audioknihou je Astronautův průvodce životem na Zemi Hodnocení audioknihy 4/5.

Reklama