اردوينو – الدرس الثامن – تغيير درجة الالوان باستخدام الازرار و RGB LED

مبتدئ

image_pdf

مقدمة

في هذا الدرس ستقوم باستخدام الازرار في تغيير درجة الالوان في RGB LED.

RGB LED

المواد والأدوات

RGB LED

1 (10mm Common Cathode RGB LED)

arduino-lesson-8

(270 Ω Resistor)

Tactile push switch

3 (Tactile push switch)

Half-size Breadboard

لوحة التجارب (Half-size Breadboard)

Arduino Uno R3

 1× اردوينو اونو

Jumper wires

حزمة أسلاك توصيل (ذكر-ذكر)

Arduino cable

سلك اردوينو

توصيل الدائرة RGB Led

 كما يظهر لك بالتصميم التالي فإن السن الأطول لـRBG LED (السن الثاني) تم وضعه في الصف الثاني من لوح التجارب ليتم توصيلة بـGND

افترض ان لدينا RBG LED ذات توصيل سالب ‘common cathode’ ، اذا كان لدينا RBG LED ذات توصيل موجب ‘common anode’ وصل السن الأطول بـ 5V عوضاُ عن GND
لاحظ عند استخدام التوصيل الموجب سيتم عكس دورة الألوان.

RGB LED

الكود البرمجي

ارفع الكود التالي لمتحكم الاردوينو:

في البداية فإن جميع الـ LEDs ستكون مطفأه اذا استمريت بالضغط على واحد من الازرار فإنه سيبدأ في زيادة درجة سطوع الـ RGB Led تدريجيًا. سيكون اللون أحمر للزر الأعلى، أخضر للزر المتوسط، وأزرق للزر الموجود أسفل لوح التجارب.

عند اكتفاءك بدرجة سطوع أحد الألوان، اضغط زر آخر لرفع درجة سطوع اللون الاخر وشاهد كيف سيتم دمجها ببعض.

إذا اردت البدء مرة اخرى كل ما عليك فعله هو الضغط على زر اعادة البدء ‘reset’ الموجود بمتحكم الاردوينو ( الزر الأحمر الموجود بالقرب من منفذ الـUSB):

int redLEDPin = 11;
int greenLEDPin = 10;
int blueLEDPin = 9;
 
int redSwitchPin = 7;
int greenSwitchPin = 6;
int blueSwitchPin = 5;
 
int red = 0;
int blue = 0;
int green = 0;
 
void setup()
{
  pinMode(redLEDPin, OUTPUT);
  pinMode(greenLEDPin, OUTPUT);
  pinMode(blueLEDPin, OUTPUT);  
  pinMode(redSwitchPin, INPUT_PULLUP);
  pinMode(greenSwitchPin, INPUT_PULLUP);
  pinMode(blueSwitchPin, INPUT_PULLUP);
}
 
void loop()
{
  if (digitalRead(redSwitchPin) == LOW)
  {
    red ++;
    if (red > 255) red = 0;
  }
  if (digitalRead(greenSwitchPin) == LOW)
  {
    green ++;
    if (green > 255) green = 0;
  }
  if (digitalRead(blueSwitchPin) == LOW)
  {
    blue ++;
    if (blue > 255) blue = 0;
  }
  analogWrite(redLEDPin, red);
  analogWrite(greenLEDPin, green);
  analogWrite(blueLEDPin, blue);  
  delay(10);
}

 الكود مشابة لبرنامج الدرس الرابع، لديك 3 منافذ مخارج للتحكم بالـ RGB Led.
وهي منافذ تعديل عرض النبضة PWD (pulse width modulation) لتتمكن من وضع مقدار الطاقة التي ترغب وضعها لكل لون .

هنالك ثلاث منافذ اخرى تحتاجها، واحدة لكل زر وسيتم تعريفها داخل دالة setup لتكون منافذ ادخال والتي ستعطي قيمة عالية (قيمة تساوي 1) عند عدم الضغط عليها، وعند الضغط عليها ستعطي قيمة منخفضة (قيمة تساوي 0)

بعد تعريف المنافذ، عرف المتغيرات للالوان (احمر، اخضر، ازرق):

int red = 0;
int blue = 0;
int green = 0;

هذه المتغيرات سيتم استخدامها لتخزين القيم الحالية لكل لون، مثال لو كانت قيمة متغير اللون الأحمر هي صفر فيعني ذلك انها مطفأه، واذا كانت قيمتها تساوي 255 فيعني ذالك انها مضاءه في اعلى درجات السطوع.

دالة loop تحتوي على جزئين، الجزء الأول يقوم بالتحقق من قيم الازرار والقيام بما يلزم. كل زر يعمل نفس الوظيفة ولكن للون مختلف. هذا الجزء هو التالي:

  if (digitalRead(redSwitchPin) == LOW)
  {
    red ++;
    if (red > 255) red = 0;
  }

اذا كانت قيمة red switch pin (كقراءة رقمية) هي قيمة منخفضة (اي تساوي صفر) فهذا يعني أنه يتم الضغط على الزر حاليًا، فنقوم بإضافة 1 لمتغير red الاحمر
الأمر red++ يعني اضافة 1 للمتغير

ولكن علي أن تحرص هنا لأن القيمة الأعلى ستكون 255 عبر استخدام خاصية تعديل عرض النبضة PWD لذلك فالسطر التالي هو للتحقق من أنك لم تقم بتجاوز هذه القيمة، وإن قمت بتجاوزها فإن القيمة ستعود وتبدأ من الصفر

الجزء الثاني من دالة loop تحمل قيم نظرية ‘analogWrite’s’ لكل RGB Led

  analogWrite(redLEDPin, red);
  analogWrite(greenLEDPin, green);
  analogWrite(blueLEDPin, blue);

أخيرًا، سيكون هنالك تأخير طفيف delay  بنهاية  loop لإبطاء تحويل الألوان (يمكن تغيير قيمة التأخير)

أنشطة أخرى

أزل خاصية التأخير بنهاية loop  يمكننا ذلك عبر جعل السطر عبارة عن تعليق comment وذلك عن طريق وضع // ببداية السطر

  analogWrite(blueLEDPin, blue);  
  // delay(10);
}

بذلك لن يتم تنفيذ امر التأخير؛ لانها اصبحت عبارة عن سطر تعليق، وإذا اردت ان تعيد الأمر ليتم تنفيذه يمكن ازالة // من بداية السطر.

بدون خاصية التأخير delay سترى قيمة سطوع بشكل عشوائي كلما قمت برفع اصبعك من الزر.

امر آخر يمكنك القيام به، هو التلاعب بوظائف الأزرار لتتمكن من اضاءة الـ RGB Led كإشارة المرور.
يمكنك محاولة ذلك عبر جعل الزر الأول يظهر اللون الأحمر، الزر الأوسط يظهر اللون الأصفر، الزر الأسفل يظهر اللون الأخضر.

X
Product added to the cart