A17. RGB ledit - matpi/EmbeddedSystemsUTU GitHub Wiki
RGB-ledit ovat moniväriledejä (R=red, G=green, B=blue), joissa on tyypillisesti neljä jalkaa. RGB-ledit voivat olla joko yhteisanodi- tai yhteiskatodikytkettyjä. Ledin yhteinen anodi/katodi -jalka on yleensä muita ledin jalkoja pidempi. Yhteisanodikytketty RGB-led kytketään virtapiiriin niin, että yhteiseen anodi-jalkaan tuodaan ledille sopiva jännite, ja kolme muuta ledin jalkaa kytketään kukin oman sarjavastuksen kautta virtalähteen miinukselle.
Arduino-ohjattuna yhteisanodi-RGB led toimii siten, että ledin anodi kytketään +5V jännitteeseen, ja muut ledin jalat kukin omaan output pinniinsä vastuksen kautta. Led syttyy, kun output asetetaan nollatilaan. Kun digitaalinen output on nollatilassa, se ikään kuin imee virtaa, joka tulee +5V:sta ledin kautta pinnille. Näin RGB-led on osa suljettua virtapiiriä. Ledin väriä voidaan vaihtaa siten, että halutulla tavalla kytketään yksi kerrallaan kukin kolmesta lediin yhdistetystä output pinnistä nollaksi.
Tee seuraava kytkentä. Tarvitset Arduino Uno tai Arduino Nano boardin, 1 kpl RGB-ledin (yhteisanodikytkentä), sekä 3 kpl 220 ohmin vastuksia.
Seuraavassa kytkennässä on Arduino Uno tai Nano boardin, RGB-ledin ja 220 ohmin vastusten lisäksi 3 kpl painokytkimiä (S1 - S3) sekä 3 kpl 1 kilo-ohmin vastuksia (R1 - R3)
Kopioi seuraava koodi Arduino-ohjelmaan:
int led=13;
int led2=12;
int led3=11;
int p1=8;
int p2=7;
int p3=4;
void setup()
{
pinMode(led,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(p1,INPUT);
pinMode(p2,INPUT);
pinMode(p3,INPUT);
}
void loop()
{
if (digitalRead(p1) == HIGH)
{
digitalWrite(led,LOW);
delay(1000);
}
else
{
delay(5);
digitalWrite(led,HIGH);
digitalWrite(led2,HIGH);
digitalWrite(led3,HIGH);
}
if (digitalRead(p2) == HIGH)
{
digitalWrite(led2,LOW);
delay(1000);
}
else
{
delay(5);
digitalWrite(led,HIGH);
digitalWrite(led2,HIGH);
digitalWrite(led3,HIGH);
}
if (digitalRead(p3) == HIGH)
{
digitalWrite(led3,LOW);
delay(1000);
}
else
{
delay(5);
digitalWrite(led,HIGH);
digitalWrite(led2,HIGH);
digitalWrite(led3,HIGH);
}
}
RGB ledin himmentäminen ja erilaisten värien muodostuminen
Kokeile feidata jotain RGB ledin väreistä seuraavalla koodilla. Kun saat feidauksen toimimaan yhdellä värillä, niin nimeä kahdelle muulle ledille pinnit, ja testaa saatko koodilla feidaamalla "sekotettua" erilaisia värejä.
int led = 11;
void setup() {
pinMode(led,OUTPUT);
}
void loop() {
for (int valoisuus = 20; valoisuus <= 255; valoisuus +=5){
// tai valoisuus ++
analogWrite(led,valoisuus);
delay(30);
}
for (int valoisuus = 255; valoisuus >= 20; valoisuus -=5){
// tai valoisuus ++
analogWrite(led,valoisuus);
delay(30);
}
}