ใบงานที่ 2 SwitchCase การแสดงผสบน 7-Segment
นางสาวกิตติญากร ขาวใบไม้ 6031280024
นางสาวกิตติมา อุดมปัญญาศิริกุล 6031280025
ปวส.1/2 คอมพิวเตอร์ซอฟต์แวร์
อุปกรณ์ที่ใช้
อ้างอิง
https://www.ioxhop.com/article/32/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99-7-segment-%E0%B8%81%E0%B8%B1%E0%B8%9A-arduino-%E0%B8%95%E0%B8%AD%E0%B8%99%E0%B8%97%E0%B8%B5%E0%B9%88-1-7-segment-%E0%B8%AB%E0%B8%A5%E0%B8%B1%E0%B8%81%E0%B9%80%E0%B8%94%E0%B8%B5%E0%B8%A2%E0%B8%A7
นางสาวกิตติมา อุดมปัญญาศิริกุล 6031280025
ปวส.1/2 คอมพิวเตอร์ซอฟต์แวร์
7 Segment คืออะไร
7 Segment คือหน้าจอแสดงผลตัวเลข - ตัวอักษร (ได้บางตัว) ที่มีหน้าจอทำมาจากการจัดวางหลอด LED ในแนวยาว เมื่อทำให้หลอด LED แต่ละดวงติดพร้อมกัน ก็จะทำให้แสดงออกมาเป็นตัวเลขทรงเหลี่ยมได้
- รูปร่างหน้าตาของ 7 Segment 1 หลัก (ขอบคุณรูปภาพจากเว็บไซต์ tandyonline.co.uk)
- รูปแสดง 7 Segment ที่แสดงผลออกมาเป็นตัวเลขต่างๆ (ขอบคุณรูปภาพจาก maruen.tistory.com
- แสดงขาของ 7 Segment (ขอบคุณรูปภาพจาก projectcircuitpack.yolasite.com)
การแบ่งแยก 7 Segment
แบ่งตามขา Common
- Common Anode - ขาคอมม่อนจะต้องต่ออยู่กับขั่วบวก แล้วขาอื่นๆ ต่ออยู่กับกราว์ด จึงจะทำให้ส่วนนั้นๆติดสว่าง
- Common Cathode - ขาคอมม่อนจะต้องต่ออยู่กับขั่วลบ แล้วขาอื่นๆ ต่ออยู่กับขั้วบวก จึงจะทำให้ส่วนนั้นๆติดสว่าง
แบ่งตามขนาด
7 Segment มีด้วยกันหลายขนาด ขนาดที่เป็นมาตรฐานใช้งานทั่วไปคือขนาด 0.56 นิ้ว มีขนาดเล็กกว่า หรือใหญ่กว่าให้เลือกใช้งานด้วย
แบ่งตามจำนวนตัวเลข
ใน 7 Segment อาจจะมีตัวเลขแสดงผลหลายๆตัวติดอยู่ด้วยกัน ทำให้การต่อวงจรง่ายมากยิ่งขึ้น
แบ่งตามสี
- สีแดง
- สีเขียว
- สีอื่นๆ - ผสมสีเพื่อให้สีไม่เหมือนกันในแต่ละจุดได้
การสั่งงาน 7 Segment
7 Segment มีขาหลักๆอยู่ด้วยกันทั้งหมด 9 ขา คือ a b c d e f g dot และ common ในกรณีที่มีตัวเลขจำนวนหลักมากขึ้น ก็จะมีขา Common เพิ่มมากขึ้น เป็น com1 สำหรับควบคุมการแสดงผลหลักที่ 1 , com2 ควบคุมการแสดงผลหลักที่ 2 , com(n) ควบคุมการแสดงผลหลักที่ n
จากรูปที่ 2 จะเห็นว่าในแต่ละแถบยาว จะมีตัวอักษรกำกับอยู่ ซึ่งเป็นชื่อของขาที่ใช้ควบคุมแถบนั้น ตัวอย่างเช่น หากต้องการให้แสดงผลตัวเลข 1 จะต้องให้แถบ b และ c ติดสว่าง จึงจะได้เป็นรูปเลข 1 ที่สมบูรณ์ และหากต้องการให้ติดเลข 3 จะต้องให้แถบ a b c d และ g ติดสว่าง จึงจะทำให้แสดงเลข 3 ที่สมบูรณ์
การจะทำให้แถบแต่ละแถบติดสว่างได้ จะต้องทราบก่อนว่า 7 Segment นั้นเป็นคอมม้อนอะไร เมื่อทราบแล้วจะทำให้สามารถควบคุมการติดดับของแต่ละแถบได้ แบบเดียวกับการควบคุม LED โดยที่หากเป็นคอมม้อน Anode จะต้องต่อขาคอมม้นเข้ากับขั้วบวกของแหล่งจ่ายไฟ (5V) และหากต้องการให้แถบใดติดสว่าง จะต้องให้ขาของแถบนั้นต้องลงกราว์ด (เป็นลอจิก LOW หรือที่เรียกว่า ลอจิกศูนย์)
แต่ถ้าหากเป็นคอมม้อน Cathode จะต้องต่อขาคอมม้อนเข้ากับกราว์ด แล้วต่อขาของแถบที่ต้องการแสดงผลเข้าที่ขั้วบวกของแหล่งจ่าย (เป็นลอจิก HIGH หรือที่เรียกว่าลอจิกหนึ่ง)
ต่อวงจรใช้งานกับ Arduino
เพื่อความง่ายในการต่อวงจร และไม่ยุ่งยากในการเขียนโปรแแกรม ทำให้ในบทความนี้ผมเลือกที่จะใช้ขา 0 ถึงขา 6 ในการต่อร่วมกับ 7 Segment โดยเรียงให้ a - g ต่อเข้าที่ขา 0 - 7
กรณี Comon Anode
กรณี Comon Cathode
อุปกรณ์ที่ใช้
- 7 Segment
- โปรโตบอร์ด
- บอร์ดArduino Uno R3
- สายไฟผู้ผู้
- สายอัพโหลด
- ตัวต้านทาน 220 Ohm
รูปวงจร
https://drive.google.com/open?id=12FUbskDHbb6OSwJKyv-qEy4UCoIonAPp
https://drive.google.com/open?id=1tzV14fBdCRSKMTRaCTSdPoikR3GaYELO
ตัวอย่าง
ให้ 7-Segment แสดงผลออกเป็นตัวเลขตามนี้
https://drive.google.com/open?id=1tzV14fBdCRSKMTRaCTSdPoikR3GaYELO
ตัวอย่าง
ให้ 7-Segment แสดงผลออกเป็นตัวเลขตามนี้
- กด 0 ให้แสดง เลข 0
- กด 1 ให้แสดง เลข 1
- กด 2 ให้แสดง เลข 2
- กด 3 ให้แสดง เลข 3
- กด 4 ให้แสดง เลข 4
- กด 5 ให้แสดง เลข 5
- กด 6 ให้แสดง เลข 6
- กด 7 ให้แสดง เลข 7
- กด 8 ให้แสดง เลข 8
- กด 9 ให้แสดง เลข 9
Code
void setup() {
Serial.begin(9600);
for (int thisPin = 2; thisPin < 12; thisPin++) {
pinMode(thisPin, OUTPUT);
}
}
void loop() {
if (Serial.available() > 0) {
int inByte = Serial.read();
switch (inByte) {
case '0':
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);
break;
case '1':
digitalWrite(3, LOW);
digitalWrite(6, LOW);
digitalWrite(8, HIGH);
digitalWrite(2, HIGH);
digitalWrite(5, HIGH);
digitalWrite(7, HIGH);
digitalWrite(4, HIGH);
break;
case '2':
digitalWrite(2, LOW);
digitalWrite(8, LOW);
digitalWrite(8, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(7, HIGH);
digitalWrite(6, HIGH);
break;
case '3':
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(8, LOW);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(7, HIGH);
digitalWrite(4, HIGH);
break;
case '4':
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(3, LOW);
digitalWrite(6, LOW);
digitalWrite(2, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
break;
case '5':
digitalWrite(2, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
break;
case '6':
digitalWrite(2, LOW);
digitalWrite(7, LOW);
digitalWrite(4, LOW);
digitalWrite(8, LOW);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(3, HIGH);
break;
case '7':
digitalWrite(7, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(4, HIGH);
digitalWrite(5, HIGH);
break;
case '8':
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
break;
case '9':
digitalWrite(7, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(8, LOW);
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, HIGH);
break;
default:
for (int thisPin = 2; thisPin < 12; thisPin++) {
digitalWrite(thisPin, LOW);
}
}
}
}
วิดีโอ
อ้างอิง
https://www.ioxhop.com/article/32/%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99-7-segment-%E0%B8%81%E0%B8%B1%E0%B8%9A-arduino-%E0%B8%95%E0%B8%AD%E0%B8%99%E0%B8%97%E0%B8%B5%E0%B9%88-1-7-segment-%E0%B8%AB%E0%B8%A5%E0%B8%B1%E0%B8%81%E0%B9%80%E0%B8%94%E0%B8%B5%E0%B8%A2%E0%B8%A7
ความคิดเห็น
แสดงความคิดเห็น