Professional Documents
Culture Documents
Arduino Dioda RGB
Arduino Dioda RGB
Wprowadzenie
Przeczytaj
Prezentacja mul medialna
Sprawdź się
Dla nauczyciela
Arduino – dioda RGB
Na pierwszy rzut oka diody RGB wyglądają jak zwykłe białe diody LED. Problemy zaczynają
się, jeżeli spróbujemy podłączyć taką diodę do zasilania. Dlaczego? Zwykła dioda LED ma
dwie nóżki. W diodzie RGB pojawiają się kolejne dwa wyprowadzenia. Nie są one równe.
Jedna nóżka jest zdecydowanie dłuższa niż pozostałe trzy. Jest to katoda lub anoda.
Dzięki diodzie RGB możemy uzyskać nie tylko trzy podstawowe kolory: czerwony, zielony
i niebieski. Jeśli zastosujemy modulację szerokości impulsu (PWM), otrzymamy całe
spektrum barw.
Twoje cele
Dioda RGB jest bardzo ciekawym urządzeniem – może emitować światło o każdej barwie.
Dzieje się tak, ponieważ w diodzie wbudowano trzy chipy; każdy z nich jest zasilany
osobno. Jeżeli przez wszystkie anody popłynie taki sam prąd, to jednocześnie zostanie
włączone światło czerwone, zielone i niebieskie. Po zmieszaniu tych barw otrzymamy kolor
biały. Jeżeli natomiast zasilimy jedynie pierwszy chip, to dioda będzie świeciła tylko na
czerwono. Można to regulować zarówno sprzętowo, jak i programowo.
Przy zakupie diody RGB warto pamiętać, gdzie ją nabyliśmy lub wziąć notę katalogową. Jest
to istotne podczas obliczania, jakie rezystory są nam potrzebne. W przypadku diody, której
używamy, parametry pracy to:
kolor czerwony: prąd 25 mA, napięcie 2 V,
kolor zielony: prąd 25 mA, napięcie 3,5 V,
kolor niebieski: prąd 25 mA, napięcie 3,5 V.
Jeżeli będziemy włączać światło białe, czerwone, zielone lub niebieskie, to nie ma
znaczenia, z których pinów płytki Arduino skorzystamy. Gdy jednak chcemy uzyskać kolory
pośrednie, używamy pinów o numerach, przy których umieszczono oznaczenie „~” (tylda).
Są to piny PWM (z ang. Pulse Width Modulation), czyli umożliwiające modulowanie
szerokości impulsu.
Zatrzymajmy się na chwilę. W schemacie barw RGB składowe mogą przyjmować wartości
z zakresu 0–255. Załóżmy, że składowe mają wartości: 255, 0, 0. W efekcie uzyskamy kolor
czerwony. Przyjmując: 0, 255, 0, otrzymamy kolor zielony. Analogicznie postępujemy
z kolorem niebieskim, który uzyskamy, zakładając wartości: 0, 0, 255. Gdybyśmy wszystkie
składowe ustawili na 0, otrzymalibyśmy kolor czarny. Natomiast trzy składowe o wartości
255 dałyby kolor biały.
Jak to się odnosi do pinów PWM? Cechą charakteryzującą sygnał PWM jest współczynnik
wypełnienia. Opisuje on, jaką część sygnału stanowi stan niski, a jaką wysoki. Stan niski
odpowiada składowej RGB o wartości 0, a stan wysoki – składowej równej 255. Nie
zamieścimy tu żadnego wzoru, lecz narysujemy impulsy.
Jeżeli impuls złożony jest w 100% ze stanu wysokiego, czyli składowa koloru wynosi 255, to
dioda świeci pełnią blasku. Każda zmiana stanu procentowego na niższy powoduje słabsze
świecenie diody. Otrzymujemy więc zupełnie inny kolor światła. W rezultacie jesteśmy
w stanie sterować barwą światła emitowanego przez diodę RGB.
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
Zobaczmy, jak schemat RGB działa w przypadku monitora. Użyjemy wartości, które zostały
pokazane na rysunku powyżej, przy założeniu, że schemat dotyczy tylko pierwszego chipu,
odpowiedzialnego za barwę czerwoną.
Schemat podłączenia jednej diody RGB ze wspólną katodą do płytki Arduino Uno.
Instrukcja:
1. Wpinamy diodę tak, aby każda nóżka znalazła się w innym wierszu szyny danych płytki
stykowej.
2. Katodę łączymy bezpośrednio (lub przez szynę ujemną, jeżeli tak będzie wygodniej)
z pinem GND płytki Arduino.
3. Pierwszą anodę łączymy przez rezystor (120 Ω) z pinem 9., drugą (czyli trzecią nóżkę)
przez rezystor 62 Ω z pinem 10., a ostatnią, również przez rezystor 62 Ω, z pinem 11.
W naszym przykładzie zamieniliśmy miejscami dwa ostatnie połączenia, ponieważ
w naszej diodzie kolory są ułożone następująco: czerwony, niebieski, zielony.
1 int RedPin = 9;
2 int BluePin = 10;
3 int GreenPin = 11;
1 void setup() {
2 pinMode(RedPin, OUTPUT);
3 pinMode(GreenPin, OUTPUT);
4 pinMode(BluePin, OUTPUT);
5 }
3. Wewnątrz funkcji loop() włączamy kolor czerwony. Aby dioda świeciła tylko tą barwą,
dla pozostałych należy wyłączyć napięcie. Warto też określić opóźnienie.
1 void loop() {
2 digitalWrite(RedPin, HIGH);
3 digitalWrite(GreenPin, LOW);
4 digitalWrite(BluePin, LOW);
5 delay(1000);
6 }
1 digitalWrite(RedPin, LOW);
2 digitalWrite(GreenPin, HIGH);
3 digitalWrite(BluePin, LOW);
4 delay(1000);
5
6 digitalWrite(RedPin, LOW);
7 digitalWrite(GreenPin, LOW);
8 digitalWrite(BluePin, HIGH);
9 delay(1000);
1 digitalWrite(RedPin, HIGH);
2 digitalWrite(GreenPin, HIGH);
3 digitalWrite(BluePin, HIGH);
4 delay(1000);
6. Następnie wymieszamy kolor czerwony z niebieskim, a wyłączymy barwę zieloną.
1 digitalWrite(RedPin, HIGH);
2 digitalWrite(GreenPin, LOW);
3 digitalWrite(BluePin, HIGH);
4 delay(1000);
1 digitalWrite(RedPin, HIGH);
2 digitalWrite(GreenPin, HIGH);
3 digitalWrite(BluePin, LOW);
4 delay(1000);
1 digitalWrite(RedPin, LOW);
2 digitalWrite(GreenPin, HIGH);
3 digitalWrite(BluePin, HIGH);
4 delay(1000);
Kolory powinny zmieniać się w podanej wyżej kolejności. Najlepiej widać to, gdy patrzymy
na diodę z góry, a nie z boku. Pamiętaj jednak, że napięcie, które otrzymują poszczególne
chipy, jest maksymalne i dioda świeci pełnią blasku. Nie wpatruj się w nią zatem zbyt długo,
ponieważ naprawdę bardzo razi w oczy.
Znajdź rezystor i dodaj go do każdej anody diody LED. Dla koloru czerwonego ustaw
wartość 120 Ω. Dla koloru zielonego i niebieskiego wartość rezystora wynosi 62 Ω.
Dodaj teraz moduł Arduino Uno do okna symulacji.
Przejdźmy teraz do pisania kodu. W tym celu klikamy na przycisk Kod, z listy rozwijanej
wybieramy Tekst, potwierdzamy chęć zmiany widoku i czyścimy zawartość.
Przepisz kod układu do sterowania diodą RGB ze wspólną katodą i uruchom symulację.
Kolor czerwony:
Kolor zielony:
Kolor biały:
Kolor czerwony i niebieski:
Film nawiązujący do treści lekcji dotyczącej diody RGD. Na filmie uruchomiono program
przechodzący przez wszystkie kolory po kolei - dioda świeci kolejno na czerwono, zielono,
niebiesko, biało, fioletowo, żółto i błękitno.
Słownik
piny PWM
Polecenie 1
Zapoznaj się ze sposobem sterowania kolorem diody RGB, a następnie zaproponuj własną
wersję lampki RGB, bazującą na różnych przejściach kolorów.
h ps://zpe.gov.pl/b/P11bJ81zo
h ps://zpe.gov.pl/b/P11bJ81zo
h ps://zpe.gov.pl/b/P11bJ81zo
1 int RedPin = 9;
2 int BluePin = 10;
3 int GreenPin = 11;
h ps://zpe.gov.pl/b/P11bJ81zo
Następnie w ciele funkcji setup() ustawiamy
piny jako wyjściowe.
1 void setup() {
2 pinMode(RedPin,
OUTPUT);
3 pinMode(GreenPin,
OUTPUT);
4 pinMode(BluePin,
OUTPUT);
5 }
h ps://zpe.gov.pl/b/P11bJ81zo
1 void loop() {
2 analogWrite(RedPin,
170);
3 analogWrite(GreenPin,
20);
4 analogWrite(BluePin,
10);
5 }
1 void loop() {
2 analogWrite(RedPin,
170);
3 analogWrite(GreenPin,
20);
4 analogWrite(BluePin,
10);
5 delay(1000);
6
7 analogWrite(RedPin,
3);
8 analogWrite(GreenPin,
126);
9 analogWrite(BluePin,
246);
10 delay(1000);
11 }
h ps://zpe.gov.pl/b/P11bJ81zo
h ps://zpe.gov.pl/b/P11bJ81zo
1 int RedPin = 9;
2 int BluePin = 10;
3 int GreenPin = 11;
4 int wypelnienie = 0;
5
6 void setup() {
7 pinMode(RedPin,
OUTPUT);
8 pinMode(GreenPin,
OUTPUT);
9 pinMode(BluePin,
OUTPUT);
10 }
11
12 void loop() {
13 for (wypelnienie = 0;
wypelnienie < 255;
wypelnienie++) {
14
analogWrite(RedPin, 0);
15
analogWrite(GreenPin, 0);
16
analogWrite(BluePin,
wypelnienie);
17 delay(10);
18 }
19 }
h ps://zpe.gov.pl/b/P11bJ81zo
1 for (wypelnienie = 0;
wypelnienie < 255;
wypelnienie++) {
2 analogWrite(RedPin,
0);
3 analogWrite(GreenPin,
0);
4 analogWrite(BluePin,
255 - wypelnienie);
5 delay(10);
6 }
h ps://zpe.gov.pl/b/P11bJ81zo
1 int RedPin = 9;
2 int BluePin = 10;
3 int GreenPin = 11;
4 int wypelnienie = 0;
5
6 void setup() {
7 pinMode(RedPin,
OUTPUT);
8 pinMode(GreenPin,
OUTPUT);
9 pinMode(BluePin,
OUTPUT);
10 }
11
12 void loop() {
13 for (wypelnienie = 0;
wypelnienie < 255;
wypelnienie++) {
14
analogWrite(RedPin,
wypelnienie);
15
analogWrite(GreenPin, 0);
16
analogWrite(BluePin, 0);
17 delay(10);
18 }
19
20 for (wypelnienie = 0;
wypelnienie < 255;
wypelnienie++) {
21
analogWrite(RedPin, 255 -
wypelnienie);
22
analogWrite(GreenPin,
wypelnienie);
23
analogWrite(BluePin, 0);
24 delay(10);
25 }
26
27 for (wypelnienie = 0;
wypelnienie < 255;
wypelnienie++) {
28
analogWrite(RedPin, 0);
29
analogWrite(GreenPin, 255
- wypelnienie);
30
analogWrite(BluePin,
wypelnienie);
31 delay(10);
32 }
33
34 for (wypelnienie = 0;
wypelnienie < 255;
wypelnienie++) {
35
analogWrite(RedPin,
wypelnienie);
36
analogWrite(GreenPin, 0);
37
analogWrite(BluePin, 255 -
wypelnienie);
38 delay(10);
39 }
40 }
Film nawiązujący do treści lekcji dotyczącej diody RGD. Na filmie przedstawiono płytkę
stykową z wpiętymi przewodami, rezystorami oraz wpiętą diodę RGB. Uruchomiono
program przechodzący przez wszystkie kolory po kolei - dioda świeci kolejno na czerwono,
zielono, niebiesko, biało, fioletowo, żółto.
Do tej symulacji nie musimy modyfikować połączenia naszej diody RGB z Arduino Uno.
Film przedstawia działanie programu. Na filmie widoczne jest okno przeglądarki z otwartą
stroną tinkercad. Pod adresem strony znajduje się pasek tytułowy "0931 Arduino – dioda
RGB (sterowaie kolorem diody RGB)". Poniżej znajduje się pole, w którym umieszczono
płytkę stykową. W płytkę wpięto diodę LED RGB. W środek płytki wpięto również trzy
rezystory. Po lewej stronie płytki stykowej w polu umieszczono moduł Arduino UNO. Masę
(GND) połączono z katodą. Podpięto również wolne nóżki rezystorów do Arduino: kolor
czerwony diody do pinu D9, kolor niebieski diody do pinu D10, kolor zielony diody do pinu
D11. Po prawo znajduje się okno zatytułowane „Tekst”, a w nim znajduje się następująca
część kodu: 7. pinMode (RedPin, OUTPUT); 8. pinMode (GreenPin, OUTPUT); 9. pinMode
(BluePin, OUTPUT); 10. } 11. 12. void loop() { 13. for (wypelnienie = 0; wypelnienie < 255;
wypelnienie++) { 14. analogWrite(RedPin, wypelnienie); 15. analogWrite(GreenPin, 0); 16.
analogWrite(BluePin, 0); 17. delay(10); 18. } 19. 20. for (wypelnienie = 0; wypelnienie < 255;
wypelnienie++) { 21. analogWrite(RedPin, 255 - wypelnienie); 22. analogWrite(GreenPin,
wypelnienie); 23. analogWrite(BluePin, 0); 24. delay(10); 25. } 26. 27. for (wypelnienie = 0;
wypelnienie < 255; wypelnienie++) { 28. analogWrite(RedPin, 0); 29. analogWrite(GreenPin,
255 - wypelnienie); 30. analogWrite(BluePin, wypelnienie); 31. delay(10); 32. } 33. 34. for
(wypelnienie = 0; wypelnienie < 255; wypelnienie++) { 35. analogWrite(RedPin,
wypelnienie); 36. analogWrite(GreenPin, 0); 37. analogWrite(BluePin, 255 - wypelnienie);
38. delay(10); 39. } 40. } Pod kodem znajduje się poziomy pasek z napisem „Konsola
szeregowa”. Po wybraniu opcji „Uruchom symulację”, dioda zaczyna świecić na czerwono,
następnie na żółto, na zielono, błękitno, niebiesko, fioletowo i znowu na czerwono.
Sprawdź się
niebieski.
czerwony.
zielony.
Ćwiczenie 2 輸
Dopasuj podpisy do ilustracji
Schemat z diodą RGB ze wspólną katodą Schemat z diodą RGB ze wspólną anodą
Ćwiczenie 3 醙
Dokończ zdanie. Zapis analogWrite(255) da na wyjściu .
Ćwiczenie 4 醙
Ćwiczenie 6 難
Napisz kod włączający co sekundę poszczególne kolory diody RGB ze wspólną anodą.
Ćwiczenie 7 難
Zaprogramuj zbudowany układ z diodą RGB (ze wspólną anodą) tak, aby płynnie włączać,
a następnie wyłączać kolor czerwony.
Ćwiczenie 8 難
Zaprogramuj zbudowany układ z diodą RGB (ze wspólną anodą) tak, aby dioda migała co
sekundę, emitując białe światło.
Dla nauczyciela
Grupa docelowa:
Podstawa programowa:
3) stosuje dobre praktyki w zakresie ochrony informacji wrażliwych (np. hasła, pin),
danych i bezpieczeństwa systemu operacyjnego, objaśnia rolę szyfrowania informacji;
kompetencje cyfrowe;
kompetencje osobiste, społeczne i w zakresie umiejętności uczenia się;
kompetencje matematyczne oraz kompetencje w zakresie nauk przyrodniczych,
technologii i inżynierii.
Strategie nauczania:
konstruktywizm;
konektywizm.
dyskusja;
rozmowa nauczająca z wykorzystaniem multimedium i ćwiczeń interaktywnych.
Formy pracy:
praca indywidualna;
praca w parach;
praca w grupach;
praca całego zespołu klasowego.
Środki dydaktyczne:
Przebieg lekcji
Przed lekcją:
Faza wstępna:
Faza realizacyjna:
Faza podsumowująca:
Praca domowa:
Materiały pomocnicze:
Wskazówki metodyczne:
Treści w sekcji „Prezentacja multimedialna” można wykorzystać jako materiał służący
powtórzeniu materiału.