باستخدام هذا محلية الصنع يمكنك عمل أي لون في نظام RGB بخمس أزرار
1 - إضافة اللون الأحمر
2 - إضافة اللون الأخضر
3 - إضافة الأزرق
4 - عشوائي (لون عشوائي)
5 - إعادة الضبط
ما نحتاجه:
1. اردوينو (في حالتي اردوينو ميجا)
2. مجلس التنمية
3. نوع الطائر: أبي أمي وأبي أبي
4. LCD 1602 (سطرين من 16 حرفًا)
5. أزرار 5 قطع
6. SMD RGB LED
7. المقاوم ل 10 كوم 5 قطع
للبدء ، نقوم بتوصيل RGB LED (في حالة عدم وجود المقاوم ، ضع المقاوم عند 220 أوم).
بعد ذلك ، نضع 5 أزرار: ساق زر واحد إلى دبوس 5V ، والآخر من خلال المقاوم 10 كيلو على الأرض والساق نفسها إلى اردوينو.
نقوم بتوصيل شاشة LCD 1602 بـ SDA و SCL (I2C).
كل هذا مرتبط بجهات اتصال اردوينو (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 كيلوبايت = 4 ؛ // الزر الأزرق
int C = 13 ؛ // زر إعادة الضبط
int RS = 12 ؛ // زر عشوائي
LiquidCrystal_I2C lcd (0x27.16.2) ؛ // توصيل الشاشة (العنوان والأعمدة والخطوط)
إعداد باطل () {/ تشغيل مرة واحدة
pinMode (R ، OUTPUT) ؛
pinMode (G ، OUTPUT) ؛
pinMode (B ، OUTPUT) ؛
// قم بتوصيل RGB LED
}}
حلقة فارغة () {/ كرر ما لا نهاية
تأخير (10) ؛ // مهلة 10 مللي ثانية
lcd.init () ؛ // تحديد الشاشة
lcd.backlight () ؛ // قم بتشغيل الإضاءة الخلفية للشاشة
lcd.clear () ؛ // امسح الشاشة
lcd.setCursor (5، 0) ؛ // ضع المؤشر على العمود السادس والصف 0
lcd.print ("اللون") ؛ // كتابة اللون
lcd.setCursor (0، 1) ؛
lcd.print ("R") ؛ // اكتب R
lcd.setCursor (6، 1) ؛
lcd.print ("G") ؛ / اكتب G
lcd.setCursor (12، 1) ؛
lcd.print ("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
if (digitalRead (KG) == HIGH) {BG + = 15 ؛ } // إذا تم الضغط على الزر G ، فإن قيمة G +15
if (digitalRead (KB) == HIGH) {BB + = 15 ؛ } // if الضغط على الزر 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
If (digitalRead (RS) == HIGH) {BR = random (0، 254)؛ } // إذا تم الضغط على زر RS ، تكون قيمة R من 0 إلى 254
If (digitalRead (RS) == HIGH) {BG = random (0، 254)؛ } // إذا تم الضغط على زر RS ، تكون قيمة G من 0 إلى 254
If (digitalRead (RS) == HIGH) {BB = random (0، 254)؛ } // إذا تم الضغط على زر RS ، تكون قيمة B من 0 إلى 254
BR = التقييد (BR ، 0 ، 254) ؛ // BR = (القيمة من من إلى)
analogWrite (R ، BR) ؛ // باستخدام تعديل PWM نعدل السطوع من 0 إلى 254
BG = التقييد (BG ، 0 ، 254) ؛ // BG = (value، from، to)
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 كيلوبايت = 4 ؛ // الزر الأزرق
int C = 13 ؛ // زر إعادة الضبط
int RS = 12 ؛ // زر عشوائي
LiquidCrystal_I2C lcd (0x27.16.2) ؛ // توصيل الشاشة (العنوان والأعمدة والخطوط)
إعداد باطل () {/ تشغيل مرة واحدة
pinMode (R ، OUTPUT) ؛
pinMode (G ، OUTPUT) ؛
pinMode (B ، OUTPUT) ؛
// قم بتوصيل RGB LED
}}
حلقة فارغة () {/ كرر ما لا نهاية
تأخير (10) ؛ // مهلة 10 مللي ثانية
lcd.init () ؛ // تحديد الشاشة
lcd.backlight () ؛ // قم بتشغيل الإضاءة الخلفية للشاشة
lcd.clear () ؛ // امسح الشاشة
lcd.setCursor (5، 0) ؛ // ضع المؤشر على العمود السادس والصف 0
lcd.print ("اللون") ؛ // كتابة اللون
lcd.setCursor (0، 1) ؛
lcd.print ("R") ؛ // اكتب R
lcd.setCursor (6، 1) ؛
lcd.print ("G") ؛ / اكتب G
lcd.setCursor (12، 1) ؛
lcd.print ("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
if (digitalRead (KG) == HIGH) {BG + = 15 ؛ } // إذا تم الضغط على الزر G ، فإن قيمة G +15
if (digitalRead (KB) == HIGH) {BB + = 15 ؛ } // if الضغط على الزر 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
If (digitalRead (RS) == HIGH) {BR = random (0، 254)؛ } // إذا تم الضغط على زر RS ، تكون قيمة R من 0 إلى 254
If (digitalRead (RS) == HIGH) {BG = random (0، 254)؛ } // إذا تم الضغط على زر RS ، تكون قيمة G من 0 إلى 254
If (digitalRead (RS) == HIGH) {BB = random (0، 254)؛ } // إذا تم الضغط على زر RS ، تكون قيمة B من 0 إلى 254
BR = التقييد (BR ، 0 ، 254) ؛ // BR = (القيمة من من إلى)
analogWrite (R ، BR) ؛ // باستخدام تعديل PWM نعدل السطوع من 0 إلى 254
BG = التقييد (BG ، 0 ، 254) ؛ // BG = (value، from، to)
analogWrite (G ، BG) ؛ // باستخدام تعديل PWM نعدل السطوع من 0 إلى 254
BB = تقييد (BB ، 0 ، 254) ؛ // BB = (القيمة من من إلى)
analogWrite (B ، BB) ؛ // باستخدام تعديل PWM نعدل السطوع من 0 إلى 254
}}