02. running-led
02. ไฟวิ่ง LED (running LED)
วัตถุประสงค์
รู้จักการใช้คำสั่งแบบ C ของ AVR ในการเขียนโปรแกรมบน Arduino
รู้จักความแตกต่างของตัวแปรแบบ unsigned char กับ char
อุปกรณ์
บอร์ด Arduino
LED 8 ดวง
R 500 โอห์ม 8 ตัว
วงจร
ประกอบวงจรตามรูป 2.1
ตามรูป 2.1
ข้อควรจำ เนื่องจากขา Digital 0 (PD0) เป็นขา RxD และ Digital 1 (PD1) เป็นขา TxD ของพอร์ทอนุกรม UART ซึ่ง Arduino ใช้เป็นพอร์ทดาวน์โหลดโปรแกรมลงชิพ AVR ดังนั้นขณะดาวน์โหลดโปรแกรมนี้ ห้ามต่อขา D0 และ D1 เข้ากับวงจรใดๆ เมื่อดาวน์โหลดโปรแกรมเสร็จแล้ว จึงต่อเข้าตามวงจรทดลอง
--------------------------------------------------------------------------------------------------------------
โปรแกรม 2.1
void setup() {
DDRD = 0XFF; // initialize the digital pin (Port D) as an output. เป็นคำสั่งของ AVR โดยตรง
PORTD = 0xff; //ส่งค่า 0xff (= B1111 1111) ออกที่พอร์ท D
}
void loop() {
}
การทดลอง
สังเกตุการติดดับ ของ LED แต่ละดวง
ลองเปลี่ยนค่า 0xff เป็นค่าอื่นแล้วสังเกตุการติดดับ ของ LED แต่ละดวง เมื่อเทียบกับค่าที่กำหนดให้ เป็นเช่นไร
--------------------------------------------------------------------------------------------------------------
โปรแกรม 2.2
unsigned char flash;
void setup() {
DDRD = B11111111; //Port D as output
}
void loop() {
flash = B10000000;
for(int i = 0;i<8;i++){
PORTD = flash;
delay(300);
flash>>=1;
}
}
คำถาม
ถ้าเปลี่ยนคำสั่งจาก unsigned char flash; เป็น char flash; การทำงานแตกต่างกันอย่างไร เพราะเหตุใดจงอธิบาย
การทดลอง
ให้กลับทางวิ่ง
ให้เปลี่ยนความเร็วการวิ่ง
ต่อสวิทช์เข้ากับขา D12 ตามรูป 2.1 ใช้สวิทช์ที่ขา D12 เลือกทิศทางการวิ่ง
รูป 2.2
--------------------------------------------------------------------------------------------------------------