Szín orgona RGB leddel

Eddig tanultak alapján építsünk egy nyomógombok segítségével vezérelt RGB LED-es szín keverőt. A nyomógombok jeleit digitálisan érzékeli a mikrokontroller majd ezt feldolgozva az analóg kimeneteken vezérli PWM-el a LED belső diódáit.

Alkatrész szükséglet a következő:
  • Arduino Uno board

  • Usb kábel

  • Próbapanal

  • Összekötő vezetékek

  • 1db RGB LED közös katódos

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

  • 3db Nyomógomb



Rgb led kivezetései:

A leghosszabb kivezetés a közös katód (GND).

Építsük meg a kapcsolást:

Lássuk a sketchet:

/*
Adafruit Arduino - Lesson 7. RGB Fader
*/
int redLEDPin = 11;
int greenLEDPin = 10; // változók hozzárendelése a kimenetekhez
int blueLEDPin = 9;

int redSwitchPin = 7;
int greenSwitchPin = 6; // változók hozzárendelése a bemenetekhez
int blueSwitchPin = 5;

int red = 0;
int blue = 0; // változók létrehozása 0 kezdőértékkel
int green = 0;

void setup()
{
pinMode(redLEDPin, OUTPUT);
pinMode(greenLEDPin, OUTPUT);// kimenetek beállítása
pinMode(blueLEDPin, OUTPUT);
pinMode(redSwitchPin, INPUT_PULLUP);
pinMode(greenSwitchPin, INPUT_PULLUP); // bemenetek beállítása felhúzó ellenállásokkal
pinMode(blueSwitchPin, INPUT_PULLUP);
}

void loop()
{
if (digitalRead(redSwitchPin) == LOW)

// ha az első gomb lenyomva akkor a red változó értékét növeli 1-el

// ha elérte a 255-öt akkor le nullázza a red változót és újra kezdi a számlálást
{
red ++;
if (red > 255) red = 0;
}
if (digitalRead(greenSwitchPin) == LOW)
{

// ha a második gomb lenyomva akkor a green változó értékét növeli 1-el

// ha elérte a 255-öt akkor le nullázza a green változót és újra kezdi a számlálást
green ++;
if (green > 255) green = 0;
}
if (digitalRead(blueSwitchPin) == LOW)
{

// ha a harmadik gomb lenyomva akkor a blue változó értékét növeli 1-el

// ha elérte a 255-öt akkor le nullázza a blue változót és újra kezdi a számlálást
blue ++;
if (blue > 255) blue = 0;
}
analogWrite(redLEDPin, red);
analogWrite(greenLEDPin, green); // a változók értékének hozzárendelése a kimenetekhez
analogWrite(blueLEDPin, blue);
delay(10); // várakozás 10msec-ig
}


Néhány kiegészítés:

pinMode(redSwitchPin, INPUT_PULLUP);
Az INPUT_PULLUP a beépített belső ellenállást kapcsolja be, evvel biztosítva a bemenetek
stabil müködését.

A program minden gombnyomásra növeli a gombhoz hozzárendelt változó értékét eggyel,
amit aztán kirak a megfelelő led kimenetre. A max értéknél nullázza a változót és újra kezdi a
számlálást. Az összeállítás hátránya az egy irányú érték változtatás, ez kiküszöbölhető még
három nyomógombbal ami lehetővé teszi a lefelé váltást, vagy esetlegesen 3 potenciaméterrel .

Szóval lehet még tökéletesíteni, további jó szórakozást!


A projekt Simon Monk után készült.