Institute of Computer Science
  1. Main page
  2. Programmeerimine lastele ja noortele
ET
Log in

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.

  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment