วัตถุประสงค์
- เพื่อให้สามารถทำการโปรแกรมพื้นฐานบนบอร์ด Arduino ได้
- เพื่อให้เข้าใจถึงคุณสมบัติของฮาร์ดแวร์ และอุปกรณ์ต่างๆที่เกี่ยวข้อง
- แผงต่อวงจร (เบรดบอร์ด) 1 อัน
- บอร์ด Arduino (ใช้แรงดันลอจิก +5V) 1 บอร์ด
- ปุ่มกดแบบสี่ขา 2 ตัว
- ไดโอดเปล่งแสงขนาด 5 มม. 4 ตัว
- ตัวต้านทาน 10kΩ 2 ตัว
- ตัวต้านทาน 330Ω หรือ 470Ω 4 ตัว
- สายไฟสำหรับต่อวงจร 1 ชุด
1. ยังไม่ต้องเชื่อมต่อ +5V และ Gnd จากบอร์ด Arduino ไปยังเบรดบอร์ดเพื่อจ่ายเป็นแรงดันไฟเลี้ยง VCC และ GND
2. ต่อวงจรปุ่มกดพร้อมตัวต้านทานแบบ Pull-up 10kΩ จำนวนสองชุด (PB1 และ PB2) บนเบรดบอร์ดแล้วนำไปต่อกับขา D2 และ D3 ของบอร์ด Arduino ตามลำดับ โดยใช้ลวดสายไฟสำหรับต่อวงจร
(ดูตามผังวงจรในรูปที่ 3.1.1)
3. ต่อวงจรโดยใช้ไดโอดเปล่งแสง (LED) พร้อมตัวต้านทานแบบอนุกรม 330Ω หรือ 470Ω จำนวน 4 ชุด (LED1, LED2, LED3, LED4) บนเบรดบอร์ด แล้วนำไปต่อกับขา D4, D5, D6, D7, D8 ของบอร์ด Arduino ตามลำดับ โดยใช้ลวดสายไฟสำหรับต่อวงจร
(ดูตามผังวงจรในรูปที่ 3.1.1)
4. เขียนโค้ดตามตัวอย่างโดยใช้ Arduino IDE แล้วทำขั้นตอนคอมไพล์และอัพโหลดโปรแกรมไปยังบอร์ด Arduino
5. ตรวจสอบความถูกต้องของวงจรบนเบรดบอร์ดอีกครั้ง จากนั้นจึงเชื่อมต่อ +5V และ Gnd จากบอร์ด Arduino ไปยังเบรดบอร์ดเพื่อใช้เป็นแรงดันไฟเลี้ยง (VCC และ GND) ให้ระวังการต่อสลับขั้วสายไฟ และ ระวังการต่อถึงกันทางไฟฟ้าของสายไฟทั้งสองเส้น
6. แก้ไขโค้ดให้แสดงพฤติกรรมการทำงานตามข้อกำหนดต่อไปนี้ ตรวจสอบและสาธิตความถูกต้องในการทำงาน โดยใช้ฮาร์ดแวร์จริง
- 6.1 เมื่อเริ่มต้นทำงาน จะมี LED เพียงตัวเดียวที่อยู่ในสถานะ “ติด” (LED1) และที่เหลืออีก 3 ตัว (LED2, LED3, LED4) อยู่ในสถานะ “ดับ”
- 6.2 ถ้ากดปุ่ม PB1 แล้วปล่อยในแต่ละครั้ง จะทำให้ตำแหน่งของ LED ที่ “ติด” เลื่อนไปทางขวาทีละหนึ่งตำแหน่ง หรือวนกลับมาเริ่มต้นใหม่ทางซ้ายสุด (LED1 -> LED2 -> LED3 -> LED4 -> …)
- 6.3 ถ้ากดปุ่ม PB2 แล้วปล่อยในแต่ละครั้ง จะทำให้ตำแหน่งของ LED ที่ “ติด” เลื่อนไปทางซ้ายทีละหนึ่งตำแหน่ง หรือวนกลับมาเริ่มต้นใหม่ทางขวาสุด (LED1 -> LED4 -> LED3 -> LED2 -> …)
7. แก้ไขโค้ดให้แสดงพฤติกรรมการทำงานตามข้อกำหนดต่อไปนี้ ตรวจสอบและสาธิตความถูกต้องในการทำงาน
- 7.1 ใช้ LED ทั้ง 4 ตัว แสดงเลขในฐานสอง จำนวน 4 หลัก (4-bit binary number) ซึ่งรับสัญญาณเอาต์พุตมาจากบอร์ด Arduino และกำหนดให้บิตที่มีค่า 0 หมายถึง LED “ดับ” และ บิตที่มีค่าเป็น 1 หมายถึง LED “ติด”และเมื่อเริ่มต้นทำงาน ให้แสดงค่าเป็น 0
- 7.2 เมื่อกดปุ่ม PB1 แล้วปล่อยแต่ละครั้ง จะทำให้ค่าเพิ่มขึ้นทีละหนึ่ง จาก 0000, 0001, 0010, …,1111 ตามลำดับ แล้ววนกลับไปเริ่มต้นที่ 0000 ใหม่ได้
- 7.3 แต่ถ้ากดปุ่ม PB2 จะทำให้ได้ค่าเป็น 0000 ทันที (หมายถึง การรีเซตค่าเป็นศูนย์)
รูปที่ 3.1.1: ผังวงจรสำหรับเชื่อมต่อบอร์ด Arduino
const byte PB_1 = 2; const byte PB_2 = 3; const byte LEDS[4] = {4,5,6,7}; void setup() { pinMode( PB_1, INPUT ); pinMode( PB_2, INPUT ); for (int i=0; i < 4; i++) { pinMode( LEDS[i], OUTPUT ); digitalWrite( LEDS[i], (i==0) ? HIGH : LOW ); } } void loop() { // Write your code below } |
โค้ดที่ 3.1.1: โค้ดตัวอย่างสำหรับ Arduino
ผลการทดลอง
- ในข้อ 6 ได้โค๊ดดังนี้
const byte PB_1 = 2; const byte PB_2 = 3; const byte LEDS[4] = {4,5,6,7}; void setup() { pinMode( PB_1, INPUT ); pinMode( PB_2, INPUT ); for (int i=0; i < 4; i++) { pinMode( LEDS[i], OUTPUT ); digitalWrite( LEDS[i], (i==0) ? HIGH : LOW ); } } void loop(){ if (digitalRead(PB_1)==LOW){ while(digitalRead(PB_1)==LOW); delay(2); j++; if(j==4)j=0; for (int i=0; i<4; i++){ digitalWrite (LEDS[i], (i==j)? HIGH:LOW); } } if (digitalRead(PB_2)==LOW){// while(digitalRead(PB_2)==LOW); delay(2); j--; if(j<0)j=3; for (int i=0; i<4; i++){ digitalWrite (LEDS[i], (i==j)? HIGH:LOW); } } } |
- ในข้อ 7 ได้โค๊ดดังนี้
const byte PB_1=2; const byte PB_2=3; const byte LEDS[4] = {4,5,6,7}; int count=0; void setup(){ pinMode( PB_1, INPUT); pinMode( PB_2, INPUT); for (int i=0; i<4; i++){ pinMode (LEDS[i], OUTPUT); digitalWrite (LEDS[i], (i==0)? HIGH:LOW); } } void loop(){ byte t=count; if (digitalRead(PB_1)==LOW){ while(digitalRead(PB_1)==LOW); delay(2);/ count++; if(count==16)count=0; } if (digitalRead(PB_2)==LOW){ while(digitalRead(PB_2)==LOW); delay(2);// debounce count=0; } for (int i=0; i<4; i++){ digitalWrite (LEDS[i], t & 1); t >>= 1; } } |
รูปประกอบการทดลอง
วงจรบนเบรดบอร์ด
ผังวงจร
รูปการต่อวงจร 1
No comments:
Post a Comment