Za pomocą tego domowej roboty w systemie RGB można wykonać dowolny kolor za pomocą pięciu przycisków
1 - dodaj czerwony
2 - Dodaj zielony
3 - Dodaj niebieski
4 - Losowo (losowy kolor)
5 - Zresetuj
Czego potrzebujemy:
1. Arduino (w moim przypadku arduino mega)
2. Rada rozwoju
3. Rodzaj skoczka: tata mama i tata tata
4. LCD 1602 (2 linie po 16 znaków)
5. Przyciski 5 sztuk
6. Dioda LED SMD RGB
7. Rezystor na 10 sztuk Kom 5 sztuk
Aby rozpocząć, podłączamy diodę LED RGB (w przypadku braku rezystora, ustaw rezystor na 220 omów).
Następnie wkładamy 5 przycisków: jeden przycisk nogi do styku 5 V, a drugi przez rezystor 10K do ziemi i tę samą nogę do arduino.
Podłączamy wyświetlacz LCD 1602 do SDA i SCL (I2C).
Wszystko to jest podłączone do styków arduino (GND, 5 V, SDA SCL, 2, 3, 4, 9, 10, 11, 12, 13) jak na zdjęciu.
Właściwie sam szkic
#include „LiquidCrustal_I2C.h” // podłącz bibliotekę do pracy z wyświetlaczem przez I2C
#include „Wire.h” // Podłącz bibliotekę do pracy z I2C
int R = 9;
int G = 10;
int B = 11;
// kolory RGB
int BR = 0;
int BG = 0;
int BB = 0;
// zmienne, aby zapisać wartość
int KR = 2; // czerwony przycisk
int KG = 3; // przycisk jest zielony
int KB = 4; // niebieski przycisk
int C = 13; // przycisk resetowania
int RS = 12; // losowy przycisk
LiquidCrystal_I2C lcd (0x27.16.2); // Połącz wyświetlacz (adres, kolumny, wiersze)
void setup () {// uruchom raz
pinMode (R, WYJŚCIE);
pinMode (G, WYJŚCIE);
pinMode (B, WYJŚCIE);
// podłącz diodę RGB
}
void loop () {// powtarzaj w nieskończoność
opóźnienie (10); // opóźnienie 10 ms
lcd.init (); // zdefiniuj sposób wyświetlania
lcd.backlight (); // włącz podświetlenie wyświetlacza
lcd.clear (); // wyczyść wyświetlacz
lcd.setCursor (5, 0); // umieść kursor w 6 kolumnie i 0 rzędzie
lcd.print („Kolor”); // napisz kolor
lcd.setCursor (0, 1);
lcd.print („R”); // napisz R
lcd.setCursor (6, 1);
lcd.print („G”); / napisz G
lcd.setCursor (12, 1);
lcd.print („B”); napisz B
lcd.print (BB); // wydrukuj niebieską wartość
lcd.setCursor (2, 1);
lcd.print (BR); // wydrukuj wartość koloru czerwonego
lcd.setCursor (8, 1);
lcd.print (BG); // wydrukuj zieloną wartość
lcd.setCursor (13, 1);
if (digitalRead (KR) == HIGH) {BR + = 15; } // jeśli wciśnięty jest przycisk R, to wartość R +15
if (digitalRead (KG) == HIGH) {BG + = 15; } // po naciśnięciu przycisku G wartość G +15
if (digitalRead (KB) == HIGH) {BB + = 15; } // jeśli zostanie naciśnięty przycisk B, wówczas wartość B +15
if (digitalRead (C) == HIGH) {BR - = 254; } // jeśli wciśnięty jest przycisk C, to wartość R-254
if (digitalRead (C) == HIGH) {BG - = 254; } // jeśli wciśnięty jest przycisk C, to wartość G-254
if (digitalRead (C) == HIGH) {BB - = 254; } // jeśli naciśnięty zostanie przycisk C, wówczas wartość B -254
if (digitalRead (RS) == HIGH) {BR = losowy (0, 254); } // po naciśnięciu przycisku RS wartość R wynosi od 0 do 254
if (digitalRead (RS) == HIGH) {BG = losowy (0, 254); } // po naciśnięciu przycisku RS wartość G wynosi od 0 do 254
if (digitalRead (RS) == HIGH) {BB = losowy (0, 254); } // po naciśnięciu przycisku RS wartość B wynosi od 0 do 254
BR = ograniczenie (BR, 0, 254); // BR = (wartość, od, do)
analogWrite (R, BR); // za pomocą modulacji PWM dostosowujemy jasność od 0 do 254
BG = ograniczenie (BG, 0, 254); // BG = (wartość, od, do)
analogWrite (G, BG); // za pomocą modulacji PWM dostosowujemy jasność od 0 do 254
BB = ograniczenie (BB, 0, 254); // BB = (wartość, od, do)
analogWrite (B, BB); // za pomocą modulacji PWM dostosowujemy jasność od 0 do 254
}
Pobierz szkic:
Tak powinno być!
Napisz w komentarzach, że nie jest jasne, że odpowiem na wszystkie pytania
#include „LiquidCrustal_I2C.h” // podłącz bibliotekę do pracy z wyświetlaczem przez I2C
#include „Wire.h” // Podłącz bibliotekę do pracy z I2C
int R = 9;
int G = 10;
int B = 11;
// kolory RGB
int BR = 0;
int BG = 0;
int BB = 0;
// zmienne, aby zapisać wartość
int KR = 2; // czerwony przycisk
int KG = 3; // przycisk jest zielony
int KB = 4; // niebieski przycisk
int C = 13; // przycisk resetowania
int RS = 12; // losowy przycisk
LiquidCrystal_I2C lcd (0x27.16.2); // Połącz wyświetlacz (adres, kolumny, wiersze)
void setup () {// uruchom raz
pinMode (R, WYJŚCIE);
pinMode (G, WYJŚCIE);
pinMode (B, WYJŚCIE);
// podłącz diodę RGB
}
void loop () {// powtarzaj w nieskończoność
opóźnienie (10); // opóźnienie 10 ms
lcd.init (); // zdefiniuj sposób wyświetlania
lcd.backlight (); // włącz podświetlenie wyświetlacza
lcd.clear (); // wyczyść wyświetlacz
lcd.setCursor (5, 0); // umieść kursor w 6 kolumnie i 0 rzędzie
lcd.print („Kolor”); // napisz kolor
lcd.setCursor (0, 1);
lcd.print („R”); // napisz R
lcd.setCursor (6, 1);
lcd.print („G”); / napisz G
lcd.setCursor (12, 1);
lcd.print („B”); napisz B
lcd.print (BB); // wydrukuj niebieską wartość
lcd.setCursor (2, 1);
lcd.print (BR); // wydrukuj wartość koloru czerwonego
lcd.setCursor (8, 1);
lcd.print (BG); // wydrukuj zieloną wartość
lcd.setCursor (13, 1);
if (digitalRead (KR) == HIGH) {BR + = 15; } // jeśli wciśnięty jest przycisk R, to wartość R +15
if (digitalRead (KG) == HIGH) {BG + = 15; } // po naciśnięciu przycisku G wartość G +15
if (digitalRead (KB) == HIGH) {BB + = 15; } // jeśli zostanie naciśnięty przycisk B, wówczas wartość B +15
if (digitalRead (C) == HIGH) {BR - = 254; } // jeśli wciśnięty jest przycisk C, to wartość R-254
if (digitalRead (C) == HIGH) {BG - = 254; } // jeśli wciśnięty jest przycisk C, to wartość G-254
if (digitalRead (C) == HIGH) {BB - = 254; } // jeśli naciśnięty zostanie przycisk C, wówczas wartość B -254
if (digitalRead (RS) == HIGH) {BR = losowy (0, 254); } // po naciśnięciu przycisku RS wartość R wynosi od 0 do 254
if (digitalRead (RS) == HIGH) {BG = losowy (0, 254); } // po naciśnięciu przycisku RS wartość G wynosi od 0 do 254
if (digitalRead (RS) == HIGH) {BB = losowy (0, 254); } // po naciśnięciu przycisku RS wartość B wynosi od 0 do 254
BR = ograniczenie (BR, 0, 254); // BR = (wartość, od, do)
analogWrite (R, BR); // za pomocą modulacji PWM dostosowujemy jasność od 0 do 254
BG = ograniczenie (BG, 0, 254); // BG = (wartość, od, do)
analogWrite (G, BG); // za pomocą modulacji PWM dostosowujemy jasność od 0 do 254
BB = ograniczenie (BB, 0, 254); // BB = (wartość, od, do)
analogWrite (B, BB); // za pomocą modulacji PWM dostosowujemy jasność od 0 do 254
}