1. รู้และเข้าใจการทำงานของอุปกรณ์ 7-Segment Display
2. ฝึกการต่อวงจรโดยใช้อุปกรณ์ 7-Segment Display และให้ทำงานร่วมกับบอร์ด Arduino
3. ฝึกการใช้งานบอร์ด Arduino และเขียนโค้ดภาษา C/C++ เพื่อกำหนดคำสั่งในการทำงานของบอร์ด Arduin ให้ 7-Segment Display แสดงตัวเลข
รายการอุปกรณ์
1. แผงต่อวงจร (เบรดบอร์ด) 1 อัน
2. บอร์ด Arduino (ใช้แรงดัน +5V) 1 บอร์ด
3. อุปกรณ์ 7-Segment Display 1 ตัว
4. ปุ่มกดแบบสี่ขา 1 ตัว
5. ตัวต้านทาน 330Ω หรือ 470Ω 7 ตัว
6. ตัวต้านทาน 1kΩ 1 ตัว
7. ตัวต้านทาน 10kΩ 1 ตัว
8. ทรานซิสเตอร์ NPN เบอร์ PN2222A 1 ตัว
9. สายไฟสําหรับต่อวงจร 1 ชุด
ขั้นตอนการทดลอง
1. ศึกษาการใช้งาน และตำแหน่งของขาต่างๆ ของอุปกรณ์ 7 -Segment Display (ใช้แบบ Common-Cathode) จากเอกสารดาต้าชีทของผู้ผลิต) วาดรูปอุปกรณ์ ระบุขาต่างๆ และการกำหนดสถานะ LOW หรือ HIGH ที่ขาเหล่านั้น เพื่อให้สามารถแสดงตัวเลขในแต่ละกรณีได้ระหว่าง 0 ถึง 9
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 ของวงจรตามลําดับ
เปลี่ยนเป็นตัวเลขถัดไปประมาณ 1 วินาทีแต่จะแสดงผลกต่อเมื่อกดปุ่ม PB1 ค้างไว้แต่ถ้าไม่กดจะต้องไม่แสดงผลตัวเลขใดๆ (ไม่ติด)
ผลการทดลอง
เชื่อมต่อขา D3, D4, D5, D6, D7, D8, D9 ของบอร์ด Arduino ไปยังขา a, b, c, d, e, f, g ของ
EXAMPLE CODE...
แก้ไขโค้ดสําหรับ Arduino ทำให้ 7-Segment Display สามารถแสดงตัวเลขตั้งแต่ 0 ถึง 9 แล้ววนซ้ำ โดยเว้นระยะเวลาในการเปลี่ยนเป็นตัวเลขถัดไปประมาณ 1 วินาที
CODE...
ผลการทดลอง
เชื่อมต่อขา D3, D4, D5, D6, D7, D8, D9 ของบอร์ด Arduino ไปยังขา a, b, c, d, e, f, g ของ
อุปกรณ์ 7-Segment Display ผ่านตัวต้านทาน 330Ω ต่อขา CC (Common Cathode ( ขาที่ 14)) ไปยัง Gnd ของวงจร เขียนโค้ดตามตัวอย่างโดยใช้ Arduino IDE แล้วทําขั้นตอนคอมไพล์และอัพโหลดโปรแกรมไปยังบอร์ด Arduino โดยจะสังเกตพฤติกรรมการเกิดได้คือ 7-Segment Display จะยังไม่สว่าง
EXAMPLE CODE...
// Add your code below for global variables, constants................................................................... // Add your code below for global variables, constants.
|
แก้ไขโค้ดสําหรับ Arduino ทำให้ 7-Segment Display สามารถแสดงตัวเลขตั้งแต่ 0 ถึง 9 แล้ววนซ้ำ โดยเว้นระยะเวลาในการเปลี่ยนเป็นตัวเลขถัดไปประมาณ 1 วินาที
CODE...
.................................................................................................................................................
{0,1,1,0,0,1,1},{1,0,1,1,0,1,1},{1,0,1,1,1,1,1},{1,1,1,0,0,0,0},{1,1,1,1,1,1,1},{1,1,1,1,0,1,1}}; ;
|
แก้ไขวงจร โดยต่อวงจรตามผังวงจรในรูปที่ 3.2.3 ให้สังเกตว่า มีการต่อวงจรปุ่มกดแบบ Pull-up เพื่อใช้เป็นอินพุต-ดิจิทัลให้บอร์ด Arduino และมีการต่อวงจรทรานซิสเตอร์แบบ NPN เพื่อใช้ควบคุมการไหลของกระแสจากขา CC ของ 7-Segment Display ผ่านตัวทรานซิสเตอร์ NPN จากขา Collector (C) ไปยังขา Emitter (E) และ GND ของวงจรตามลําดับ จากนั้นแก้ไขโค้ดสําหรับ Arduino เพื่อให้แสดงตัวเลขตั้งแต่ 0 ถึง 9 แล้ววนซ้ำ โดยเว้นระยะเวลาในการเปลี่ยนเป็นตัวเลขถัดไปประมาณ 1 วินาทีแต่จะแสดงผลกต่อเมื่อกดปุ่ม PB1 ค้างไว้แต่ถ้าไม่กดจะต้องไม่แสดงผลตัวเลขใดๆ (ไม่ติด)
CODE....
................................................................................................................................................. |
คําถามท้ายการทดลอง
1. วงจรทรานซิสเตอร์แบบ NPN ในวงจรนี้ใช้เพื่อวัตถุประสงค์ใด จงอธิบายหลักการทํางาน
= นำทรานซิสเตอร์แบบ NPN มาใช้เพื่อกำหนดทิศทางการไหลของกระแสไฟ มีการทำงานคล้ายๆ สวิตทางอิเล็กทรอนิกส์สำหรับสั่งให้ทำงานและไม่ทำงาน เมื่อมีการกดปุ่ม เราจะกำหนดให้ D10 มีสถานะเป็น HIGH ทำให้มีกระแสไฟป้อนเข้าขา B ของทรานซิสเตอร์และไหลเข้าไปในวงจรเปรียบเสมือนมีการเปิดสวิต แต่ถ้าเราไม่ได้กดปุ่ม D10 ก็จะมีสถานะเป็น LOW ทำให้ไม่มีกระแสไฟไหลเข้าไปในวงจร เปรียบเสมือนได้ปิดสวิตเอาไว้
2. ถ้าจะใช้ 7-Segment Display สองหลักพร้อมกัน เช่น เพื่อแสดงผลเป็นตัวเลข “00” ถึง “99”
................................................................................................................................................. const byte SEVEN_SEG[7] = {2, 3, 4, 5, 6, 7, 8}; const byte SEVEN_SEG2[7] = { 9, 10, 11, 12, 13, 44, 45}; const byte ZeroToNine[10][7] = {{1, 1, 1, 1, 1, 1, 0}, {0, 1, 1, 0, 0, 0, 0}, {1, 1, 0, 1, 1, 0, 1}, {1, 1, 1, 1, 0, 0, 1}, {0, 1, 1, 0, 0, 1, 1}, {1, 0, 1, 1, 0, 1, 1}, {1, 0, 1, 1, 1, 1, 1}, {1, 1, 1, 0, 0, 0, 0}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 0, 1, 1} };
void setup() { for (int i = 0; i < 7; i++) { pinMode(SEVEN_SEG[i], OUTPUT); pinMode(SEVEN_SEG2[i], OUTPUT); digitalWrite(SEVEN_SEG[i], HIGH ); digitalWrite(SEVEN_SEG2[i], HIGH ); } }
int count = 0;
void loop() {
if (count <= 99) { for (int i = 0; i < 10; i++) { for (int l = 0; l < 7; l++) { digitalWrite(SEVEN_SEG[l], ZeroToNine[i][l] ); }
for (int j = 0; j < 10; j++) { for (int k = 0; k < 7; k++) { ; digitalWrite(SEVEN_SEG2[k], ZeroToNine[j][k] ); } count++; delay(1000); } } } else count = 0;
}
|
ไม่มีความคิดเห็น:
แสดงความคิดเห็น