Arduino Project‎ > ‎

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

--------------------------------------------------------------------------------------------------------------
Comments