Arduino kapcsolások

Magyar Arduino

Magyar Arduino

RGB led vezérlés Arduinoval /Alapok/

2015. június 21. - Molnár Bence

RGB led vezérlés Arduinoval

Egy példa analóg kimenet kezelésére. Az RGB LEDeket három LED összeépítéséből hozták
létre. Egy tokban egy vörös(R), egy zöld(G), és egy kék(B) led közös anóddal vagy katóddal ellátva. A három szín keverékéből bármilyen szín előállítható, hasonló elv alapján mint ahogy
a színes tv-k képernyőjén is.

 

Egy egy szín fényerejének csökkentésével vagy növelésével más és
más színt kapunk. A színek fényerejének változtatását impulzus szélesség modulációval, PWM-el
valósítjuk meg. A PWM -nél a kitöltési tényező számít, ez azt jelenti, hogy azonos frekvencián, azonos amplitúdójú jel mennyi ideig van maximumon, vagyis tápfeszültségen:

 

 

100%-os a jel erősség ha folyamatos a tápfeszültség, 80%-os ha 8 egység szélességű tápfeszültség impulzust 2 egység szélességű GND impulzus követ.
50%-os ha a két impulzust szélessége fele-fele, és 0%-os ha nincs tápfeszültség impulzus.
Tehát ha 1 sec alatt csak 200ms ideig van bekapcsolt állapotba a fogyasztó akkor a teljesítménye
is csak 20%-os lesz, ez a PWM lényege.
Ennyit az elméletről, most nézzük a gyakorlatot.

A projektünkhöz a következő alkatrészek szükségesek:

  • Arduino Uno

  • Usb kábel

  • Próbapanel

  • Összekötő vezetékek

  • RGB led (közös katódos)

  • 3db 270ohm-os ellenállás

Most nézzük a kapcsolást:

RGB lednél mindig a leghosszabb láb a közös, a többi lábkiosztása típusonként változik, itt
van egy sematikus ábra a led belső áramköréről:

 

Most nézzük a beírandó sketchet:

/*
Adafruit Arduino - Lesson 3. RGB LED
*/
int redPin = 11;

int greenPin = 10; //változók csatlakozó lábakhoz rendelése
int bluePin = 9;

//a következő sort akkor kell aktíválni ha közös anódos a led
//#define COMMON_ANODE

void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT); //a lábak beállítása kimenetnek
pinMode(bluePin, OUTPUT);
}

// főciklus
void loop()
{
setColor(255, 0, 0); // red ; értékadás a meghívott setColor függvénynek
delay(1000); //várakozás 1sec-ig
setColor(0, 255, 0); // green
delay(1000);
setColor(0, 0, 255); // blue
delay(1000);
setColor(255, 255, 0); // yellow
delay(1000);
setColor(80, 0, 80); // purple
delay(1000);
setColor(0, 255, 255); // aqua
delay(1000);
}

// ez a függvény 3 értéket fogad, amit aztán a 3 kimeneti változóhoz rendel
void setColor(int red, int green, int blue)


{

// ez a ciklus csak akkor lép érvénybe ha definiálva van a COMMON_ANODE
#ifdef COMMON_ANODE
red = 255 - red;
green = 255 – green; // common_anode-nál visszafelé számlálunk
blue = 255 - blue;
#endif //common_anode ciklus vége
analogWrite(redPin, red);
analogWrite(greenPin, green); //a függvény értékeinek kiíratása a kimenetekre
analogWrite(bluePin, blue);
}

 

 

 

A mi kis programunk a beállított színek közt váltogat másodpercenként, lehet próbálkozni
különböző színkeverésekkel, eltérő várakozási időkkel. Meglehet adni a színeket hexadecimális
számokban is(ahogy a PC-k is használják), pl.:
A fehér - #FFFFFF, vagy a fekete - #000000, vagy sötétsárga - #FFCC00
ez a proginkba így adható meg: setColor(0xFF,0xCC,0x0);

További jó kísérletezést!

A bejegyzés trackback címe:

https://magyararduino.blog.hu/api/trackback/id/tr447561550

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

süti beállítások módosítása