اردوينو – الدرس الثالث – إضاءات LEDs

مقدمة

ستتعلم في هذا الدرس كيفية تغيير درجة سطوع الـليد بإستعمال الاردوينو عدة  قيم من المقاومات.

LEDs

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

LEDs

 1× (5mm Red LED)

اردوينو

1×  (270 Ω Resistor)

arduino-lesson-3

(470 Ω Resistor)

arduino-lesson-3

(2.2 kΩ Resistor)

arduino-lesson-3

(10 kΩ Resistor)

اردوينو

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

اردوينو

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

اردوينو

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

Arduino cable

سلك اردوينو

 LED

تعتبر الـ LED مؤشر ضوئي فعال فهي تستعمل كميات ضئيلة من الكهرباء ويمكنها العيش لفترة طويلة جدًا.

ستستعمل في هذا الدرس أكثر  LED شعبية هو  (5mm red LED) ترمز 5mm إلى قطر الـ LED.

لا يمكنك ربط الـLED مباشرة إلى بطارية أو أي مصدر طاقة.
السبب الأول هو أنها تمتلك قطب سالب وقطب موجب وقد لا تعمل إذا كانت مربوطة بالخطأ.
السبب الثاني هو انه يجب إضافة مقاومة  resistor بين  مصدر الطاقة و الـ LED حتى تحد من قيمة التيار الكهربائي المار عبر الـ LED والذي يمكن له أن يحرقها.

LEDs

إذا لم تستعمل مقاومة resistor  مع الـ LED فيمكن أن يؤدي ذلك إلى إحتراق الـ LED مباشرة. لأن قيمة كبيرة من الكهرباء ستمر عبر الـLED والتي ستنتج  عنها حرارة عالية لا يمكن تحملها.

هنالك طريقتين لمعرفة أي من القطبين موجب وأيهما سالب:
أولًا: القطب الموجب هو القطب الأطول.
ثانيًا: من حيث يدخل القطب السالب للـ LED ستجد حافة مسطحة الجسم.

المقاومات (Resistors)

كما يظهر من الاسم، المقاومة تقاوم تدفق التيار الكهربائي، وكلما ارتفعت قيمة المقاومة كلما قاومت أكثر وقل تدفق التيار الكهربائي.

ستستعمل المقاومة إذاً للتحكم في كمية التيار الكهربائي المتدفقة في الـ LED كذلك في درجة بريق الـ LED.

arduino-lesson-3

ولكن لنتحدث قليلاً عن المقاومة.

وحدة قياس المقاومة هي الأوهم، ويرمز لها الحرف اليوناني Ω
كما نستعمل قيمة مقاومة في حدود الـ  1000 kΩ  =   Ω (كيلو أوهم)
و 1000,000 MΩ =  Ω (ميجا أوهم)

في هذا الدرس سنستعمل 3 قيم مختلفة للمقاومة، 270Ω، 470Ω، 2.2kΩ و 10kΩ.

كل هذه المقوامات تبدو متماثلة ما عدا في ألوان الشرائط التي تحملها.

والتي تساعدك في تمييز قيمة كل مقاومة يمكن لك أن استخراج قيمة المقاومة من خلال الألوان.

كل لون لديه رقم يرمز كالتالي:

الأسود 0

البني 1

الأحمر 2

البرتقالي 3

الأصفر 4

الأخضر 5

الأزرق 6

البنفسجي 7

الرمادي 8

الأبيض 9

الشريط الأول والثاني يمثلان الرقمان الأولان لقيمة المقاومة، إذا كانت أحمر ثم بنفسجي يعني 7 و 2 ، يمثل الشريط الثالث عدد الأصفار التي تأتي بعد الرقمين الأول و الثاني، فإذا كان اللون بني فذلك يعني أنه علينا إضافة صفر وحيد وتصبح قيمة المقاومة إذن 270 أوهم.

تمتلك مقاومة بشرائط بني، أسود، برتقالي، مقاومة بقيمة 10 kΩ

على عكس الـLED تمتلك المقاومة قطبين، يمكن لها ان توَصل من الجهتين.

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

وصل الدائرة مثل الصورة التالية:

LEDs

يمكن للأردوينو أن يمدك بطاقة مقدارها  5Volts التي ستوفر الطاقة الكافية لـ LED  والمقاومة.
عليك الآن ربط الاردوينو بالحاسوب عبر سلك USB

LEDs

مع وجود المقاومة بقيمة 270 أوهم ستضيء الـ LED بقوة.
إذا قمت بتغيير المقاومة بمقاومة 470 أوهم سينخفض بريق الـ LED.

مع وجود مقاومة 2.2 K أوهم سينخفض بريق الـ LED أكثر
وأخيرًا مع مقاومة بقيمة 10K أوهم ستكون الـ LED بالكاد مضاءة.
انزع السلك الأحمر من لوحة التجارب واعده حتى يعمل كمحول.  سيسهل عليك ملاحظة الفرق.

يمكنك إطفاء الأضواء لمشاهدة أفضل.

تغيير مكان المقاومة:

لديك الآن، 5V من الاردوينو إلى منفذ المقاومة الأولى، المنفذ الثاني للمقاومة مربوط بالقطب الموجب للـ LED والقطب السالب موصل ب GND ولكن إن غيرت مكان المقاومة بعد الـ LED ، فلن يغير ذلك من بريق الـ LED.

LEDs

قد تريد إعادة المقاومة بقيمة 270 أوهم إلى مكانها.

إذن..لا يهم مكان وجود المقاومة المهم هو أن تكون موصولة  مع الـ LED.

وميض الـ LED:

بتغيير طفيف للدائرة، وصل الـ LED بمنفذ إستخراج من الاردوينو حرك السلك الأحمر من منفذ 5V إلى D13، مثل الصورة التالية:

LEDs

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

 حمل برنامج  “Blink” من الدرس الثاني:

int led = 13;
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(led, OUTPUT);
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
delay(1000);               // wait for a second
digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
delay(1000);               // wait for a second
}

ستلاحظ أن كل الـ LED الملحق بالاردوينو والـ LED في لوحة التجارب تومضان.

يمكنك استعمال أي منفذ رقمي لتنفيذ هذه التجربة استعمل المنفذ D7 حرك السلك الأحمر من D13 إلى D7 ستغير هذا المقطع في بداية الكود:

int led = 13 ;

:إلى

int led = 7 ;

.LED  حمل الكود، ستواصل الوميض الـ

.وسيتحكم بها الاردوينو D7 ولكن هذه المرة من خلال المنفذ




مشروع Mood lamp

في هذا الدرس سوف نقوم بعمل مشروع جمالي قليلا وهو مشروع الـ Mood lamp او مصباح المزاج، وهو عبارة عن أنبوبة من الورق المقوى الخفيف وبداخله مجموعه من الـ LEDs ذات الألوان (حمراء، خضراء، زرقاء). يقوم هذا المصباح بتغيير الألوان بشكل جميل وسلس لإضافة الهدوء والراحة في المكان.

مشروع-mood-lamp-لإضافة-ديكور-مميز-لبيتك

المكونات المطلوبة

arduino uno r3

Arduino Uno

220 Ω resistor

220 Ohm – 330 Ohm Resistors

Full size breadboard 830

Breadboard

Breadboard Jumper Wire 65 pcs

Wires

blue led 5mm

Blue LED

green led 5mm

Green LED

led 5mm red

Red LED

white-paper

ورق مقوى خفيف (أي شكل ترغب به، هذه لمستك الجمالية)

توصيل الدارة على لوحة التجارب

mood-lamp

 

mood-lamp

شرح المشروع

نقوم بتوصيل الـثلاثة LEDs على مخارج PWM من الأردوينو وعن طريق التحكم في نسبة الفولت الخارجة للـLED  نستطيع التحكم في شدة الإضاءة.

سبب اختيار ألوان الـ LED (الأحمر، الأخضر، الأزرق)، لأنها الألوان الرئيسية التي يمكن تكوين أي لون آخر منها عن طريق خلط النسب بين الثلاثة والعمل على تداخل الضوء بوضعهم بجانب بعضهم (وهذا ما يحدث حقيقة في RGB LED).

للتحكم في شدة الإضاءة يمكنك أن تكتب كود الأردينو (analogWrite(x  حيث x  تمتد من 0 الى 255 (و هذا نظير 0 الى 100% تقريبًا).

نقوم بفتح نافذة اختيار اللون color picker – والتي توجد غالبًا في برامج الجرافيك مثل الفوتوشوب- لإختيار قيم RGB حتى نقوم بعرض جميع ألوان الطيف فكانت النتيجة كالآتي:

مشروع-mood-lamp-لإضافة-ديكور-مميز-لبيتك

وبالتالي سوف نقوم بعمل دالتين decrease color ودالة أخرى increase color. كلتا الدالتين تأخذ معامل وهو اسم اللون الذي نريد أن نقوم بزيادته من 0 الى 255 او بنقصانه من 255 الى 0.

برمجة الأردوينو

#define LED_RED   11
#define LED_GREEN 10
#define LED_BLUE  9

void setup() {
  // Define the output LEDs
  pinMode(LED_RED, OUTPUT);
  pinMode(LED_GREEN, OUTPUT);
  pinMode(LED_BLUE, OUTPUT);
}

void loop() {
  increaseColor(LED_BLUE);
  decreaseColor(LED_RED);
  increaseColor(LED_GREEN);
  decreaseColor(LED_BLUE);
  increaseColor(LED_RED);
  decreaseColor(LED_GREEN);
}

void increaseColor(unsigned char colorPin) {
  for(int i=0; i<=255; i++) {
    analogWrite(colorPin, i);
    delay(5);
  }
}

void decreaseColor(unsigned char colorPin) {
  for(int i=255; i>=0; i--) {
    analogWrite(colorPin, i);
    delay(5);
  }
}

شرح الكود :

في البداية نقوم بتسمية مداخل الاردوينو حسب الـ LEDs  الموصلة معها، فالمدخل  9 موصل مع LED  الأزرق، والمدخل 10 موصل مع LED  الأخضر، ومدخل 11 موصل مع الأحمر.
ثم نقوم بتعريف هذه الأطراف كمخرج في دالة ()setup .

#define LED_RED   11
#define LED_GREEN 10
#define LED_BLUE  9

void setup() {
  // Define the output LEDs
  pinMode(LED_RED, OUTPUT);
  pinMode(LED_GREEN, OUTPUT);
  pinMode(LED_BLUE, OUTPUT);
}

في دالة ()loop نقوم بالتحكم في شدة اضاءة كل LEDs ودمج الألوان الثلاثة معا، وبهذه الطريقة نحصل على مزيج من الألوان تعتمد على شدة تركيز كل لون LED على حدة .
يتم التحكم في شدة إضاء كل LED عن طريق استدعاء الدالة increaseColor والدالة decreaseColor .

void loop() {
  increaseColor(LED_BLUE);
  decreaseColor(LED_RED);
  increaseColor(LED_GREEN);
  decreaseColor(LED_BLUE);
  increaseColor(LED_RED);
  decreaseColor(LED_GREEN);
}

الدالة increaseColor  تعمل على زيادة شدة اضاءة اللون تدريجيا. تقوم هذه الدالة باستخدام الدالة analogWrite(Pin_name,Vlaue) للتحكم في شدة الإضاءة، وبإستخدام for loop تبدأ شدة الاضاءة بالإزدياد تدريجيا من 0 إلى قيمة 255 .

/* هذه الدالة تقوم بعمل تأثير ناعم بزيادة قيمة اللون المطلوب منها من 0 الى 255 */
void increaseColor(unsigned char colorPin) {
  for(int i=0; i<=255; i++) {
    analogWrite(colorPin, i);
    delay(5);
  }
}

تقوم الدالة decreaseColor  بتقليل شدة اضاءة الـ LED  تدريجيا. تعمل هذه الدالة بنفس طريقة الدالة السابقة increaseColor ، ولكن تستخدم الـ for loop لتقليل شدة الإضاءة من 255 إلى 0 .

/*
و هذه الدالة تفعل العكس
*/
void decreaseColor(unsigned char colorPin) {
  for(int i=255; i>=0; i--) {
    analogWrite(colorPin, i);
    delay(5);
  }
}

باستخدام نفس التقنية مع باقي الـ LEDs يمكننا دمج الألوان بصورة رائعة لنحصل على Mood Lamp .