Bunu kullanma ev yapımı RGB düğmesinde beş düğmeyle istediğiniz rengi yapabilirsiniz
1 - kırmızı ekle
2 - Yeşil Ekle
3 - Mavi Ekle
4 - Rastgele (rastgele renk)
5 - Sıfırla
Neye ihtiyacımız var:
1. Arduino (benim durumumda arduino mega)
2. Kalkınma kurulu
3. Jumper tipi: baba anne ve baba baba
4. LCD 1602 (16 karakterlik 2 satır)
5. Düğmeler 5 parça
6. SMD RGB LED
7. 10 Kom 5 parça için direnç
Başlamak için RGB LED'i bağlarız (bir direnç olmadan 220 ohm'a bir direnç koyarız).
Ardından, 5 düğme koyduk: bir düğme ayağı 5V pimine, diğeri yere 10K direnç ve aynı bacağı arduinoya.
LCD 1602 ekranını SDA ve SCL'ye (I2C) bağlarız.
Bütün bunlar resimdeki gibi arduino kontaklarına (GND, 5V, SDA SCL, 2, 3, 4, 9, 10, 11, 12, 13) bağlanır.
Aslında taslağın kendisi
#include "LiquidCrustal_I2C.h" // ekranla çalışmak için kütüphaneyi I2C üzerinden bağlayın
#include "Wire.h" // I2C ile çalışmak için kütüphaneyi bağlayın
int R = 9;
int G = 10;
int B = 11;
// RGB renkleri
int BR = 0;
int BG = 0;
int BB = 0;
// değeri kaydetmek için değişkenler
int KR = 2; // kırmızı düğme
int KG = 3; // düğme yeşil
int KB = 4; // mavi düğme
int C = 13; // sıfırlama düğmesi
int RS = 12; // düğme rastgele
LiquidCrystal_I2C lcd (0x27.16.2); // Ekranı bağlayın (adres, sütunlar, çizgiler)
void setup () {// bir kez çalıştır
pinMode (R, ÇIKIŞ);
pinMode (G, ÇIKIŞ);
pinMode (B, ÇIKIŞ);
// RGB LED'ini bağlayın
}
void loop () {// durmadan tekrarlayın
gecikme (10); // 10 ms gecikme
lcd.init (); // ekranı tanımla
lcd.backlight (); // ekran arka ışığını aç
lcd.clear (); // ekranı temizle
lcd.setİmleç (5, 0); // imleci 6. sütuna ve 0. satıra getir
lcd.print ("Renk"); // renk yaz
lcd.setİmleç (0, 1);
lcd.print ("R"); // R yaz
lcd.setİmleç (6, 1);
lcd.print ("G"); / G yaz
lcd.setİmleç (12, 1);
lcd.print ("B"); B yaz
lcd.print (BB); // mavi değeri yazdır
lcd.setİmleç (2, 1);
lcd.print (BR); // kırmızı değerini yazdır
lcd.setİmleç (8, 1);
lcd.print (BG); // yeşil değeri yazdır
lcd.setİmleç (13, 1);
eğer (digitalRead (KR) == YÜKSEK) {BR + = 15; } // R düğmesine basılırsa, R +15 değeri
eğer (digitalRead (KG) == YÜKSEK) {BG + = 15; } // G düğmesine basılırsa G +15 değeri
if (digitalRead (KB) == YÜKSEK) {BB + = 15; } // B düğmesine basılırsa B +15 değeri
if (digitalRead (C) == YÜKSEK) {BR - = 254; } // C düğmesine basılırsa, R-254 değeri
eğer (digitalRead (C) == YÜKSEK) {BG - = 254; } // C düğmesine basılırsa G -254 değeri
eğer (digitalRead (C) == YÜKSEK) {BB - = 254; } // C düğmesine basılırsa B -254 değeri
if (digitalRead (RS) == YÜKSEK) {BR = rastgele (0, 254); } // RS düğmesine basılırsa, R değeri 0 ila 254 arasındadır
eğer (digitalRead (RS) == YÜKSEK) {BG = rastgele (0, 254); } // RS düğmesine basılırsa, G değeri 0'dan 254'e kadardır
eğer (digitalRead (RS) == YÜKSEK) {BB = rastgele (0, 254); } // RS düğmesine basılırsa, B değeri 0 ila 254 arasındadır
BR = kısıtlama (BR, 0, 254); // BR = (değer, - arası)
analogyazma (R, BR); // PWM modülasyonunu kullanarak parlaklığı 0'dan 254'e ayarlıyoruz
BG = kısıtlama (BG, 0, 254); // BG = (değer, - arası)
analogWrite (G, BG); // PWM modülasyonunu kullanarak parlaklığı 0'dan 254'e ayarlıyoruz
BB = kısıtlama (BB, 0, 254); // BB = (değer, - arası)
analogWrite (B, BB); // PWM modülasyonunu kullanarak parlaklığı 0'dan 254'e ayarlıyoruz
}
Kroki indir:
Olması gereken bu!
Tüm soruları cevaplayacağımın açık olmadığını yorumlarda yazın
#include "LiquidCrustal_I2C.h" // ekranla çalışmak için kütüphaneyi I2C üzerinden bağlayın
#include "Wire.h" // I2C ile çalışmak için kütüphaneyi bağlayın
int R = 9;
int G = 10;
int B = 11;
// RGB renkleri
int BR = 0;
int BG = 0;
int BB = 0;
// değeri kaydetmek için değişkenler
int KR = 2; // kırmızı düğme
int KG = 3; // düğme yeşil
int KB = 4; // mavi düğme
int C = 13; // sıfırlama düğmesi
int RS = 12; // düğme rastgele
LiquidCrystal_I2C lcd (0x27.16.2); // Ekranı bağlayın (adres, sütunlar, çizgiler)
void setup () {// bir kez çalıştır
pinMode (R, ÇIKIŞ);
pinMode (G, ÇIKIŞ);
pinMode (B, ÇIKIŞ);
// RGB LED'ini bağlayın
}
void loop () {// durmadan tekrarlayın
gecikme (10); // 10 ms gecikme
lcd.init (); // ekranı tanımla
lcd.backlight (); // ekran arka ışığını aç
lcd.clear (); // ekranı temizle
lcd.setİmleç (5, 0); // imleci 6. sütuna ve 0. satıra getir
lcd.print ("Renk"); // renk yaz
lcd.setİmleç (0, 1);
lcd.print ("R"); // R yaz
lcd.setİmleç (6, 1);
lcd.print ("G"); / G yaz
lcd.setİmleç (12, 1);
lcd.print ("B"); B yaz
lcd.print (BB); // mavi değeri yazdır
lcd.setİmleç (2, 1);
lcd.print (BR); // kırmızı değerini yazdır
lcd.setİmleç (8, 1);
lcd.print (BG); // yeşil değeri yazdır
lcd.setİmleç (13, 1);
eğer (digitalRead (KR) == YÜKSEK) {BR + = 15; } // R düğmesine basılırsa, R +15 değeri
eğer (digitalRead (KG) == YÜKSEK) {BG + = 15; } // G düğmesine basılırsa G +15 değeri
if (digitalRead (KB) == YÜKSEK) {BB + = 15; } // B düğmesine basılırsa B +15 değeri
if (digitalRead (C) == YÜKSEK) {BR - = 254; } // C düğmesine basılırsa, R-254 değeri
eğer (digitalRead (C) == YÜKSEK) {BG - = 254; } // C düğmesine basılırsa G -254 değeri
eğer (digitalRead (C) == YÜKSEK) {BB - = 254; } // C düğmesine basılırsa B -254 değeri
if (digitalRead (RS) == YÜKSEK) {BR = rastgele (0, 254); } // RS düğmesine basılırsa, R değeri 0 ila 254 arasındadır
eğer (digitalRead (RS) == YÜKSEK) {BG = rastgele (0, 254); } // RS düğmesine basılırsa, G değeri 0'dan 254'e kadardır
eğer (digitalRead (RS) == YÜKSEK) {BB = rastgele (0, 254); } // RS düğmesine basılırsa, B değeri 0 ila 254 arasındadır
BR = kısıtlama (BR, 0, 254); // BR = (değer, - arası)
analogyazma (R, BR); // PWM modülasyonunu kullanarak parlaklığı 0'dan 254'e ayarlıyoruz
BG = kısıtlama (BG, 0, 254); // BG = (değer, - arası)
analogWrite (G, BG); // PWM modülasyonunu kullanarak parlaklığı 0'dan 254'e ayarlıyoruz
BB = kısıtlama (BB, 0, 254); // BB = (değer, - arası)
analogWrite (B, BB); // PWM modülasyonunu kullanarak parlaklığı 0'dan 254'e ayarlıyoruz
}