แสดงบทความที่มีป้ายกำกับ การทดลองที่ 3 แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ การทดลองที่ 3 แสดงบทความทั้งหมด

วันพุธที่ 3 กันยายน พ.ศ. 2557

การทดลองที่ 3.2 การใช้อุปกรณ์ 7-Segment Display เพื่อแสดงตัวเลข BCD

การทดลองที่ 3.2 การใช้อุปกรณ์ 7-Segment Display เพื่อแสดงตัวเลข BCD

วัตถุประสงค์
1. ฝึกต่อวงจรโดยใช้อุปกรณ์ 7-Segment Display บนเบรดบอร์ด และใช้งานร่วมกับบอร์ด Arduino
2. เขียนโปรแกรม Arduino เพื่อแสดงตัวเลข โดยใช้อุปกรณ์ 7-Segment Display

รายการอุปกรณ์
1. แผงต่อวงจร (เบรดบอร์ด)                   1 อัน
2. บอร์ด Arduino (ใช้แรงดัน +5V)         1 บอร์ด
3. อุปกรณ์ 7-Segment Display             1 ตัว  (สามารถศึกษา Data Sheet ได้ที่นี่)
4. ปุ่มกดแบบสี่ขา                                    1 ตัว
5. ตัวต้านทาน 330Ω หรือ 470Ω             7 ตัว
6. ตัวต้านทาน 1kΩ                                1 ตัว
7. ตัวต้านทาน 10kΩ                              1 ตัว
8. ทรานซิสเตอร์ NPN เบอร์ PN2222A  1 ตัว (สามารถศึกษา Data Sheet ได้ที่นี่)
9. สายไฟสําหรับต่อวงจร                         1 ชุด

ขั้นตอนการทดลอง
1. ศึกษาการใช้งาน และตําแหนง่ของขาต่างๆ ของอุปกรณ์ 7-Segment Display (ใช้แบบ Common- Cathode) จากเอกสาร (ดาต้าชีทของผู้ผลิต) วาดรูปอุปกรณ์ ระบุขาต่างๆ และการกําหนดสถานะ LOW หรือ HIGH ที่ขาเหล่านั้น เพื่อให้สามารถแสดงตัวเลขในแต่ละกรณีได้ระหว่าง 0 ถึง 9
(สามารถศึกษา Data Sheet ได้ที่นี่)

2. ต่อตัวต้านทาน 330Ω หรือ 470Ω จํานวน 7 ตัว แบบอนุกรมกับขา a, b, c, d, e, f, g แต่ละขาของ อุปกรณ์ 7-Segment Display ตามผังวงจรในรูปที่ 3.2.1

3. ต่อขา CC (Common Cathode) ไปยัง Gnd ของวงจร

4. เชื่อมต่อขา D3, D4, D5, D6, D7, D8, D9 ของบอร์ด Arduino ไปยังขา a, b, c, d, e, f, g ของ อุปกรณ์ 7-Segment Display (ผ่านตัวต้านทาน 330Ω หรือ 470Ω ที่ต่ออนุกรมอยู่สําหรับแต่ละขา)

5. เขียนโค้ดตามตัวอย่างโดยใช้ Arduino IDE แล้วทําขั้นตอนคอมไพล์และอัพโหลดโปรแกรมไปยังบอร์ด Arduino

6. ตรวจสอบความถูกต้องของวงจรบนเบรดบอร์ดก่อน เมื่อถูกต้องแล้ว จึงเชื่อมต่อ +5V และ Gnd  จากบอร์ด Arduino ไปยังเบรดบอร์ด เพื่อใช้เป็นแรงดันไฟเลี้ยง (VCC และ GND) และไม่ต้องใช้ แหล่งจ่ายควบคุมแรงดันจากภายนอก ให้ระวังการต่อสลับขั้วสายไฟ และระวังการต่อถึงกันทางไฟฟ้า ของสายไฟทั้งสองเส้น

7. แก้ไขโค้ดสําหรับ Arduino ให้สามารถแสดงตัวเลขตั้งแต่ 0 ถึง 9 แล้ววนซ้ํา โดยเว้นระยะเวลาในการ เปลี่ยนเป็นตัวเลขถัดไปประมาณ 1 วินาที

8. แก้ไขวงจร โดยต่อวงจรตามผังวงจรในรูปที่ 3.2.3 ให้สังเกตว่า มีการต่อวงจรปุ่มกดแบบ Pull-up เพื่อใช้เป็นอินพุต-ดิจิทัลให้บอร์ด Arduino และมีการต่อวงจรทรานซิสเตอร์แบบ NPN เพื่อใช้ควบคุม การไหลของกระแสจากขา CC ของ 7-Segment Display ผ่านตัวทรานซิสเตอร์ NPN จากขา Collector (C) ไปยังขา Emitter (E) และ GND ของวงจรตามลําดับ

9. แก้ไขโค้ดสําหรับ Arduino เพื่อให้แสดงตัวเลขตั้งแต่ 0 ถึง 9 แล้ววนซ้ํา โดยเว้นระยะเวลาในการ เปลี่ยนเป็นตัวเลขถัดไปประมาณ 1 วินาที แต่จะแสดงผลกต็่อเมื่อกดปุ่ม PB1 ค้างไว้ แต่ถ้าไม่กด จะต้องไม่แสดงผลตัวเลขใดๆ (ไม่ติด)

ผลการทดลอง
ผังวงจรสำหรับเชื่อมต่อ Arduino
ภาพอ้างอิงจากการทดลองที่ 3.2 การใช้อุปกรณ์ 7-Segment Display เพื่อแสดงตัวเลข BCD 
โดย ดร.เรวัต ศิริโภคาภิรมย์ ห้องปฏิบัติการระบบสมองกลฝังตัว(ESL.) มจพ.

ต่อวงจรตามผังวงจร
โค้ดตัวอย่างสำหรับ Arduino Sketch


ผลจากโค้ดตัวอย่าง

แบบที่ 1 7 Segment แสดงตัวเลข 0-9 วนไปเรื่อยๆ
โค้ดสำหรับ Arduino Sketch


วิดีโอผลการทดลอง


แบบที่ 2 7 Segment แสดงตัวเลขวน 0-9 เฉพาะเมื่อกดสวิตซ์
ผังวงจรสำหรับเชื่อมต่อ Arduino เพิ่มวงจรปุ่มกดแบบ Pull Up และทรานซิสเตอร์แบบ NPN
ภาพอ้างอิงจากการทดลองที่ 3.2 การใช้อุปกรณ์ 7-Segment Display เพื่อแสดงตัวเลข BCD 
โดย ดร.เรวัต ศิริโภคาภิรมย์ ห้องปฏิบัติการระบบสมองกลฝังตัว(ESL.) มจพ.

ต่อวงจรตามผังวงจร

โค้ดสำหรับ Arduino Sketch


วิดีโอผลการทดลอง

คำถามท้ายการทดลอง
1. วงจรทรานซิสเตอร์แบบ NPN ในวงจรนี้ใช้เพื่อวัตถุประสงค์ใด จงอธิบายหลักการทํางาน
ทรานซิสเตอร์ในวงจรนี้มีไว้สำหรับควบคุมการติด/ดับของ 7Segment โดยเมื่อกดปุ่มจะให้แรงดันไหลไปที่ขา B ของทรานซิสเตอร์ด้วย จะทำให้กระแสไหลจาก Common Cathode ของ 7 Segment ไปที่ขา C และไปขา E ของทรานซิสเตอร์เพื่อลง GND 7 Segment จึงสามารถติดได้ แต่เมื่อไม่กดปุ่มจะไม่ให้แรงดันไหลไปที่ขา B ของทรานซิสเตอร์ ทำให้กระแสไม่ไหลจากขา Common Cathode ของ 7 Segment ลง GND ได้ 7 Segment จึงไม่ติด

2. ถ้าจะใช้ 7-Segment Display สองหลักพร้อมกัน เช่น เพื่อแสดงผลเป็นตัวเลข “00” ถึง “99”  โดยเพิ่มขึ้นทีละหนึ่ง ทุกๆ 1 วินาที (1000 มิลลิวินาที) แล้ววนกลับไปท่ี “00” ใหม่ได้ จะต้อง ออกแบบวงจร และเขียนโค้ด Arduino ควบคุมอย่างไร
รูปออกแบบวงจรโดยโปรแกรม Frizing
ออกแบบวงจร Arduino Schematic View

ออกแบบวงจร Arduino Breadboard View 

โค้ดสำหรับ Arduino Sketch


อ้างอิง: เอกสารการทดลองที่ 3.2 การใช้อุปกรณ์ 7-Segment Display เพื่อแสดงตัวเลข BCD 
โดย ดร.เรวัต ศิริโภคาภิรมย์ ห้องปฏิบัติการระบบสมองกลฝังตัว(ESL.) มจพ.

การทดลองที่ 3.1 การต่อวงจรปุ่มกดและไดโอดเปล่งแสงสําหรับ Arduino

การทดลองที่ 3.1 การต่อวงจรปุ่มกดและไดโอดเปล่งแสงสําหรับ Arduino

วัตถุประสงค์
1. ฝึกต่อวงจรปุ่มกดและไดโอดเปล่งแสง (LED) และเชื่อมต่อกับขาอินพุต/เอาต์พุต-ดิจิทัลของบอร์ด Arduino
2. ฝึกเขียนโปรแกรมภาษา C/C++ เพื่อกําหนดพฤติกรรมการทํางานของบอร์ด Arduino ตามโจทย์ที่กำหนดให้

รายการอุปกรณ์
1.แผงต่อวงจร (เบรดบอร์ด)                         1 อัน
2. บอร์ด Arduino (ใช้แรงดันลอจิก +5V)    1 บอร์ด
3. ปุ่มกดแบบสี่ขา                                        2 ตัว
4. ไดโอดเปล่งแสงขนาด 5 มม.                   4 ตัว
5. ตัวต้านทาน 10kΩ                                  2 ตัว
6. ตัวต้านทาน 330Ω หรือ 470Ω               4 ตัว
7. สายไฟสําหรับต่อวงจร                             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 ทันที (หมายถงึ การรีเซตค่าเป็นศูนย์) 
ผลการทดลอง
ผังวงจรสำหรับเชื่อมต่อ Arduino
ภาพอ้างอิงจากการทดลองที่ 3.1 การต่อวงจรปุ่มกดและไดโอดเปล่งแสงสําหรับ Arduino
โดย ดร.เรวัต ศิริโภคาภิรมย์ ห้องปฏิบัติการระบบสมองกลฝังตัว(ESL.) มจพ.
    ต่อวงจรตามผังวงจร
    โค้ดตัวอย่างสำหรับ Arduino Sketch


    ผลจากโค้ดตัวอย่าง

    แบบที่ 1 ถ้ากด PB1 LED จะติดไล่จาก LED1->LED2->LED3->LED4->....
                  ถ้ากด PB2 LED จะติดไล่จาก LED1->LED4->LED3->LED2->....
    โค้ดสำหรับ Arduino Sketch


    วิดีโอผลการทดลอง

    แบบที่ 2 ถ้ากด PB1 LED จะติดเรียงกันเป็นเลขฐานสอง
                  ถ้ากด PB2 เป็นการรีเซต
    โค้ดสำหรับ Arduino Sketch


    วิดีโอผลการทดลอง

    อ้างอิง: เอกสารการทดลองที่ 3.1 การต่อวงจรปุ่มกดและไดโอดเปล่งแสงสําหรับ Arduino
    โดย ดร.เรวัต ศิริโภคาภิรมย์ ห้องปฏิบัติการระบบสมองกลฝังตัว(ESL.) มจพ.