Pomocou tohto domáci v systéme RGB môžete vytvoriť ľubovoľnú farbu pomocou piatich tlačidiel
1 - pridať červenú
2 - Pridajte zelenú farbu
3 - Pridanie modrej
4 - Náhodné (náhodná farba)
5 - Reset
Čo potrebujeme:
1. Arduino (v mojom prípade arduino mega)
2. Rada pre vývoj
3. Typ prepojky: otec mama a otec otec
4. LCD 1602 (2 riadky po 16 znakoch)
5. Gombíky 5 kusov
6. SMD RGB LED
7. Rezistor pre 10 ks Kom 5
Ak chcete začať, pripojíme RGB LED (ak chýba rezistor, dajte rezistor na 220 ohmov).
Ďalej sme dali 5 tlačidiel: jedno tlačidlo noha na 5V pin, a druhé cez 10K odpor k zemi a rovnakú nohu k arduino.
LCD 1602 displej pripájame k SDA a SCL (I2C).
To všetko je spojené s arduino kontaktmi (GND, 5V, SDA SCL, 2, 3, 4, 9, 10, 11, 12, 13) ako na obrázku.
Vlastne skica samotná
#include "LiquidCrustal_I2C.h" // pripojte knižnicu, aby ste mohli pracovať so zobrazením cez I2C
#include "Wire.h" // Pripojte knižnicu, aby pracovala s I2C
int R = 9;
int G = 10;
int B = 11;
// RGB farby
int BR = 0;
int BG = 0;
int BB = 0;
// premenné na uloženie hodnoty
int KR = 2; // červené tlačidlo
int KG = 3; // je zelené
int KB = 4; // modré tlačidlo
int C = 13; // resetovacie tlačidlo
int RS = 12; // tlačidlo náhodne
LiquidCrystal_I2C lcd (0x27.16.2); // Pripojenie displeja (adresa, stĺpce, riadky)
void setup () {// spustiť raz
pinMode (R, VÝSTUP);
pinMode (G, VÝSTUP);
pinMode (B, VÝSTUP);
// pripojte RGB LED
}
void loop () {// nekonečné opakovanie
oneskorenie (10); // oneskorenie 10 ms
lcd.init (); // definovať displej
lcd.backlight (); // zapnite podsvietenie displeja
lcd.clear (); // vymaže displej
lcd.setCursor (5, 0); // umiestnite kurzor na 6. stĺpec a na 0. riadok
lcd.print ("Farba"); // farba zápisu
lcd.setCursor (0, 1);
lcd.print ("R"); // napíš R
lcd.setCursor (6, 1);
lcd.print ("G"); / napíšte G
lcd.setCursor (12, 1);
lcd.print ("B"); písať B
lcdprint (BB); // vytlačiť modrú hodnotu
lcd.setCursor (2, 1);
lcdprint (BR); // vytlačiť hodnotu červenej
lcd.setCursor (8, 1);
lcd.print (BG); // vytlačte zelenú hodnotu
lcd.setCursor (13, 1);
if (digitalRead (KR) == HIGH) {BR + = 15; } // ak stlačíte tlačidlo R, potom hodnota R +15
ak (digitalRead (KG) == HIGH) {BG + = 15; } // ak stlačíte tlačidlo G, potom hodnota G +15
if (digitalRead (KB) == HIGH) {BB + = 15; } // ak stlačíte tlačidlo B, potom hodnota B +15
if (digitalRead (C) == HIGH) {BR - = 254; } // ak stlačíte tlačidlo C, potom hodnota R-254
if (digitalRead (C) == HIGH) {BG - = 254; } // ak stlačíte tlačidlo C, potom hodnota G -254
if (digitalRead (C) == HIGH) {BB - = 254; } // ak stlačíte tlačidlo C, potom hodnota B -254
ak (digitalRead (RS) == HIGH) {BR = náhodný (0, 254); } // ak stlačíte tlačidlo RS, potom je hodnota R od 0 do 254
ak (digitalRead (RS) == HIGH) {BG = náhodný (0, 254); } // ak stlačíte tlačidlo RS, potom je hodnota G od 0 do 254
ak (digitalRead (RS) == HIGH) {BB = náhodný (0, 254); } // ak stlačíte tlačidlo RS, potom je hodnota B od 0 do 254
BR = obmedzenie (BR, 0, 254); // BR = (hodnota, od, do)
analogWrite (R, BR); // pomocou PWM modulácie nastavujeme jas od 0 do 254
BG = väzba (BG, 0, 254); // BG = (hodnota, od, do)
analogWrite (G, BG); // pomocou PWM modulácie nastavujeme jas od 0 do 254
BB = väzba (BB, 0, 254); // BB = (hodnota od, do)
analogWrite (B, BB); // pomocou PWM modulácie nastavujeme jas od 0 do 254
}
Stiahnuť skicu:
To by malo byť!
V komentároch napíšte, že nie je jasné, či odpoviem na všetky otázky
#include "LiquidCrustal_I2C.h" // pripojte knižnicu, aby ste mohli pracovať so zobrazením cez I2C
#include "Wire.h" // Pripojte knižnicu, aby pracovala s I2C
int R = 9;
int G = 10;
int B = 11;
// RGB farby
int BR = 0;
int BG = 0;
int BB = 0;
// premenné na uloženie hodnoty
int KR = 2; // červené tlačidlo
int KG = 3; // je zelené
int KB = 4; // modré tlačidlo
int C = 13; // resetovacie tlačidlo
int RS = 12; // tlačidlo náhodne
LiquidCrystal_I2C lcd (0x27.16.2); // Pripojenie displeja (adresa, stĺpce, riadky)
void setup () {// spustiť raz
pinMode (R, VÝSTUP);
pinMode (G, VÝSTUP);
pinMode (B, VÝSTUP);
// pripojte RGB LED
}
void loop () {// nekonečné opakovanie
oneskorenie (10); // oneskorenie 10 ms
lcd.init (); // definovať displej
lcd.backlight (); // zapnite podsvietenie displeja
lcd.clear (); // vymaže displej
lcd.setCursor (5, 0); // umiestnite kurzor na 6. stĺpec a na 0. riadok
lcd.print ("Farba"); // farba zápisu
lcd.setCursor (0, 1);
lcd.print ("R"); // napíš R
lcd.setCursor (6, 1);
lcd.print ("G"); / napíšte G
lcd.setCursor (12, 1);
lcd.print ("B"); písať B
lcdprint (BB); // vytlačiť modrú hodnotu
lcd.setCursor (2, 1);
lcdprint (BR); // vytlačiť hodnotu červenej
lcd.setCursor (8, 1);
lcd.print (BG); // vytlačte zelenú hodnotu
lcd.setCursor (13, 1);
if (digitalRead (KR) == HIGH) {BR + = 15; } // ak stlačíte tlačidlo R, potom hodnota R +15
ak (digitalRead (KG) == HIGH) {BG + = 15; } // ak stlačíte tlačidlo G, potom hodnota G +15
if (digitalRead (KB) == HIGH) {BB + = 15; } // ak stlačíte tlačidlo B, potom hodnota B +15
if (digitalRead (C) == HIGH) {BR - = 254; } // ak stlačíte tlačidlo C, potom hodnota R-254
if (digitalRead (C) == HIGH) {BG - = 254; } // ak stlačíte tlačidlo C, potom hodnota G -254
if (digitalRead (C) == HIGH) {BB - = 254; } // ak stlačíte tlačidlo C, potom hodnota B -254
ak (digitalRead (RS) == HIGH) {BR = náhodný (0, 254); } // ak stlačíte tlačidlo RS, potom je hodnota R od 0 do 254
ak (digitalRead (RS) == HIGH) {BG = náhodný (0, 254); } // ak stlačíte tlačidlo RS, potom je hodnota G od 0 do 254
ak (digitalRead (RS) == HIGH) {BB = náhodný (0, 254); } // ak stlačíte tlačidlo RS, potom je hodnota B od 0 do 254
BR = obmedzenie (BR, 0, 254); // BR = (hodnota, od, do)
analogWrite (R, BR); // pomocou PWM modulácie nastavujeme jas od 0 do 254
BG = väzba (BG, 0, 254); // BG = (hodnota, od, do)
analogWrite (G, BG); // pomocou PWM modulácie nastavujeme jas od 0 do 254
BB = väzba (BB, 0, 254); // BB = (hodnota od, do)
analogWrite (B, BB); // pomocou PWM modulácie nastavujeme jas od 0 do 254
}