INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(
Dioda rgb pozwala na świecenie w trzech różnych kolorach: czerwonym, zielonym i niebieskim. Poprzez zastosowanie odpowiedniego kodu do arduino, możemy sprawić że te kolory będą świeciły na przemian, lub nawet mieszały się ze sobą!
W tym poradniku dowiecie się jak podłączyć taką diodę do arduino, i sprawić by świeciła ona w różnych kolorach i uzyskacie płynne przechodzenie kolorów pomiędzy sobą.
Do projektu potrzebne będą:
-Płytka stykowa;
-Dioda RGB ze wspólną anodą;
-Arduino UNO (wraz z kablem usb)
-3 rezystory o rezystancji 200 Ω każdy;
-Kable do płytki stykowej (najlepiej w kolorach odpowiadających pinom w diodzie);
-Opcjonalnie jakaś gąbeczka lub pianka którą można nałożyć na diodę w celu lepszego rozproszenia koloru.
Zaczynajmy!
Najpierw pokaże wam który pin odpowiada któremu kolorowi w diodzie:
Następnie wkładamy naszą diodę w płytkę stykową:
Arduino podaje napięcie 5V, dioda potrzebuje odrobinę mniej dlatego wpinamy rezystory do każdego pinu odpowiadającemu kolorowi.
Teraz do każdego wyjścia z diody podłączamy kabelki:
I podłączamy je do arduino w następujący sposób:
Zielony do pinu 9, czerwony do pinu 6 a niebieski do pinu 5.
Kabel od zasilania podłączamy pod pin 5V po drugiej stronie Arduino.
Opcjonalnie zakładamy piankę na diodę:
Część techniczna już za nami, teraz trzeba zaopatrzyć się w kod:
1 2 3 4 |
#define GREEN 9 #define BLUE 5 #define RED 6 #define delayTime 20 |
void setup() {
pinMode(GREEN, OUTPUT);
pinMode(BLUE, OUTPUT);
pinMode(RED, OUTPUT);
digitalWrite(GREEN, HIGH);
digitalWrite(BLUE, HIGH);
digitalWrite(RED, HIGH);
}
int redVal;
int blueVal;
int greenVal;
void loop() {
int redVal = 255;
int blueVal = 0;
int greenVal = 0;
for( int i = 0 ; i < 255 ; i += 1 ){
greenVal += 1;
redVal -= 1;
analogWrite( GREEN, 255 – greenVal );
analogWrite( RED, 255 – redVal );
delay( delayTime );
}
redVal = 0;
blueVal = 0;
greenVal = 255;
for( int i = 0 ; i < 255 ; i += 1 ){
blueVal += 1;
greenVal -= 1;
analogWrite( BLUE, 255 – blueVal );
analogWrite( GREEN, 255 – greenVal );
delay( delayTime );
}
redVal = 0;
blueVal = 255;
greenVal = 0;
for( int i = 0 ; i < 255 ; i += 1 ){
redVal += 1;
blueVal -= 1;
analogWrite( RED, 255 – redVal );
analogWrite( BLUE, 255 – blueVal );
1 2 3 |
delay( delayTime ); } } |
(kod nie jest mój, należy do użytkownika cyragia ze strony instructables.com)
Kod wklejamy do programu Arduino i wysyłamy na nasze urządzenie.
GOTOWE! Nasza dioda powinna świecić w kolorach od czerwonego do zielonego aż po niebieski!
Efekt:
https://www.youtube.com/watch?v=e4oKmie5bcM
INFORMACJA: Poniższy post nie wydostał się z Poczekalni :(
Rezystory nie powinny mieć różnej wartości dla każdego koloru? Każdy kolor z tego co wiem ma inne napięcie przewodzenia
Tutaj jest to opisane: http://digi-led.pl/baza-wiedzy/6-adruino/99-podczamy-diod-led-rgb
YY… kod widzę wzięty z instructables :D
Po przeczytaniu pewnej książki skleciłem dla was coś takiego efekt jest super
/*
Autor:Tomasz Wasinski
wasyl2007
17/05/2014
Szkic sterowanie diodą LED za pomocą PWM.
sygnał PWM można wygenerować za
pomocą funkcji analogWrite(x,y) gdzie x oznacza
pin cyfrowy a y wartość współczynnika wypełnienia
impulsu z (przedziału od 0 do 255 gdzie 255 oznacza
100% wypełnienia
int pauza1 = 5; //różne pauzy dla kombinacji
int pauza2 = 9;
int pauza3 = 13;
int ledPin[] ={
3,5,6};
#define SIZE 3
int i;
void setup()
{
pinMode(ledPin[i], OUTPUT);
}
void loop()
{
flash1();
flash2();
flash3();
flash2();
flash1();
flash3();
}
void flash1()
{
for(int a = 0; a = 0; a–)
{
analogWrite(3,a);
delay(pauza1);
}
}
void flash2()
{
for(int a = 0; a = 0; a–)
{
analogWrite(5,a);
delay(pauza1);
}
}
void flash3()
{
for(int a = 0; a = 0; a–)
{
analogWrite(6,a);
delay(pauza1);
}
}
Bardzo ładna wersja tego kodu. Przy okazji rozwiązałeś kilka moich problemów, dzięki!
próbuję skompilować Twój kod ale w linijkach z funkcją “for” otrzymuję błędy:
error: expected primary-expression before ‘)’ token
kod jest poprawny , jedynie przy dekrementacji musisz zmienić na a–
chyba a– (w sensie dwa minusy po sobie), bo wskakuje jakiś unicode
może tak napiszę: “a- -” bez spacji :-)