02. running-led

02. ไฟวิ่ง LED (running LED)

วัตถุประสงค์

  1. รู้จักการใช้คำสั่งแบบ C ของ AVR ในการเขียนโปรแกรมบน Arduino

  2. รู้จักความแตกต่างของตัวแปรแบบ unsigned char กับ char

อุปกรณ์

    1. บอร์ด Arduino

    2. LED 8 ดวง

    3. 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;

}

}

คำถาม

  1. ถ้าเปลี่ยนคำสั่งจาก unsigned char flash; เป็น char flash; การทำงานแตกต่างกันอย่างไร เพราะเหตุใดจงอธิบาย

การทดลอง

    1. ให้กลับทางวิ่ง

    2. ให้เปลี่ยนความเร็วการวิ่ง

    3. ต่อสวิทช์เข้ากับขา D12 ตามรูป 2.1 ใช้สวิทช์ที่ขา D12 เลือกทิศทางการวิ่ง

รูป 2.2

--------------------------------------------------------------------------------------------------------------