ใช้สิ่งนี้ ทำที่บ้าน คุณสามารถสร้างสีใด ๆ ในระบบ RGB ด้วยปุ่มห้าปุ่ม
1 - เพิ่มสีแดง
2 - เพิ่มสีเขียว
3 - เพิ่มสีน้ำเงิน
4 - สุ่ม (สีแบบสุ่ม)
5 - รีเซ็ต
สิ่งที่เราต้องการ:
1. Arduino (ในกรณีของฉัน arduino mega)
2. คณะกรรมการพัฒนา
3. ประเภทจัมเปอร์: พ่อแม่และพ่อ
4. LCD 1602 (2 บรรทัด 16 ตัวอักษร)
5. ปุ่ม 5 ชิ้น
6. SMD RGB LED
7. ตัวต้านทานสำหรับ 10 Kom 5 ชิ้น
ในการเริ่มต้นเราเชื่อมต่อไฟ LED RGB (หากไม่มีตัวต้านทานให้ใส่ตัวต้านทานที่ 220 โอห์ม)
ต่อไปเราใส่ปุ่ม 5 ปุ่ม: ขาหนึ่งปุ่มกับขา 5V และอีกตัวหนึ่งผ่านตัวต้านทาน 10K ไปที่พื้นและขาเดียวกับ Arduino
เราเชื่อมต่อจอ LCD 1602 กับ SDA และ SCL (I2C)
ทั้งหมดนี้เชื่อมต่อกับรายชื่อ arduino (GND, 5V, SDA SCL, 2, 3, 4, 9, 10, 11, 12, 13) ดังภาพ
จริง ๆ แล้วร่างเอง
#include "LiquidCrustal_I2C.h" // เชื่อมต่อไลบรารีเพื่อทำงานกับจอแสดงผลผ่าน I2C
#include "Wire.h" // เชื่อมต่อไลบรารีเพื่อทำงานกับ I2C
int R = 9;
int G = 10;
int B = 11;
// สี RGB
int BR = 0;
int BG = 0;
int BB = 0;
// ตัวแปรเพื่อบันทึกค่า
int KR = 2; // ปุ่มสีแดง
int KG = 3; // ปุ่มเป็นสีเขียว
int KB = 4; // ปุ่มสีน้ำเงิน
int C = 13; ปุ่ม // รีเซ็ต
int RS = 12; // ปุ่มสุ่ม
LiquidCrystal_I2C lcd (0x27.16.2); // เชื่อมต่อจอแสดงผล (ที่อยู่, คอลัมน์, บรรทัด)
การตั้งค่าเป็นโมฆะ () {// ทำงานครั้งเดียว
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
// เชื่อมต่อ RGB LED
}
void loop () {// ทำซ้ำอย่างไม่มีที่สิ้นสุด
ล่าช้า (10); // ล่าช้า 10 ms
lcd.init (); // กำหนดจอแสดงผล
lcd.backlight (); // เปิดไฟหน้าจอแสดงผล
lcd.clear (); // ล้างการแสดงผล
lcd.setCursor (5, 0); // วางเคอร์เซอร์ที่คอลัมน์ที่ 6 และแถวที่ 0
lcd.print ("Color"); // เขียนสี
lcd.setCursor (0, 1);
lcd.print ("R"); // เขียน R
lcd.setCursor (6, 1);
lcd.print ("G"); / เขียน G
lcd.setCursor (12, 1);
lcd.print ("B"); เขียน B
lcd.print (BB); // พิมพ์ค่าสีฟ้า
lcd.setCursor (2, 1);
lcd.print (BR); // พิมพ์ค่าของสีแดง
lcd.setCursor (8, 1);
lcd.print (BG); // พิมพ์ค่าสีเขียว
lcd.setCursor (13, 1);
if (digitalRead (KR) == HIGH) {BR + = 15; } // ถ้ากดปุ่ม R ดังนั้นค่าของ R +15
ถ้า (digitalRead (KG) == สูง) {BG + = 15; } // ถ้ากดปุ่ม G ดังนั้นค่าของ G +15
if (digitalRead (KB) == HIGH) {BB + = 15; } // ถ้ากดปุ่ม B ดังนั้นค่า B +15
if (digitalRead (C) == HIGH) {BR - = 254; } // ถ้ากดปุ่ม C ดังนั้นค่าของ R -254
if (digitalRead (C) == HIGH) {BG - = 254; } // ถ้ากดปุ่ม C ดังนั้นค่าของ G -254
if (digitalRead (C) == HIGH) {BB - = 254; } // ถ้ากดปุ่ม C ดังนั้นค่า B -254
ถ้า (digitalRead (RS) == สูง) {BR = สุ่ม (0, 254); } // ถ้ากดปุ่ม RS แล้วค่าของ R คือจาก 0 ถึง 254
ถ้า (digitalRead (RS) == สูง) {BG = สุ่ม (0, 254); } // ถ้ากดปุ่ม RS แล้วค่าของ G คือจาก 0 ถึง 254
ถ้า (digitalRead (RS) == สูง) {BB = สุ่ม (0, 254); } // ถ้ากดปุ่ม RS แล้วค่าของ B คือตั้งแต่ 0 ถึง 254
BR = ข้อ จำกัด (BR, 0, 254); // BR = (ค่าจาก, ถึง)
analogWrite (R, BR); // โดยใช้การปรับ PWM เราปรับความสว่างจาก 0 ถึง 254
BG = ข้อ จำกัด (BG, 0, 254); // BG = (ค่าจาก, ถึง)
analogWrite (G, BG); // โดยใช้การปรับ PWM เราปรับความสว่างจาก 0 ถึง 254
BB = ข้อ จำกัด (BB, 0, 254); // BB = (ค่า, จาก, ถึง)
analogWrite (B, BB); // โดยใช้การปรับ PWM เราปรับความสว่างจาก 0 ถึง 254
}
ดาวน์โหลดภาพร่าง:
นั่นคือสิ่งที่ควรจะเป็น!
เขียนความคิดเห็นที่ไม่ชัดเจนว่าฉันจะตอบคำถามทุกข้อ
#include "LiquidCrustal_I2C.h" // เชื่อมต่อไลบรารีเพื่อทำงานกับจอแสดงผลผ่าน I2C
#include "Wire.h" // เชื่อมต่อไลบรารีเพื่อทำงานกับ I2C
int R = 9;
int G = 10;
int B = 11;
// สี RGB
int BR = 0;
int BG = 0;
int BB = 0;
// ตัวแปรเพื่อบันทึกค่า
int KR = 2; // ปุ่มสีแดง
int KG = 3; // ปุ่มเป็นสีเขียว
int KB = 4; // ปุ่มสีน้ำเงิน
int C = 13; ปุ่ม // รีเซ็ต
int RS = 12; // ปุ่มสุ่ม
LiquidCrystal_I2C lcd (0x27.16.2); // เชื่อมต่อจอแสดงผล (ที่อยู่, คอลัมน์, บรรทัด)
การตั้งค่าเป็นโมฆะ () {// ทำงานครั้งเดียว
pinMode (R, OUTPUT);
pinMode (G, OUTPUT);
pinMode (B, OUTPUT);
// เชื่อมต่อ RGB LED
}
void loop () {// ทำซ้ำอย่างไม่มีที่สิ้นสุด
ล่าช้า (10); // ล่าช้า 10 ms
lcd.init (); // กำหนดจอแสดงผล
lcd.backlight (); // เปิดไฟหน้าจอแสดงผล
lcd.clear (); // ล้างการแสดงผล
lcd.setCursor (5, 0); // วางเคอร์เซอร์ที่คอลัมน์ที่ 6 และแถวที่ 0
lcd.print ("Color"); // เขียนสี
lcd.setCursor (0, 1);
lcd.print ("R"); // เขียน R
lcd.setCursor (6, 1);
lcd.print ("G"); / เขียน G
lcd.setCursor (12, 1);
lcd.print ("B"); เขียน B
lcd.print (BB); // พิมพ์ค่าสีฟ้า
lcd.setCursor (2, 1);
lcd.print (BR); // พิมพ์ค่าของสีแดง
lcd.setCursor (8, 1);
lcd.print (BG); // พิมพ์ค่าสีเขียว
lcd.setCursor (13, 1);
if (digitalRead (KR) == HIGH) {BR + = 15; } // ถ้ากดปุ่ม R ดังนั้นค่าของ R +15
ถ้า (digitalRead (KG) == สูง) {BG + = 15; } // ถ้ากดปุ่ม G ดังนั้นค่าของ G +15
if (digitalRead (KB) == HIGH) {BB + = 15; } // ถ้ากดปุ่ม B ดังนั้นค่า B +15
if (digitalRead (C) == HIGH) {BR - = 254; } // ถ้ากดปุ่ม C ดังนั้นค่าของ R -254
if (digitalRead (C) == HIGH) {BG - = 254; } // ถ้ากดปุ่ม C ดังนั้นค่าของ G -254
if (digitalRead (C) == HIGH) {BB - = 254; } // ถ้ากดปุ่ม C ดังนั้นค่า B -254
ถ้า (digitalRead (RS) == สูง) {BR = สุ่ม (0, 254); } // ถ้ากดปุ่ม RS แล้วค่าของ R คือจาก 0 ถึง 254
ถ้า (digitalRead (RS) == สูง) {BG = สุ่ม (0, 254); } // ถ้ากดปุ่ม RS แล้วค่าของ G คือจาก 0 ถึง 254
ถ้า (digitalRead (RS) == สูง) {BB = สุ่ม (0, 254); } // ถ้ากดปุ่ม RS แล้วค่าของ B คือตั้งแต่ 0 ถึง 254
BR = ข้อ จำกัด (BR, 0, 254); // BR = (ค่าจาก, ถึง)
analogWrite (R, BR); // โดยใช้การปรับ PWM เราปรับความสว่างจาก 0 ถึง 254
BG = ข้อ จำกัด (BG, 0, 254); // BG = (ค่าจาก, ถึง)
analogWrite (G, BG); // โดยใช้การปรับ PWM เราปรับความสว่างจาก 0 ถึง 254
BB = ข้อ จำกัด (BB, 0, 254); // BB = (ค่า, จาก, ถึง)
analogWrite (B, BB); // โดยใช้การปรับ PWM เราปรับความสว่างจาก 0 ถึง 254
}