หน้าแรก ดูโปรเจกต์ทั้งหมด
Expert

โปรเจกต์ Simple RGB Dimmer แบบง่าย

เรียนรู้การใช้งาน buttons, LED และ EEPROM บน Arduino Nano

โปรเจกต์ Simple RGB Dimmer แบบง่าย

วิดีโอสาธิต

Video

▶ กดเพื่อดูวิดีโอสาธิตโปรเจกต์

รายละเอียดและวิธีทำ

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);

}

}

Code

🔒 ปลดล็อก Code

สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้

รหัสอ้างอิงโปรเจกต์: simple-rgb-dimmer-317439
299 บาท
PromptPay QR Code