Folosind aceasta de casă puteți face orice culoare în sistemul RGB cu cinci butoane
1 - adăugați roșu
2 - Adăugați Green
3 - Adăugați albastru
4 - Aleator (culoare aleatoare)
5 - Resetare
De ce avem nevoie:
1. Arduino (în cazul meu arduino mega)
2. Comitetul de dezvoltare
3. Tip jumper: tată mama și tata tată
4. LCD 1602 (2 linii de 16 caractere)
5. Butoane 5 bucăți
6. LED SMD RGB
7. Rezistență pentru 10 Kom 5 bucăți
Pentru început, conectăm LED-ul RGB (în absența unui rezistor, punem o rezistență la 220 ohmi).
În continuare, punem 5 butoane: un picior de buton la știftul de 5V, iar celălalt printr-o rezistență de 10K la pământ și același picior spre ardino.
Conectăm afișajul LCD 1602 la SDA și SCL (I2C).
Toate acestea sunt conectate la contacte arduino (GND, 5V, SDA SCL, 2, 3, 4, 9, 10, 11, 12, 13) ca în imagine.
Ei bine, de fapt schița în sine
#include "LiquidCrustal_I2C.h" // conectați biblioteca pentru a lucra cu afișajul prin I2C
#include "Wire.h" // Conectați biblioteca pentru a lucra cu I2C
int R = 9;
int G = 10;
int B = 11;
// culori RGB
int BR = 0;
int BG = 0;
int BB = 0;
// variabile pentru a salva valoarea
int KR = 2; // buton roșu
int KG = 3; // butonul este verde
int KB = 4; // buton albastru
int C = 13; // butonul de resetare
int RS = 12; // butonul la întâmplare
LiquidCrystal_I2C lcd (0x27.16.2); // Conectați afișajul (adresă, coloane, linii)
void setup () {// executați o dată
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
// conectați LED-ul RGB
}
void loop () {// repetați la nesfârșit
întârziere (10); // întârziere 10 ms
lcd.init (); // definiți afișajul
lcd.backlight (); // porniți lumina de fundal a afișajului
lcd.clear (); // ștergeți afișajul
lcd.setCursor (5, 0); // puneți cursorul pe a 6-a coloană și pe 0 rând
lcd.print ("Culoare"); // culoare de scriere
lcd.setCursor (0, 1);
lcd.print ("R"); // scrie R
lcd.setCursor (6, 1);
lcd.print ("G"); / scrie G
lcd.setCursor (12, 1);
lcd.print ("B"); scrie B
lcd.print (BB); // imprimați valoarea albastră
lcd.setCursor (2, 1);
lcd.print (BR); // imprimați valoarea roșu
lcd.setCursor (8, 1);
lcd.print (BG); // imprimați valoarea verde
lcd.setCursor (13, 1);
if (digitalRead (KR) == HIGH) {BR + = 15; } // dacă este apăsat butonul R, atunci valoarea R +15
if (digitalRead (KG) == HIGH) {BG + = 15; } // dacă este apăsat butonul G, atunci valoarea lui G +15
if (digitalRead (KB) == HIGH) {BB + = 15; } // dacă este apăsat butonul B, atunci valoarea B +15
if (digitalRead (C) == HIGH) {BR - = 254; } // dacă este apăsat butonul C, atunci valoarea lui R -254
if (digitalRead (C) == HIGH) {BG - = 254; } // dacă este apăsat butonul C, atunci valoarea lui G -254
if (digitalRead (C) == HIGH) {BB - = 254; } // dacă este apăsat butonul C, atunci valoarea B -254
if (digitalRead (RS) == HIGH) {BR = aleator (0, 254); } // dacă este apăsat butonul RS, atunci valoarea lui R este de la 0 la 254
if (digitalRead (RS) == HIGH) {BG = aleator (0, 254); } // dacă este apăsat butonul RS, atunci valoarea lui G este de la 0 la 254
if (digitalRead (RS) == HIGH) {BB = aleator (0, 254); } // dacă este apăsat butonul RS, atunci valoarea lui B este de la 0 la 254
BR = constrângere (BR, 0, 254); // BR = (valoare, de la, la)
analogWrite (R, BR); // folosind modularea PWM reglăm luminozitatea de la 0 la 254
BG = constrângere (BG, 0, 254); // BG = (valoare, de la, la)
analogWrite (G, BG); // folosind modularea PWM reglăm luminozitatea de la 0 la 254
BB = constrain (BB, 0, 254); // BB = (valoare, de la, la)
analogWrite (B, BB); // folosind modularea PWM reglăm luminozitatea de la 0 la 254
}
Descărcați schița:
Asta ar trebui să fie!
Scrie în comentarii că nu este clar că voi răspunde la toate întrebările
#include "LiquidCrustal_I2C.h" // conectați biblioteca pentru a lucra cu afișajul prin I2C
#include "Wire.h" // Conectați biblioteca pentru a lucra cu I2C
int R = 9;
int G = 10;
int B = 11;
// culori RGB
int BR = 0;
int BG = 0;
int BB = 0;
// variabile pentru a salva valoarea
int KR = 2; // buton roșu
int KG = 3; // butonul este verde
int KB = 4; // buton albastru
int C = 13; // butonul de resetare
int RS = 12; // butonul la întâmplare
LiquidCrystal_I2C lcd (0x27.16.2); // Conectați afișajul (adresă, coloane, linii)
void setup () {// executați o dată
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
// conectați LED-ul RGB
}
void loop () {// repetați la nesfârșit
întârziere (10); // întârziere 10 ms
lcd.init (); // definiți afișajul
lcd.backlight (); // porniți lumina de fundal a afișajului
lcd.clear (); // ștergeți afișajul
lcd.setCursor (5, 0); // puneți cursorul pe a 6-a coloană și pe 0 rând
lcd.print ("Culoare"); // culoare de scriere
lcd.setCursor (0, 1);
lcd.print ("R"); // scrie R
lcd.setCursor (6, 1);
lcd.print ("G"); / scrie G
lcd.setCursor (12, 1);
lcd.print ("B"); scrie B
lcd.print (BB); // imprimați valoarea albastră
lcd.setCursor (2, 1);
lcd.print (BR); // imprimați valoarea roșu
lcd.setCursor (8, 1);
lcd.print (BG); // imprimați valoarea verde
lcd.setCursor (13, 1);
if (digitalRead (KR) == HIGH) {BR + = 15; } // dacă este apăsat butonul R, atunci valoarea R +15
if (digitalRead (KG) == HIGH) {BG + = 15; } // dacă este apăsat butonul G, atunci valoarea lui G +15
if (digitalRead (KB) == HIGH) {BB + = 15; } // dacă este apăsat butonul B, atunci valoarea B +15
if (digitalRead (C) == HIGH) {BR - = 254; } // dacă este apăsat butonul C, atunci valoarea lui R -254
if (digitalRead (C) == HIGH) {BG - = 254; } // dacă este apăsat butonul C, atunci valoarea lui G -254
if (digitalRead (C) == HIGH) {BB - = 254; } // dacă este apăsat butonul C, atunci valoarea B -254
if (digitalRead (RS) == HIGH) {BR = aleator (0, 254); } // dacă este apăsat butonul RS, atunci valoarea lui R este de la 0 la 254
if (digitalRead (RS) == HIGH) {BG = aleator (0, 254); } // dacă este apăsat butonul RS, atunci valoarea lui G este de la 0 la 254
if (digitalRead (RS) == HIGH) {BB = aleator (0, 254); } // dacă este apăsat butonul RS, atunci valoarea lui B este de la 0 la 254
BR = constrângere (BR, 0, 254); // BR = (valoare, de la, la)
analogWrite (R, BR); // folosind modularea PWM reglăm luminozitatea de la 0 la 254
BG = constrângere (BG, 0, 254); // BG = (valoare, de la, la)
analogWrite (G, BG); // folosind modularea PWM reglăm luminozitatea de la 0 la 254
BB = constrain (BB, 0, 254); // BB = (valoare, de la, la)
analogWrite (B, BB); // folosind modularea PWM reglăm luminozitatea de la 0 la 254
}