RGB LED cu Arduino Leonardo

Utilizand leduri RGB si combinand cele 3 culori, putem obtine orice culoare dorim. Marele avantaj al ledurilor, monocrome sau RGB este ca ne semnalizeaza pentru proiecte mai complexe, in ce stare se afla programul nostru, fie ca le aprindem sau stingem, fie ca le coloram intr-un anumit mod pe care il intelegem.

Asadar, sa va dau 3 exemple:

1. Avem un program arduino care prin intermediul unui senzor de temperatura ne citeste temperatura din casa. Daca este prea mica coloreaza in rosu, daca este acceptabila coloreaza in galben, daca este ok coloreaza verde, samd.

2. Avem un server definit pe o placa arduino cu un shield ethernet. De fiecare data cand un client face un GET la server sa “beculeasca”  de 2 ori (multumesc unei colege ca m-a invatat termenul).

3. Daca avem un robotel care se calibreaza (un line follower spre exemplu) vrem ca in momentul calibrarii sa “beculeasca” un LED. Sau daca avem un robot obstacle avoidance pe parcursul intoarcerii ca sa evite obstacolul sa ne aprinda un led.

Asadar LED-urile sunt folosite in folosul nostru pentru control de sanitate, sau chiar debugging.

Vom utiliza pentru acest tutorial un LED RGB cu Anod comun legat la PIN 7, pe placuta Leonardo.

Schema electrica arata in felul urmator.  Practic LEDul RGB contine 3 leduri monocrome, iar noi alegem sa aplicam diverse tensiuni pe fiecare LED/dioda.

Cablare: 

Red – PIN 9

Green – PIN 10

Blue – PIN 11

Anodul comun – PIN 7

Eu am folosit rezistente de 220 Ohmi, fata de cele din figura.

image

Sa vedem acum codul sursa. Vom obtine un set predefinit de culori trimitand prin seriala un anumit string. Arduino il va interpreta si va pune tensiunile pe fiecare dioda asa cum dorim noi.

Codul Arduino

int redPin = 9;
int greenPin = 10;
int bluePin = 11;
int startLEDpin = 7;
String color = “”;
String tmp = “”; 

void setup()
{
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT); 
pinMode(startLEDpin,OUTPUT);
Serial.begin(9600);
}

void setColor(int red, int green, int blue)
{
analogWrite(redPin, red);
analogWrite(greenPin, green);
analogWrite(bluePin, blue); 
}

void loop()

if (Serial.available() > 0) {
/* read the most recent byte */
while(Serial.available() > 0) {
color+=char(Serial.read());
}
}

if (color == “red”) {
setColor(0, 255, 255); // red
delay(1000);
color=””;
Serial.write(“Red branch \n”);
digitalWrite(9, LOW);
}
else if (color == “start”) { 
digitalWrite(7, HIGH);
}
else if (color == “stop”) { 
digitalWrite(7, LOW);
}
else if (color == “green”) {
setColor(255, 0, 255); // green
delay(1000);
color=””;
Serial.write(“Green branch \n”);
digitalWrite(10, LOW);
}
else if (color == “blue”) {
setColor(255, 255, 0); // blue
delay(1000);
color=””;
Serial.write(“Blue branch \n”);
digitalWrite(11, LOW);
}
else if (color == “yellow”) {
setColor(0, 0, 255); // yellow
delay(1000);
color=””;
Serial.write(“Yellow branch \n”);
digitalWrite(10, LOW);
digitalWrite(9, LOW);

}
else if (color == “purple”) {
setColor(0, 80, 0); // purple
delay(1000);
color=””;
Serial.write(“Purple branch \n”);
digitalWrite(9, LOW);
digitalWrite(11, LOW);
}
else if (color == “pink”) {
setColor(0, 255, 128); // pink
delay(1000);
color=””;
Serial.write(“Pink branch \n”);
digitalWrite(9, LOW);
}
else if (color == “brown”) {
setColor(40, 150, 225); // pink
delay(1000);
color=””;
Serial.write(“Brown branch \n”);
}
else if (color == “aqua”) {
setColor(255, 0, 0); // aqua
delay(1000);
color=””;
Serial.write(“Aqua branch \n”);
digitalWrite(10, LOW);
digitalWrite(11, LOW);
}
else {
//Serial.write(“Else branch:”); Serial.println(color);
color=””;
delay(1000);
}
}

Rezultat video aici.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s