Sử dụng cái này tự làm bạn có thể tạo bất kỳ màu nào trong hệ thống RGB với năm nút
1 - thêm màu đỏ
2 - Thêm màu xanh
3 - Thêm màu xanh
4 - Ngẫu nhiên (màu ngẫu nhiên)
5 - Đặt lại
Những gì chúng ta cần:
1. Arduino (trong trường hợp của tôi arduino mega)
2. Ban phát triển
3. Kiểu nhảy: bố mẹ và bố
4. LCD 1602 (2 dòng 16 ký tự)
5. Nút 5 miếng
6. Đèn LED RGB RGB
7. Điện trở cho 10 Kom 5 miếng
Để bắt đầu, chúng tôi kết nối đèn LED RGB (nếu không có điện trở, đặt điện trở ở 220 ohms).
Tiếp theo, chúng tôi đặt 5 nút: một chân nút vào chân 5V, và nút còn lại thông qua điện trở 10K xuống đất và cùng chân với arduino.
Chúng tôi kết nối màn hình LCD 1602 với SDA và SCL (I2C).
Tất cả điều này được kết nối với các tiếp điểm arduino (GND, 5V, SDA SCL, 2, 3, 4, 9, 10, 11, 12, 13) như trong hình.
Vâng, thực sự là bản phác thảo
#include "LiquidCrustal_I2C.h" // kết nối thư viện để làm việc với màn hình thông qua I2C
#include "Wire.h" // Kết nối thư viện để làm việc với I2C
int R = 9;
int G = 10;
int B = 11;
// Màu RGB
int BR = 0;
int BG = 0;
int BB = 0;
// biến để lưu giá trị
int KR = 2; // nút đỏ
int KG = 3; nút // có màu xanh
int KB = 4; // nút màu xanh
int C = 13; // nút đặt lại
int RS = 12; // nút ngẫu nhiên
Màn hình LCD LiquidCstall_I2C (0x27.16.2); // Kết nối màn hình (địa chỉ, cột, dòng)
void setup () {// chạy một lần
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
// kết nối đèn LED RGB
}
void loop () {// lặp lại vô tận
trì hoãn (10); // trì hoãn 10 ms
LCD.init (); // xác định màn hình
LCD.backlight (); // bật đèn nền màn hình
LCD.clear (); // xóa màn hình
lcd.setCoder (5, 0); // đặt con trỏ trên cột thứ 6 và hàng thứ 0
lcd.print ("Màu"); // viết màu
lcd.setCoder (0, 1);
lcd.print ("R"); // viết R
lcd.setCoder (6, 1);
lcd.print ("G"); / viết G
lcd.setCoder (12, 1);
lcd.print ("B"); viết B
LCD.print (BB); // in giá trị màu xanh
lcd.setCoder (2, 1);
LCD.print (BR); // in giá trị của màu đỏ
lcd.setCoder (8, 1);
LCD.print (BG); // in giá trị xanh
lcd.setCoder (13, 1);
if (digitalRead (KR) == CAO) {BR + = 15; } // nếu nhấn nút R, thì giá trị của R +15
if (digitalRead (KG) == CAO) {BG + = 15; } // nếu nhấn nút G, thì giá trị của G +15
if (digitalRead (KB) == CAO) {BB + = 15; } // nếu nhấn nút B, thì giá trị B +15
if (digitalRead (C) == CAO) {BR - = 254; } // nếu nhấn nút C, thì giá trị của R -254
if (digitalRead (C) == CAO) {BG - = 254; } // nếu nhấn nút C, thì giá trị của G -254
if (digitalRead (C) == CAO) {BB - = 254; } // nếu nhấn nút C, thì giá trị B -254
if (digitalRead (RS) == CAO) {BR = ngẫu nhiên (0, 254); } // nếu nhấn nút RS, thì giá trị của R là từ 0 đến 254
if (digitalRead (RS) == CAO) {BG = ngẫu nhiên (0, 254); } // nếu nhấn nút RS, thì giá trị của G là từ 0 đến 254
if (digitalRead (RS) == CAO) {BB = ngẫu nhiên (0, 254); } // nếu nhấn nút RS, thì giá trị của B là từ 0 đến 254
BR = giới hạn (BR, 0, 254); // BR = (giá trị, từ, đến)
analogWrite (R, BR); // sử dụng điều chế PWM, chúng tôi điều chỉnh độ sáng từ 0 đến 254
BG = ràng buộc (BG, 0, 254); // BG = (giá trị, từ, đến)
analogWrite (G, BG); // sử dụng điều chế PWM, chúng tôi điều chỉnh độ sáng từ 0 đến 254
BB = ràng buộc (BB, 0, 254); // BB = (giá trị, từ, đến)
analogWrite (B, BB); // sử dụng điều chế PWM, chúng tôi điều chỉnh độ sáng từ 0 đến 254
}
Tải về bản phác thảo:
Đó là những gì nó nên được!
Viết trong các ý kiến rằng không rõ ràng rằng tôi sẽ trả lời tất cả các câu hỏi
#include "LiquidCrustal_I2C.h" // kết nối thư viện để làm việc với màn hình thông qua I2C
#include "Wire.h" // Kết nối thư viện để làm việc với I2C
int R = 9;
int G = 10;
int B = 11;
// Màu RGB
int BR = 0;
int BG = 0;
int BB = 0;
// biến để lưu giá trị
int KR = 2; // nút đỏ
int KG = 3; nút // có màu xanh
int KB = 4; // nút màu xanh
int C = 13; // nút đặt lại
int RS = 12; // nút ngẫu nhiên
Màn hình LCD LiquidCstall_I2C (0x27.16.2); // Kết nối màn hình (địa chỉ, cột, dòng)
void setup () {// chạy một lần
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
// kết nối đèn LED RGB
}
void loop () {// lặp lại vô tận
trì hoãn (10); // trì hoãn 10 ms
LCD.init (); // xác định màn hình
LCD.backlight (); // bật đèn nền màn hình
LCD.clear (); // xóa màn hình
lcd.setCoder (5, 0); // đặt con trỏ trên cột thứ 6 và hàng thứ 0
lcd.print ("Màu"); // viết màu
lcd.setCoder (0, 1);
lcd.print ("R"); // viết R
lcd.setCoder (6, 1);
lcd.print ("G"); / viết G
lcd.setCoder (12, 1);
lcd.print ("B"); viết B
LCD.print (BB); // in giá trị màu xanh
lcd.setCoder (2, 1);
LCD.print (BR); // in giá trị của màu đỏ
lcd.setCoder (8, 1);
LCD.print (BG); // in giá trị xanh
lcd.setCoder (13, 1);
if (digitalRead (KR) == CAO) {BR + = 15; } // nếu nhấn nút R, thì giá trị của R +15
if (digitalRead (KG) == CAO) {BG + = 15; } // nếu nhấn nút G, thì giá trị của G +15
if (digitalRead (KB) == CAO) {BB + = 15; } // nếu nhấn nút B, thì giá trị B +15
if (digitalRead (C) == CAO) {BR - = 254; } // nếu nhấn nút C, thì giá trị của R -254
if (digitalRead (C) == CAO) {BG - = 254; } // nếu nhấn nút C, thì giá trị của G -254
if (digitalRead (C) == CAO) {BB - = 254; } // nếu nhấn nút C, thì giá trị B -254
if (digitalRead (RS) == CAO) {BR = ngẫu nhiên (0, 254); } // nếu nhấn nút RS, thì giá trị của R là từ 0 đến 254
if (digitalRead (RS) == CAO) {BG = ngẫu nhiên (0, 254); } // nếu nhấn nút RS, thì giá trị của G là từ 0 đến 254
if (digitalRead (RS) == CAO) {BB = ngẫu nhiên (0, 254); } // nếu nhấn nút RS, thì giá trị của B là từ 0 đến 254
BR = giới hạn (BR, 0, 254); // BR = (giá trị, từ, đến)
analogWrite (R, BR); // sử dụng điều chế PWM, chúng tôi điều chỉnh độ sáng từ 0 đến 254
BG = ràng buộc (BG, 0, 254); // BG = (giá trị, từ, đến)
analogWrite (G, BG); // sử dụng điều chế PWM, chúng tôi điều chỉnh độ sáng từ 0 đến 254
BB = ràng buộc (BB, 0, 254); // BB = (giá trị, từ, đến)
analogWrite (B, BB); // sử dụng điều chế PWM, chúng tôi điều chỉnh độ sáng từ 0 đến 254
}