برمجة الأردوينو
#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 .

