Menggunakan ini buatan sendiri anda boleh membuat sebarang warna dalam sistem RGB dengan lima butang
1 - tambah merah
2 - Tambah Hijau
3 - Tambah Biru
4 - Rawak (warna rawak)
5 - Tetapkan semula
Apa yang kita perlukan:
1. Arduino (dalam kes saya arduino mega)
2. Lembaga pembangunan
3. Jenis pelompat: ayah ibu dan ayah ayah
4. LCD 1602 (2 baris 16 huruf)
5. Butang 5 keping
6. SMD RGB LED
7. Rintangan untuk 10 Kom 5 keping
Untuk memulakan, kami menyambungkan RGB LED (jika tiada perintang, letakkan perintang pada 220 ohms).
Seterusnya, kami meletakkan 5 butang: satu butang kaki ke pin 5V, dan yang lain melalui perintang 10K ke tanah dan kaki yang sama dengan arduino.
Kami menyambungkan paparan LCD 1602 kepada SDA dan SCL (I2C).
Semua ini disambungkan kepada kenalan arduino (GND, 5V, SDA SCL, 2, 3, 4, 9, 10, 11, 12, 13) seperti dalam gambar.
Nah, sebenarnya lakaran itu sendiri
#include "LiquidCrustal_I2C.h" // sambungkan pustaka untuk berfungsi dengan paparan melalui I2C
#include "Wire.h" // Sambungkan perpustakaan untuk bekerja dengan I2C
int R = 9;
int G = 10;
int B = 11;
// Warna RGB
int BR = 0;
int BG = 0;
int BB = 0;
/ // pembolehubah untuk menyimpan nilai
int KR = 2; // // butang merah
int KG = 3; // butang hijau
int KB = 4; // butang biru
int C = 13; // butang reset
int RS = 12; // butang rawak
LiquidCrystal_I2C lcd (0x27.16.2); // Sambungkan paparan (alamat, lajur, baris)
void setup () {// run once
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
// sambungkan RGB LED
}
void loop () {// repeat endlessly
kelewatan (10); // tunda 10 ms
lcd.init (); // tentukan paparan
lcd.backlight (); // hidupkan lampu latar paparan
lcd.clear (); / / jelas paparan
lcd.setCursor (5, 0); // masukkan kursor pada lajur ke-6 dan baris ke-0
lcd.print ("Warna"); // tulis warna
lcd.setCursor (0, 1);
lcd.print ("R"); / tulis R
lcd.setCursor (6, 1);
lcd.print ("G"); / tulis G
lcd.setCursor (12, 1);
lcd.print ("B"); tulis B
lcd.print (BB); // mencetak nilai biru
lcd.setCursor (2, 1);
lcd.print (BR); // cetak nilai merah
lcd.setCursor (8, 1);
lcd.print (BG); // cetak nilai hijau
lcd.setCursor (13, 1);
jika (digitalRead (KR) == TINGGI) {BR + = 15; } // jika butang R ditekan, maka nilai R +15
jika (digitalRead (KG) == TINGGI) {BG + = 15; } // jika butang G ditekan, maka nilai G +15
jika (digitalRead (KB) == TINGGI) {BB + = 15; } // jika butang B ditekan, maka nilai B +15
jika (digitalRead (C) == TINGGI) {BR - = 254; } // jika butang C ditekan, maka nilai R -254
jika (digitalRead (C) == TINGGI) {BG - = 254; } // jika butang C ditekan, maka nilai G -254
jika (digitalRead (C) == TINGGI) {BB - = 254; } // jika butang C ditekan, maka nilai B -254
jika (digitalRead (RS) == TINGGI) {BR = rawak (0, 254); } // jika butang RS ditekan, maka nilai R adalah dari 0 hingga 254
jika (digitalRead (RS) == TINGGI) {BG = rawak (0, 254); } // jika butang RS ditekan, maka nilai G adalah dari 0 hingga 254
jika (digitalRead (RS) == TINGGI) {BB = rawak (0, 254); } // jika butang RS ditekan, maka nilai B ialah dari 0 hingga 254
BR = menghalang (BR, 0, 254); // BR = (nilai, dari, hingga)
analogWrite (R, BR); // menggunakan modulasi PWM kami menyesuaikan kecerahan dari 0 hingga 254
BG = menghalang (BG, 0, 254); // BG = (nilai, dari, hingga)
analogWrite (G, BG); // menggunakan modulasi PWM kami menyesuaikan kecerahan dari 0 hingga 254
BB = menghalang (BB, 0, 254); // BB = (nilai, dari, hingga)
analogWrite (B, BB); // menggunakan modulasi PWM kami menyesuaikan kecerahan dari 0 hingga 254
}
Muat turun lakaran:
Itulah yang sepatutnya!
Tuliskan komen yang tidak jelas bahawa saya akan menjawab semua soalan
#include "LiquidCrustal_I2C.h" // sambungkan pustaka untuk berfungsi dengan paparan melalui I2C
#include "Wire.h" // Sambungkan perpustakaan untuk bekerja dengan I2C
int R = 9;
int G = 10;
int B = 11;
// Warna RGB
int BR = 0;
int BG = 0;
int BB = 0;
/ // pembolehubah untuk menyimpan nilai
int KR = 2; // // butang merah
int KG = 3; // butang hijau
int KB = 4; // butang biru
int C = 13; // butang reset
int RS = 12; // butang rawak
LiquidCrystal_I2C lcd (0x27.16.2); // Sambungkan paparan (alamat, lajur, baris)
void setup () {// run once
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
// sambungkan RGB LED
}
void loop () {// repeat endlessly
kelewatan (10); // tunda 10 ms
lcd.init (); // tentukan paparan
lcd.backlight (); // hidupkan lampu latar paparan
lcd.clear (); / / jelas paparan
lcd.setCursor (5, 0); // masukkan kursor pada lajur ke-6 dan baris ke-0
lcd.print ("Warna"); // tulis warna
lcd.setCursor (0, 1);
lcd.print ("R"); / tulis R
lcd.setCursor (6, 1);
lcd.print ("G"); / tulis G
lcd.setCursor (12, 1);
lcd.print ("B"); tulis B
lcd.print (BB); // mencetak nilai biru
lcd.setCursor (2, 1);
lcd.print (BR); // cetak nilai merah
lcd.setCursor (8, 1);
lcd.print (BG); // cetak nilai hijau
lcd.setCursor (13, 1);
jika (digitalRead (KR) == TINGGI) {BR + = 15; } // jika butang R ditekan, maka nilai R +15
jika (digitalRead (KG) == TINGGI) {BG + = 15; } // jika butang G ditekan, maka nilai G +15
jika (digitalRead (KB) == TINGGI) {BB + = 15; } // jika butang B ditekan, maka nilai B +15
jika (digitalRead (C) == TINGGI) {BR - = 254; } // jika butang C ditekan, maka nilai R -254
jika (digitalRead (C) == TINGGI) {BG - = 254; } // jika butang C ditekan, maka nilai G -254
jika (digitalRead (C) == TINGGI) {BB - = 254; } // jika butang C ditekan, maka nilai B -254
jika (digitalRead (RS) == TINGGI) {BR = rawak (0, 254); } // jika butang RS ditekan, maka nilai R adalah dari 0 hingga 254
jika (digitalRead (RS) == TINGGI) {BG = rawak (0, 254); } // jika butang RS ditekan, maka nilai G adalah dari 0 hingga 254
jika (digitalRead (RS) == TINGGI) {BB = rawak (0, 254); } // jika butang RS ditekan, maka nilai B ialah dari 0 hingga 254
BR = menghalang (BR, 0, 254); // BR = (nilai, dari, hingga)
analogWrite (R, BR); // menggunakan modulasi PWM kami menyesuaikan kecerahan dari 0 hingga 254
BG = menghalang (BG, 0, 254); // BG = (nilai, dari, hingga)
analogWrite (G, BG); // menggunakan modulasi PWM kami menyesuaikan kecerahan dari 0 hingga 254
BB = menghalang (BB, 0, 254); // BB = (nilai, dari, hingga)
analogWrite (B, BB); // menggunakan modulasi PWM kami menyesuaikan kecerahan dari 0 hingga 254
}