Arduino Nano a RGB led pásek

LED pásky už rozhodně nejsou žádná horká novinka a proto jsem se rozhodl nějaký na vyzkoušení zakoupit. S obyčejným jednobarevným se toho krom jednoduchého osvětlení či dekorace moc vymyslet nedá, takže jsem zvolil rovnou provedení RGB. To znamená, že každá LED dioda pásku je ve skutečnosti složena ze tří - červené, zelené a modré. Regulováním intezity jasu jednotlivých barev lze pak namíchat velké množství barevných odstínů - viz RGB na Wikipedii.

Jak to bude fungovat?

Princip je velmi jednoduchý, tři potenciometry jsou zapojeny jako děliče napětí, takže otáčením knoflíku měníme napětí na jezdci v rozmezí 0 až 5V, to pak A/D převodník Arduina převede na hodnoty 0 až 1023. Dalším krokem je použití PWM - pulse width modulation, což nám umožní plynulou regulaci jasu LED. Arduino umožňuje 8 bitovou PWM, v praxi to znamená, že hodnotu jasu můžeme zadat od 0 do 255. Drobným mezikrokem je tedy přizpůsobení hodnoty z 10 bitového A/D převodníku na 8 bitové rozlišení PWM, což rozhodně není žádný matematický oříšek - postačí dělení čtyřmi. Krom tohoto manuálního ovládání lze samozřejmě prolínání nebo přeblikávání barev předem naprogramovat, tak jak můžete vidět na videu.

Zapojení

K napájení LED pásku je potřeba 12V, podle tohoto napětí jsou vypočtené i hodnoty ochranných odporů, které pásek obsahuje. Odpadá tedy obvyklá nutnost zařadit do série s LED odpor, výrobce to už udělal za nás. Protože jsem neměl poruce vhodný adaptér, který by poskytoval napětí 12V, použil jsem stabilizátor 7812. Není to ale příliš ideální, protože dochází ke zbytečným ztrátám a zahřívání. Proto stabilizátor nenajdete ve schématu zapojení a je pouze uvedeno potřebné napětí 12V. Arduino samozřejmě musí mít napájení 5V, doporučuji použít stabilizátor 7805 s chladičem a nikoliv interní stabilizátor Arduina, který by se mohl přehřátím poškodit. Dále na schématu snad není co vysvětlovat. Celý nápad jsem zrealizoval na univerzálním plošném spoji a Arduino Nano umístil do dutinkových lišt. Ty jsou zapájené, ale samotné Arduino lze kdykoliv vyndat a použít v jiném projektu.

Arduino Nano je svými schopnostmi identické s verzemi Duemilanove nebo UNO, ale výhodovou jsou právě malé rozměry a možnost umístění do plošného spoje nebo nepájivého kontaktního pole. To dokáže zpříjemnit práci na téměř každém projektu, protože se obejdeme bez otravného tahání kabelů a výroby konektorů mezi Arduinem a deskou vlastní výroby. Velkým záporem je ale vyšší cena. Stejně jako další verze ho můžete zakoupit na internetovém obchodě www.czechduino.cz

Na závěr přidávám i kód, který celému projektu vdechne život:

int pwmR;
int pwmG;
int pwmB;

void setup()
{
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
}

void loop()
{
// výpočet intenzity jednotlivých barev
pwmR = analogRead(2)/4;
pwmG = analogRead(1)/4;
pwmB = analogRead(0)/4;

barva(pwmR, pwmG, pwmB);

// stisknutí tlačítka spustí automatický režim
if(digitalRead(17) == 1)
  {
  for (int c = 1; c <= 3; c++) 
    {stridani_barev();}
  delay(1000);
  for (int c = 1; c <= 2; c++) 
    {prolinani_barev(10);}
  }
}

// funkce pro rozsvícení barevného odstínu
// v parametru zadáváme intenzitu
// jednotlivých barev (červená, zelená, modrá)
void barva(int R, int G, int B)
{
analogWrite(9, R);
analogWrite(10, G);
analogWrite(11, B);
}

// automatické prostřídání barev
void stridani_barev()
{
barva(255,0,0); // červená
delay(500);
barva(255,255,0); // žlutá
delay(500);
barva(0,255,0); // zelená
delay(500);
barva(0,255,255); // azurová
delay(500);
barva(0,0,255); // modrá
delay(500);
barva(255,0,255); // purpurová
delay(500);
barva(0,0,0); 
}

// postupné prolínání barev
// rychlost závisí na parametru pauza
void prolinani_barev(int pauza)
{
for(int i; i <= 255; i++)
  {
  barva(255-i, i, 0);
  delay(pauza);
  }
  
for(int i; i <= 255; i++)
  {
  barva(0, 255-i, i);
  delay(pauza);
  }

for(int i; i <= 255; i++)
  {
  barva(i, 0, 255-i);
  delay(pauza);
  }
}

- Stránka vytvořena 29. ledna 2011