miercuri, 23 decembrie 2009

Controlul unui LED RGB cu Arduino Duemilanove

Ce este un LED RGB? Un LED RGB este un LED care are 3 culori:
  • rosu
  • albastru
  • verde
si are 4 pini, dintre care unu mai lung(acela este pinul GND).
Bineinteles ca putem crea si noi un LED RGB cu ajutorul a 3 leduri, cu respectivele culori.
Vreti sa controlati un LED RGB cu arduino? Sunt mai multe "metode" dar cele mai importante din punctul meu de vedere sunt doar 2 "metode":
  • random
  • cu potentiometru
Am stabilit ca fiind cele mai importante aceste 2 "metode" deoarece de la ele se pot modifica si concepe alte "metode".
Aici va voi prezenta cum sa controlati un LED RGB cu ajutorul unei placute, Arduino Duemilanove, random:
COD:
int pin1 = 9;
int pin2 = 10;
int pin3 = 11;
long value3;
long value2;
long value1;
long current_value3;
long current_value2;
long current_value1;
int x;
void setup()
{
randomSeed(analogRead(0));
value1 = random(255);
current_value1 = value1;
value2 = random(255);
current_value2 = value2;
value3 = random(255);
current_value3 = value3;
analogWrite(pin1, current_value1);
analogWrite(pin2, current_value2);
analogWrite(pin3, current_value3);
value1 = random(255);
value2 = random(255);
value3 = random(255);
}
void loop()
{
x = random(3, 9);
// prima culoare
if (value1 > current_value1)
{
current_value1++;
analogWrite(pin1, current_value1);
delay(x);
}
if (value1 < current_value1)
{
current_value1--;
analogWrite(pin1, current_value1);
delay(x);
}
if (value1 == current_value1)
{
analogWrite(pin1, current_value1);
value1 = random(255);
}
// a doua culoare
if (value2 > current_value2)
{
current_value2++;
analogWrite(pin2, current_value2);
delay(x);
}
if (value2 < current_value2)
{ current_value2--;
analogWrite(pin2, current_value2);
delay(x);
}
if (value2 == current_value2)
{
analogWrite(pin2, current_value2);
value2 = random(255);
}
//a treia culoare
if (value3 > current_value3)
{
current_value3++;
analogWrite(pin3, current_value3);
delay(x);
}
if (value3 < current_value3)
{
current_value3--;
analogWrite(pin3, current_value3);
delay(x);
}
if (value3 == current_value3)
{
analogWrite(pin3, current_value3);
value3 = random(255);
}
}
Pinii care se conecteaza la LED-ul RGB trebuie sa fie PWM, si este bine sa puneti la fiecare pin al LED-ului(cathode) o rezistenta de 220 Ohmi.

Niciun comentariu:

Trimiteți un comentariu