1. แนวคิด และ วิธีการเขียน code
- สามารถควบคุม Delay เพิ่ม/ลด ได้จาก button ที่เป็น Debounce Switchs 2 ปุ่ม- ควบคุมการติดของ LED จาก ซ้ายไปขวา และ ขวาไปซ้ายได้เอง จาก Switchเลื่อนตัวที่ 0
- แสดง Display(Output) เป็น LED 8 ดวง ทั้งหมด 3 pattern
- สามารถ Reset Delay กลับไปที่ค่าเริ่มต้นได้ จาก Switchเลื่อนตัวที่ 1
- มี Input ทั้งหมด 4ปุ่ม
- แบ่งการทำงานเป็น state เพื่อให้ควบคุมได้ง่ายขึ้น
- ไม่ต้องการสั่งให้ LED ทั้ง 8 ดวง ติดและดับ ทีละดวง
ปัญหาที่พบ
- เรื่อง DigitalIn/DigitalOut แบบ ArrayDigitalIn Input[3]={D0,D1,D2};
DigitalOut LED[8]= {D3,D4,D5,D6,D7,D8,D9,D10};
แต่มี error เกิดขึ้นเพราะว่าไม่สามารถวน while(1){} จึงไปศึกษาจาก Handbook พบว่านิยมใช้
BusOut LED(D3,D4,D5,D6,D7,D8,D9,D10); มากกว่า
จึงนำมาใช้ในการสร้าง pattern ของ LEDs ทั้ง 8 ตัว
- การเปลี่ยน state จะทำได้ก็ต่อเมื่อหมดการทำงานของ state นั้นๆแล้วครับ ไม่สามารถเปลี่ยนกระทันหันในทีเดียวได้
- DigitalIn D0 D1 ไม่สามารถใช้งานได้ครับ อาจเนื่องจากเป็นportเฉพาะ
- การใช้คำสั่ง BusOut จำต้องคำนวณเลขให้ได้เพราะ Output ออกมาเป็นตัวเลขฐาน2 8 bit จึงยุ่งยากกว่าการสั่งแบบทั่วไป แต่สั้นกว่า
Example
for (int j=0; j<256; j++)
{
LED = j;
wait_ms(100);
}
นี่คือ pattern การ Output LED 8 ดวง เป็นตัวเลขฐาน2 ตั้งแต่ 0-255 แบบ 8 bit ครับ
2. VDO แสดงการทำงานของ Program
Step 1 : LED ไล่ติดจากขวาสุดไปซ้ายสุด/ ติดพร้อมกันหมดทุกดวง / ไล่ดับจากขวาสุดไปซ้ายสุด โดยที่ switch ตัวที่0 ยังเป็น logic 0 delay 150 ms
Step 3 : กด Debouce Switch ตัวที่ 1 ลดDelayลงเหลือ 50 ms การติด/ดับของ LED เพิ่มขึ้น
Step 4 : กด switch ตัวที่0 เป็น logic1 pattern LED จะติดไล่จากซ้ายสุดไปขวาสุด / ติดพร้อมกันหมดทุกดวง / ไล่ดับจากซ้ายสุดไปขวาสุด
Step 5 : กด switch ตัวที่1 เป็น Logic1 Reset Delay เป็น 150 ms
Step 6 : กดDebounce Switch ตัวที่ 1 และ ตัวที่ 2 พร้อมกัน LED จะติดเป็นเลขฐาน2 จาก 1-255 Output แบบ 8 bit
3.code ที่กลุ่มของเราเขียนขึ้นครับ
http://www.mediafire.com/download/3zzirijgl3biz9v/LAB01_microcontroller_interface.rar
ไม่มีความคิดเห็น:
แสดงความคิดเห็น