مشروع Mood lamp

مبتدئ

image_pdf

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

#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 .

X
تم إضافة المنتج إلى السلة بنجاح