Arvutiteaduse instituut
  1. Esileht
  2. Programmeerimine lastele ja noortele
EN
Logi sisse

Programmeerimine lastele ja noortele

  • PEALEHT
  • TUNNIKAVAD
  • HUVILAAGRID

RGB ledi ühendamine ja RGB koodide katsetamine analogWrite abil

Käesolevas juhendis näidatakse, kuidas ühendada värvimuutvat RGB valgusdioodi ning värvide muutmist, kasutades selleks ise defineeritud abifunktsiooni ja analogWrite käsku.

Projekti koostamiseks läheb vaja:

  • 1 x UNO mikrokontroller
  • 1 x USB kaabel
  • 1 x maketeerimislaud
  • 1 x RGB LED
  • 4 x tavalised üksikud isane-isane juhtmed
  • 3 x 330 Ω takisti

Enne komponentide ühendamist tuleb veenduda, et arendusplaat oleks arvuti küljest (ja muudest toidetest) lahti ühendatud.

Algus sarnaneb LED-ide vilgutamise projektile ainult seekord tuleb ühendada LED-i kolm lühemat jalga sarnaselt üksikutele valgusdioodidele, kuna need tähtistavadki ükskuid põhivärvidega LED-e (värviselgitused näidatud eelneval joonisel 64), mille üheaegsel erineva heledusega näitamisel saame luua erinevad värvikombinatsioone. Pesadena tuleb kasutada digitaalpesasid, kus juures on # või ~ märgistus, need pesad võimaldavad pinge muutmist analogWrite käsu abil, selles näites võtame kasutusele 9, 10 ja 11. Kuna tegemist on ühise anoodiga tüüpi RBG LED-iga siis tuleb anood (kõige pikem jalg) ühendada toitega (5 V). Ühendused peaksid sarnanema järgneval joonisel 65 kujutatule.

Nüüd saab avada arenduskeskkonna ja hakata katsetama analogWrite käsu abil värvimängude loomist. Ideid värvide kombineerimiseks saab näiteks leheküljelt: http://www.rapidtables.com/web/color/RGB_Color.htm .

Järgnevas koodiplokis võib näha näidiskoodi, kus defineeritakse abifunktsioon, mis võtab argumentideks põhivärvide tugevused ning segab neid analogWrite käsu abil RGB valgusdioodil. Abifunktsiooni kutsutakse iga sekundi tagant välja erinevate argumentidega, mille tulemuseks on RGB LED-i värvi muutumine 1 sekundi tagant.


//defineerime pesad LED-i jalale vastava värvi järgi
int punanepesa = 11;
int rohelinepesa = 10;
int sininepesa = 9;
int sekund = 1000; //defineerime sekundi millisekundites

void setup()
{
  //seadistame väljundina
  pinMode(punanepesa, OUTPUT);
  pinMode(sininepesa, OUTPUT);
  pinMode(rohelinepesa, OUTPUT);  
}

void loop()
{
  //kutsume välja abifunktsiooni ning punase/sinise/rohelise tugevust reguleerides katsetame eri värve
  segaV2rve(255, 0, 0); //punane
  delay(sekund); //ootame sekundi
  segaV2rve(0, 255, 0); //roheline
  delay(sekund);
  segaV2rve(0, 0, 255); //sinine
  delay(sekund);
  segaV2rve(255,255,0); //kollane
  delay(sekund);
  segaV2rve(0,255,255); //aqua
  delay(sekund);
  segaV2rve(255,0,255); //fuksiaroosa
  delay(sekund);
   segaV2rve(0,128,128); //sinakasroheline
  delay(sekund);
  segaV2rve(255,255,255); //valge
  delay(sekund);
}
//abifunktsioon, millele anname argumendiks punase, rohelise ja sinise tugevuse vastavalt RGB tabelile
void segaV2rve(int punane, int roheline, int sinine)
{
  //kuna tegu ühise anoodiga RGB LED-iga, siis tuleb RGB värvikoodide abil soovitud värvi saamiseks argumentide väärtused vastupidiseks muuta
  punane = 255 - punane;
  roheline = 255 - roheline;
  sinine = 255 - sinine;
  //erinevate värvide saamiseks määrame milline LED millise tugevusega põleb, kasutades analogWrite käsku
  analogWrite(punanepesa, punane);
  analogWrite(rohelinepesa, roheline);
  analogWrite(sininepesa, sinine);  
}

Parema ettekujutuse parajasti põlevast värvist saab, kui LED-ile ümber panna valgest õhukesest A4 paberist toru.

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Tartu Ülikooli arvutiteaduse instituudi kursuste läbiviimist toetavad järgmised programmid:
euroopa sotsiaalfondi logo