โปรเจกต์ Simple RGB Dimmer แบบง่าย
เรียนรู้การใช้งาน buttons, LED และ EEPROM บน Arduino Nano
เรียนรู้การใช้งาน buttons, LED และ EEPROM บน Arduino Nano
▶ กดเพื่อดูวิดีโอสาธิตโปรเจกต์
RGB strings มักจะมีความไม่สมดุลของสีอยู่เสมอ ดังนั้นเราจึงไม่เคยได้แสงสีขาวที่บริสุทธิ์จริงๆ นั่นคือเหตุผลที่เราต้องการ Dimmer ที่ปรับค่าได้พร้อม Memory เพื่อตั้งค่าอุณหภูมิแสงที่ต้องการสำหรับการถ่ายภาพหรือการทำงาน
Code
/*
LED แบบ Common Anode
BUTTONENT=เลือกสี Green
BUTTONUP=เลือกสี Blue
BUTTONDOWN=เลือกสี Red
เมื่อกด Enter สีที่เลือกจะสว่างเป็นเวลา 1 วินาที
Up/Down = +/- ความสว่างของสีที่เลือก
กด Enter อีกครั้งเพื่อบันทึกการตั้งค่าและไฟจะดับลงเป็นเวลา 0.5 วินาที
*/
#include
const int BLED = 3; //เอาต์พุตสำหรับ Blue LED และยังเป็น Address สำหรับค่า PWM ที่ตรงกัน
const int GLED = 5; //เอาต์พุตสำหรับ Green LED และยังเป็น Address สำหรับค่า PWM ที่ตรงกัน
const int RLED=6; //เอาต์พุตสำหรับ Red LED และยังเป็น Address สำหรับค่า PWM ที่ตรงกัน
const int BUTTONENT=7;
const int BUTTONUP=8;
const int BUTTONDOWN=2;
byte PWMB;
byte PWMG;
byte PWMR;
void setup()//
{
pinMode(BLED, OUTPUT);
pinMode(GLED, OUTPUT);
pinMode(RLED, OUTPUT);
pinMode(BUTTONENT, INPUT_PULLUP);
pinMode(BUTTONDOWN, INPUT_PULLUP);
pinMode(BUTTONUP, INPUT_PULLUP);
PWMB = EEPROM.read(BLED);
PWMG = EEPROM.read(GLED);
PWMR = EEPROM.read(RLED);
analogWrite(BLED, PWMB);
analogWrite(RLED, PWMR);
analogWrite(GLED, PWMG);
}
void adjust (int color) //Function สำหรับการปรับค่า
{
analogWrite(BLED, PWMB);
analogWrite(RLED, PWMR);
analogWrite(GLED, PWMG);
if (color==BLED)
{
while (digitalRead(BUTTONENT)==HIGH)
{
if (digitalRead(BUTTONUP)==LOW)
{
analogWrite(BLED, PWMB=PWMB-10);
EEPROM.write(BLED, PWMB);
delay(300);
}
if (digitalRead(BUTTONDOWN)==LOW)
{
analogWrite(BLED, PWMB=PWMB+10);
EEPROM.write(BLED, PWMB);
delay(300);
}
}
}
if (color==GLED)
{
while (digitalRead(BUTTONENT)==HIGH)
{
if (digitalRead(BUTTONUP)==LOW)
{
analogWrite(GLED, PWMG=PWMG-10);
EEPROM.write(GLED, PWMG);
delay(300);
}
if (digitalRead(BUTTONDOWN)==LOW)
{
analogWrite(GLED, PWMG=PWMG+10);
EEPROM.write(GLED, PWMG);
delay(300);
}
}
}
if (color==RLED)
{
while (digitalRead(BUTTONENT)==HIGH)
{
if (digitalRead(BUTTONUP)==LOW)
{
analogWrite(RLED, PWMR=PWMR-10);
EEPROM.write(RLED, PWMR);
delay(300);
}
if (digitalRead(BUTTONDOWN)==LOW)
{
analogWrite(RLED, PWMR=PWMR+10);
EEPROM.write(RLED, PWMR);
delay(300);
}
}
}
digitalWrite(BLED, HIGH);
digitalWrite(GLED, HIGH);
digitalWrite(RLED, HIGH);
delay (500);
analogWrite(BLED, PWMB);
analogWrite(RLED, PWMR);
analogWrite(GLED, PWMG);
return;
}
void loop() // Loop Function จะทำงานวนซ้ำไปเรื่อยๆ ตลอดไป
{
if (digitalRead(BUTTONUP)==LOW)
{
digitalWrite(BLED, LOW);
digitalWrite(GLED, HIGH);
digitalWrite(RLED, HIGH);
delay (1000);
adjust (BLED);
}
if (digitalRead (BUTTONENT)==LOW) //ปุ่ม Enter (ปุ่มกลาง)
{
digitalWrite(BLED, HIGH);
digitalWrite(GLED, LOW);
digitalWrite(RLED, HIGH);
delay (1000);
adjust (GLED);
}
if (digitalRead (BUTTONDOWN)==LOW)
{
digitalWrite(BLED, HIGH);
digitalWrite(GLED, HIGH);
digitalWrite(RLED, LOW);
delay (1000);
adjust (RLED);
}
}
สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้