مقدمـــــــة عن المشروع
ماذا لو استطعنا توليد ألوان مختلفة باستخدام RGB واحد وجعل زاوية غرفتنا أكثر جاذبية؟ لذلك ، يوجد هنا مصباح بسيط لخلط الألوان مع الاردوينو والذي يمكن أن يغير اللون عندما يكون هناك تغيير في الإضاءة في الغرفة . لذلك سوف يغير هذا المصباح لونه تلقائيًا وفقًا لظروف الإضاءة في الغرفة .
كل لون هو مزيج من اللون الأحمر والأخضر والأزرق . حتى نتمكن من توليد أي لون عن فإننا سنستخدم PWM أي كثافة الضوء على LDRs . سيؤدي ذلك إلى مزيد من التغييرات لشدة اللون الأحمر والأخضر والأزرق في RGB LED ، وسيتم إنتاج ألوان مختلفة.
متطلبات المشروع
Materials required:
- 1 x Arduino UNO
- 1 x Breadboard
- 3 x 220-ohm resistors
- 3 x 1-kilohm resistors
- Jumper wires
- 3 x LDRs
- 3 x colored strips (red, green, blue)
- 1 x RGB LED
طريقة العمل والتوصيل
أجري جميع التوصيلات وفقا للمخطط أدناه .
بعد تحميل الكود البرمجي المرفق أدناه ,
نظرًا لأننا نستخدم ثلاثة LDR ، فعندما يحدث تغيير ضوئي على هذه المستشعرات ، تتغير المقاومة كنتيجة لذلك تتغير الفولتية أيضًا عند المداخل التماثلية في الاردوينو و التي تعمل بمثابة دبابيس إدخال لأجهزة الاستشعار .
عندما تتغير شدة الضوء على هذه المستشعرات ، سوف يتوهج RGB مع تغير مقدار المقاومة ولدينا خلط ألوان مختلف في RGB بفضل استخدام خاصية PWM .
الكــــــــود البرمجي
لتحميل الكود البرمجي اضغط هنا
const byte red_sensor_pin = A0; const byte green_sensor_pin = A1; const byte blue_sensor_pin = A2; const byte green_led_pin = 9; const byte blue_led_pin = 10; const byte red_led_pin = 11; unsigned int red_led_value = 0; unsigned int blue_led_value = 0; unsigned int green_led_value = 0; unsigned int red_sensor_value = 0; unsigned int blue_sensor_value = 0; unsigned int green_sensor_value = 0; void setup() { pinMode(red_led_pin,OUTPUT); pinMode(blue_led_pin,OUTPUT); pinMode(green_led_pin,OUTPUT); Serial.begin(9600); } void loop() { red_sensor_value = analogRead(red_sensor_pin); delay(50); blue_sensor_value = analogRead(blue_sensor_pin); delay(50); green_sensor_value = analogRead(green_sensor_pin); // print those values onto the serial monitor Serial.println("Raw Sensor Values:"); Serial.print("\t Red: "); Serial.print(red_sensor_value); Serial.print("\t Blue: "); Serial.print(blue_sensor_value); Serial.print("\t Green: "); Serial.println(green_sensor_value); // convert from 0-1023 to 0-255 red_led_value = red_sensor_value / 4; // define Red LED blue_led_value = blue_sensor_value / 4; // define Blue LED green_led_value = green_sensor_value / 4; // define Green LEd // print mapped values to serial monitor Serial.println("Mapped Sensor Values:"); Serial.print("\t Red: "); Serial.print(red_led_value); Serial.print("\t Blue: "); Serial.print(blue_led_value); Serial.print("\t Green: "); Serial.println(green_led_value); // use analogWrite() to set output for RGB LED analogWrite(red_led_pin,red_led_value); // indicate red LED analogWrite(blue_led_pin,blue_led_value); // indicate blue LED analogWrite(green_led_pin,green_led_value); // indicate green }