Naudojant tai naminis penkiais mygtukais galite padaryti bet kokią spalvą RGB sistemoje
1 - pridėkite raudoną
2 - pridėkite žalią
3 - pridėkite mėlyną
4 - Atsitiktinė (atsitiktinė spalva)
5 - atstatyti
Ko mums reikia:
1. Arduino (mano atveju arduino mega)
2. Plėtros taryba
3. Džemperio tipas: tėčio mama ir tėčio tėtis
4. LCD 1602 (2 eilutės iš 16 simbolių)
5. Mygtukai 5 vnt
6. SMD RGB šviesos diodas
7. Rezistorius 10 Kom 5 vienetų
Norėdami pradėti, mes prijungiame RGB šviesos diodą (jei nėra rezistoriaus, padėkite rezistorių esant 220 omų).
Toliau mes įdėjome 5 mygtukus: vieno mygtuko koją prijunkite prie 5 V, o kitą - per 10K varžą į žemę, o tą pačią koją - į arduino.
Mes prijungiame LCD 1602 ekraną prie SDA ir SCL (I2C).
Visa tai prijungta prie arduino kontaktų (GND, 5V, SDA SCL, 2, 3, 4, 9, 10, 11, 12, 13), kaip parodyta paveikslėlyje.
Na, iš tikrųjų pats eskizas
#include „LiquidCrustal_I2C.h“ // prijunkite biblioteką darbui su ekranu per I2C
#include "Wire.h" // Prijunkite biblioteką darbui su I2C
int R = 9;
int G = 10;
int B = 11;
// RGB spalvos
int BR = 0;
int BG = 0;
int BB = 0;
// kintamieji reikšmei išsaugoti
int KR = 2; // raudonas mygtukas
int KG = 3; // mygtukas yra žalias
int KB = 4; // mėlynas mygtukas
int C = 13; // atstatymo mygtukas
int RS = 12; // mygtukas atsitiktinis
„LiquidCrystal_I2C LCD“ (0x27.16.2); // Prijunkite ekraną (adresą, stulpelius, eilutes)
void setup () {// paleisti vieną kartą
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
// prijunkite RGB šviesos diodą
}
void loop () {// pakartokite be galo
vėlavimas (10); // vėlavimas 10 ms
lcd.init (); // apibrėžkite ekraną
lcd.backlight (); // įjunkite ekrano foninį apšvietimą
lcd.clear (); // išvalykite ekraną
„lcd.setCursor“ (5, 0); // užveskite žymeklį ant 6 stulpelio ir 0 eilutės
lcd.print („Spalva“); // rašyti spalvą
lcd.setCursor (0, 1);
lcd.print („R“); // parašyti R
„lcd.setCursor“ (6, 1);
lcd.print („G“); / parašyti G
„lcd.setCursor“ (12, 1);
lcd.print („B“); rašyti B
lcd.print (BB); // atsispausdinkite mėlyną vertę
„lcd.setCursor“ (2, 1);
lcd.print (BR); // atsispausdinkite raudonos spalvos reikšmę
„lcd.setCursor“ (8, 1);
lcd.print (BG); // spausdinkite žalią reikšmę
„lcd.setCursor“ (13, 1);
if (digitalRead (KR) == AUKŠTAS) {BR + = 15; } // jei paspaudžiamas mygtukas R, tada R +15 reikšmė
if (digitalRead (KG) == AUKŠTAS) {BG + = 15; } // jei paspaudžiamas mygtukas G, tada vertė G +15
if (digitalRead (KB) == AUKŠTAS) {BB + = 15; } // jei paspaudžiamas mygtukas B, tada vertė B +15
if (digitalRead (C) == AUKŠTAS) {BR - = 254; } // jei paspaudžiamas C mygtukas, tada R -254 reikšmė
if (digitalRead (C) == AUKŠTAS) {BG - = 254; } // jei paspaudžiamas C mygtukas, tada G -254 vertė
if (digitalRead (C) == AUKŠTAS) {BB - = 254; } // jei paspaudžiamas mygtukas C, tada vertė B -254
if (digitalRead (RS) == AUKŠTAS) {BR = atsitiktinis (0, 254); } // Jei paspaudžiamas mygtukas RS, tada R vertė yra nuo 0 iki 254
if (digitalRead (RS) == AUKŠTAS) {BG = atsitiktinis (0, 254); } // Jei paspaudžiamas mygtukas RS, tada G vertė yra nuo 0 iki 254
if (digitalRead (RS) == AUKŠTAS) {BB = atsitiktinis (0, 254); } // Jei paspaudžiamas mygtukas RS, tada B vertė yra nuo 0 iki 254
BR = suvaržymas (BR, 0, 254); // BR = (vertė, nuo, iki)
„analogWrite“ (R, BR); // Naudodami PWM moduliaciją, sureguliuojame ryškumą nuo 0 iki 254
BG = suvaržymas (BG, 0, 254); // BG = (vertė, nuo, iki)
„analogWrite“ (G, BG); // Naudodami PWM moduliaciją, sureguliuojame ryškumą nuo 0 iki 254
BB = suvaržymas (BB, 0, 254); // BB = (vertė, nuo, iki)
„analogWrite“ (B, BB); // Naudodami PWM moduliaciją, sureguliuojame ryškumą nuo 0 iki 254
}
Atsisiųsti eskizą:
Štai koks jis turėtų būti!
Komentaruose parašykite, kad neaišku, ar atsakysiu į visus klausimus
#include „LiquidCrustal_I2C.h“ // prijunkite biblioteką darbui su ekranu per I2C
#include "Wire.h" // Prijunkite biblioteką darbui su I2C
int R = 9;
int G = 10;
int B = 11;
// RGB spalvos
int BR = 0;
int BG = 0;
int BB = 0;
// kintamieji reikšmei išsaugoti
int KR = 2; // raudonas mygtukas
int KG = 3; // mygtukas yra žalias
int KB = 4; // mėlynas mygtukas
int C = 13; // atstatymo mygtukas
int RS = 12; // mygtukas atsitiktinis
„LiquidCrystal_I2C LCD“ (0x27.16.2); // Prijunkite ekraną (adresą, stulpelius, eilutes)
void setup () {// paleisti vieną kartą
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
// prijunkite RGB šviesos diodą
}
void loop () {// pakartokite be galo
vėlavimas (10); // vėlavimas 10 ms
lcd.init (); // apibrėžkite ekraną
lcd.backlight (); // įjunkite ekrano foninį apšvietimą
lcd.clear (); // išvalykite ekraną
„lcd.setCursor“ (5, 0); // užveskite žymeklį ant 6 stulpelio ir 0 eilutės
lcd.print („Spalva“); // rašyti spalvą
lcd.setCursor (0, 1);
lcd.print („R“); // parašyti R
„lcd.setCursor“ (6, 1);
lcd.print („G“); / parašyti G
„lcd.setCursor“ (12, 1);
lcd.print („B“); rašyti B
lcd.print (BB); // atsispausdinkite mėlyną vertę
„lcd.setCursor“ (2, 1);
lcd.print (BR); // atsispausdinkite raudonos spalvos reikšmę
„lcd.setCursor“ (8, 1);
lcd.print (BG); // spausdinkite žalią reikšmę
„lcd.setCursor“ (13, 1);
if (digitalRead (KR) == AUKŠTAS) {BR + = 15; } // jei paspaudžiamas mygtukas R, tada R +15 reikšmė
if (digitalRead (KG) == AUKŠTAS) {BG + = 15; } // jei paspaudžiamas mygtukas G, tada vertė G +15
if (digitalRead (KB) == AUKŠTAS) {BB + = 15; } // jei paspaudžiamas mygtukas B, tada vertė B +15
if (digitalRead (C) == AUKŠTAS) {BR - = 254; } // jei paspaudžiamas C mygtukas, tada R -254 reikšmė
if (digitalRead (C) == AUKŠTAS) {BG - = 254; } // jei paspaudžiamas C mygtukas, tada G -254 vertė
if (digitalRead (C) == AUKŠTAS) {BB - = 254; } // jei paspaudžiamas mygtukas C, tada vertė B -254
if (digitalRead (RS) == AUKŠTAS) {BR = atsitiktinis (0, 254); } // Jei paspaudžiamas mygtukas RS, tada R vertė yra nuo 0 iki 254
if (digitalRead (RS) == AUKŠTAS) {BG = atsitiktinis (0, 254); } // Jei paspaudžiamas mygtukas RS, tada G vertė yra nuo 0 iki 254
if (digitalRead (RS) == AUKŠTAS) {BB = atsitiktinis (0, 254); } // Jei paspaudžiamas mygtukas RS, tada B vertė yra nuo 0 iki 254
BR = suvaržymas (BR, 0, 254); // BR = (vertė, nuo, iki)
„analogWrite“ (R, BR); // Naudodami PWM moduliaciją, sureguliuojame ryškumą nuo 0 iki 254
BG = suvaržymas (BG, 0, 254); // BG = (vertė, nuo, iki)
„analogWrite“ (G, BG); // Naudodami PWM moduliaciją, sureguliuojame ryškumą nuo 0 iki 254
BB = suvaržymas (BB, 0, 254); // BB = (vertė, nuo, iki)
„analogWrite“ (B, BB); // Naudodami PWM moduliaciją, sureguliuojame ryškumą nuo 0 iki 254
}