โปรเจกต์ LED fade โดยใช้ Arduino UNO พร้อม code
project นี้เกี่ยวกับการเปลี่ยนความเข้มของ LED อย่างเป็นจังหวะ
project นี้เกี่ยวกับการเปลี่ยนความเข้มของ LED อย่างเป็นจังหวะ
▶ กดเพื่อดูวิดีโอสาธิตโปรเจกต์
นี่คือโปรเจกต์แรกของฉันที่ใช้ Arduino UNO เราสามารถใช้โค้ดที่ให้มาเพื่อเปลี่ยนความสว่างของ LED ได้โดยอัตโนมัติ
โค้ดนี้จะเพิ่มและลดความสว่างของ LED ทั้งหมด 255 ระดับ พร้อมกับการหน่วงเวลา (delay) ที่เลือกได้ โค้ดนี้ใช้ analogWrite(PWM) ใน 8 bit mode ซึ่งหมายความว่าความสว่างสามารถควบคุมได้ 255 ระดับ ฉันได้ลองใช้ตรรกะของโค้ดที่แตกต่างกันสำหรับโปรเจกต์นี้
LED ขนาด 10mm เชื่อมต่อกับ Pin หมายเลข 10 บน Board Arduino UNO

ในเวอร์ชันนี้มี while Loop อยู่ 2 ชุด ในตอนเริ่มต้นความสว่างจะสูงที่สุด ดังนั้น while Loop แรกจึงถูกใช้เพื่อลดความสว่างจาก 255 ลงเหลือ 0 โดยมี delay 5 มิลลิวินาที
while(intensity != 0)
{
analogWrite(10, intensity);
delay(d);
intensity = intensity - 1;
}
while Loop นี้จะสิ้นสุดลงเมื่อความสว่างกลายเป็น 0 และ while Loop ที่สองจะเริ่มทำงาน ใน Loop นี้ความสว่างจะเพิ่มขึ้นจาก 0 ไปถึง 255
while((intensity < 255) && (intensity >= 0))
{
analogWrite(10, intensity);
delay(d);
intensity = intensity + 1;
}
int intensity = 255;
int d = 5;
// ฟังก์ชัน setup จะทำงานหนึ่งครั้งเมื่อคุณกด reset หรือจ่ายไฟให้ board
void setup() {
// กำหนดให้ digital pin 10 เป็น output
pinMode(10, OUTPUT);
}
// ฟังก์ชัน loop จะทำงานซ้ำไปเรื่อยๆ ตลอดเวลา
void loop() {
while(intensity != 0) // Loop นี้ใช้เพื่อลดความสว่าง
{
analogWrite(10, intensity);
delay(d);
intensity = intensity - 1;
}
while((intensity < 255) && (intensity >= 0)) // เพิ่มความสว่าง
{
analogWrite(10, intensity);
delay(d);
intensity = intensity + 1;
}
}
ในเวอร์ชันนี้มีการใช้ Variable 2 ตัว คือ intensity และ flag เมื่อ flag เป็น 0 ความสว่างจะเพิ่มขึ้น และเมื่อความสว่างสูงถึง 255 flag จะเปลี่ยนเป็น 1 และเมื่อ flag เป็น 1 ความสว่างจะลดลง เป็นเช่นนี้ไปเรื่อยๆ
int intensity = 0;
int flag = 0;
int d = 5;
void setup() {
pinMode(10, OUTPUT);
}
void loop() {
analogWrite(10, intensity);
delay(d);
if(flag == 0)
intensity = intensity + 1;
if(intensity == 255)
flag = 1;
if(flag == 1)
intensity = intensity - 1;
if(intensity == 0)
flag = 0;
}
ทั้ง 2 เวอร์ชันนี้ค่อนข้างยาว ฉันเลยลองทำให้มันสั้นลง และผลลัพธ์ที่ได้คือเวอร์ชันที่ 3
ฉันใช้ abs() และ intensity++ ในเวอร์ชันนี้ ความสว่างจะเริ่มเพิ่มขึ้นจาก -255 ไปถึง 255 จากนั้นจะกลับไปที่ -255 และวน Loop ต่อไป
int intensity = 255;
int d = 5;
void setup() {
pinMode(10, OUTPUT);
}
void loop() {
analogWrite(10,abs(intensity));
delay(d);
if(intensity++ == 256)
intensity = -255;
}
นี่คือโค้ดที่สั้นที่สุดเท่าที่ทำได้หลังจากผ่านการลองผิดลองถูกมาหลายครั้ง
int intensity = 255;
int
int d = 5;
void setup() {
pinMode(10, OUTPUT);
}
void loop() {
analogWrite(10, intensity);
delay(d);
intensity = intensity + intensitychange;
if((intensity == 0) || (intensity == 255))
{
intensitychange = -intensitychange;
}
}
สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้