Pomocí tohoto domácí v systému RGB můžete udělat libovolnou barvu pomocí pěti tlačítek
1 - přidat červenou
2 - Přidat zelenou
3 - Přidat modrou
4 - Náhodné (náhodná barva)
5 - Reset
Co potřebujeme:
1. Arduino (v mém případě arduino mega)
2. Vývojová deska
3. Typ propojky: táta máma a táta táta
4. LCD 1602 (2 řádky 16 znaků)
5. Tlačítka 5 kusů
6. SMD RGB LED
7. Rezistor pro 10 Kom 5 kusů
Pro začátek připojíme RGB LED (pokud není rezistor, vložte rezistor na 220 ohmů).
Dále jsme dali 5 tlačítek: jedno tlačítko noha na pin 5V, a druhé přes 10K odpor k zemi a stejnou nohu k arduino.
Displej LCD 1602 připojujeme k SDA a SCL (I2C).
To vše je spojeno s arduino kontakty (GND, 5V, SDA SCL, 2, 3, 4, 9, 10, 11, 12, 13) jako na obrázku.
Vlastně skica samotná
#include "LiquidCrustal_I2C.h" // připojte knihovnu pro práci s displejem přes I2C
#include "Wire.h" // Připojte knihovnu pro práci s I2C
int R = 9;
int G = 10;
int B = 11;
// RGB barvy
int BR = 0;
int BG = 0;
int BB = 0;
// proměnné k uložení hodnoty
int KR = 2; // červené tlačítko
int KG = 3; // tlačítko je zelené
int KB = 4; // modré tlačítko
int C = 13; // tlačítko reset
int RS = 12; // tlačítko náhodně
LiquidCrystal_I2C lcd (0x27.16.2); // Připojte displej (adresa, sloupce, řádky)
void setup () {// spustit jednou
pinMode (R, VÝSTUP);
pinMode (G, OUTPUT);
pinMode (B, VÝSTUP);
// připojte RGB LED
}
void loop () {// opakujte donekonečna
zpoždění (10); // zpoždění 10 ms
lcd.init (); // definovat displej
lcd.backlight (); // zapněte podsvícení displeje
lcd.clear (); // vymaže displej
lcd.setCursor (5, 0); // umístěte kurzor na 6. sloupec a 0. řádek
lcd.print ("Barva"); // napsat barvu
lcd.setCursor (0, 1);
lcd.print ("R"); // napište R
lcd.setCursor (6, 1);
lcd.print ("G"); / napište G
lcd.setCursor (12, 1);
lcd.print ("B"); napište B
lcd.print (BB); // vytiskni modrou hodnotu
lcd.setCursor (2, 1);
lcd.print (BR); // vytiskne hodnotu červené
lcd.setCursor (8, 1);
lcd.print (BG); // vytiskne zelenou hodnotu
lcd.setCursor (13, 1);
if (digitalRead (KR) == HIGH) {BR + = 15; } // pokud je stisknuto tlačítko R, pak hodnota R +15
if (digitalRead (KG) == HIGH) {BG + = 15; } // Pokud stisknete tlačítko G, pak hodnota G +15
if (digitalRead (KB) == HIGH) {BB + = 15; } // pokud je stisknuto tlačítko B, pak hodnota B +15
if (digitalRead (C) == HIGH) {BR - = 254; } // pokud je stisknuto tlačítko C, pak hodnota R-254
if (digitalRead (C) == HIGH) {BG - = 254; } // pokud je stisknuto tlačítko C, pak hodnota G-254
if (digitalRead (C) == HIGH) {BB - = 254; } // pokud je stisknuto tlačítko C, pak hodnota B -254
if (digitalRead (RS) == HIGH) {BR = náhodný (0, 254); } // pokud je stisknuto tlačítko RS, pak je hodnota R od 0 do 254
if (digitalRead (RS) == HIGH) {BG = náhodný (0, 254); } // Pokud stisknete tlačítko RS, pak hodnota G je od 0 do 254
if (digitalRead (RS) == HIGH) {BB = náhodný (0, 254); } // Pokud stisknete tlačítko RS, pak je hodnota B od 0 do 254
BR = omezení (BR, 0, 254); // BR = (hodnota, od, do)
analogWrite (R, BR); // pomocí PWM modulace upravujeme jas od 0 do 254
BG = omezení (BG, 0, 254); // BG = (hodnota, od, do)
analogWrite (G, BG); // pomocí PWM modulace upravujeme jas od 0 do 254
BB = omezení (BB, 0, 254); // BB = (hodnota, od, do)
analogWrite (B, BB); // pomocí PWM modulace upravujeme jas od 0 do 254
}
Stáhnout skicu:
To by mělo být!
Do komentářů napište, že není jasné, že zodpovím všechny otázky
#include "LiquidCrustal_I2C.h" // připojte knihovnu pro práci s displejem přes I2C
#include "Wire.h" // Připojte knihovnu pro práci s I2C
int R = 9;
int G = 10;
int B = 11;
// RGB barvy
int BR = 0;
int BG = 0;
int BB = 0;
// proměnné k uložení hodnoty
int KR = 2; // červené tlačítko
int KG = 3; // tlačítko je zelené
int KB = 4; // modré tlačítko
int C = 13; // tlačítko reset
int RS = 12; // tlačítko náhodně
LiquidCrystal_I2C lcd (0x27.16.2); // Připojte displej (adresa, sloupce, řádky)
void setup () {// spustit jednou
pinMode (R, VÝSTUP);
pinMode (G, OUTPUT);
pinMode (B, VÝSTUP);
// připojte RGB LED
}
void loop () {// opakujte donekonečna
zpoždění (10); // zpoždění 10 ms
lcd.init (); // definovat displej
lcd.backlight (); // zapněte podsvícení displeje
lcd.clear (); // vymaže displej
lcd.setCursor (5, 0); // umístěte kurzor na 6. sloupec a 0. řádek
lcd.print ("Barva"); // napsat barvu
lcd.setCursor (0, 1);
lcd.print ("R"); // napište R
lcd.setCursor (6, 1);
lcd.print ("G"); / napište G
lcd.setCursor (12, 1);
lcd.print ("B"); napište B
lcd.print (BB); // vytiskni modrou hodnotu
lcd.setCursor (2, 1);
lcd.print (BR); // vytiskne hodnotu červené
lcd.setCursor (8, 1);
lcd.print (BG); // vytiskne zelenou hodnotu
lcd.setCursor (13, 1);
if (digitalRead (KR) == HIGH) {BR + = 15; } // pokud je stisknuto tlačítko R, pak hodnota R +15
if (digitalRead (KG) == HIGH) {BG + = 15; } // Pokud stisknete tlačítko G, pak hodnota G +15
if (digitalRead (KB) == HIGH) {BB + = 15; } // pokud je stisknuto tlačítko B, pak hodnota B +15
if (digitalRead (C) == HIGH) {BR - = 254; } // pokud je stisknuto tlačítko C, pak hodnota R-254
if (digitalRead (C) == HIGH) {BG - = 254; } // pokud je stisknuto tlačítko C, pak hodnota G-254
if (digitalRead (C) == HIGH) {BB - = 254; } // pokud je stisknuto tlačítko C, pak hodnota B -254
if (digitalRead (RS) == HIGH) {BR = náhodný (0, 254); } // pokud je stisknuto tlačítko RS, pak je hodnota R od 0 do 254
if (digitalRead (RS) == HIGH) {BG = náhodný (0, 254); } // Pokud stisknete tlačítko RS, pak hodnota G je od 0 do 254
if (digitalRead (RS) == HIGH) {BB = náhodný (0, 254); } // Pokud stisknete tlačítko RS, pak je hodnota B od 0 do 254
BR = omezení (BR, 0, 254); // BR = (hodnota, od, do)
analogWrite (R, BR); // pomocí PWM modulace upravujeme jas od 0 do 254
BG = omezení (BG, 0, 254); // BG = (hodnota, od, do)
analogWrite (G, BG); // pomocí PWM modulace upravujeme jas od 0 do 254
BB = omezení (BB, 0, 254); // BB = (hodnota, od, do)
analogWrite (B, BB); // pomocí PWM modulace upravujeme jas od 0 do 254
}