นางสาว กัญญารัตน์ สังขพันธ์ 6031280023 1สทค.2
นาย จารุเดช สังข์ประไพ 6031280027 1สทค.2
Switch Case การแสดงผลบน 7-Segment
7 Segment คืออะไร
7 Segment คือหน้าจอแสดงผลตัวเลข - ตัวอักษร (ได้บางตัว) ที่มีหน้าจอทำมาจากการจัดวางหลอด LED ในแนวยาว เมื่อทำให้หลอด LED แต่ละดวงติดพร้อมกัน ก็จะทำให้แสดงออกมาเป็นตัวเลขทรงเหลี่ยมได้
รูปแสดง 7 Segment ที่แสดงผลออกมาเป็นตัวเลขต่างๆ
รูปแสดงขาของ 7 Segment
การแบ่งแยก 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 หรือที่เรียกว่าลอจิกหนึ่ง)
ขอขอบคุณข้อมูลจาก https://www.ioxhop.com/article/32
อุปกรณ์
1. บอร์ด Arduino 1 บอร์ด
2. โปรโตบอร์ด 1 บอร์ด
3. 7-Segment 1 ตัว
4. ตัวต้านทาน 220 𝞨 1 ตัว
5. สายไฟ ผู้ - ผู้ 9 เส้น
รูปวงจร
Code Program Arduino
void setup()
{
// initialize serial communication:
Serial.begin(9600);
// initialize the LED pins:
for (int thisPin = 2; thisPin < 10; 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(4, LOW);
digitalWrite(5, HIGH);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);
digitalWrite(9, LOW);
break;
case '1':
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);//c
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);//b
digitalWrite(9, LOW);
break;
case '2':
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);//c
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, LOW);//b
digitalWrite(9, LOW);
break;
case '3':
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);//c
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, LOW);//b
digitalWrite(9, LOW);
break;
case '4':
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);//c
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(8, LOW);//b
digitalWrite(9, LOW);
break;
case '5':
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);//c
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);//b
digitalWrite(9, LOW);
break;
case '6':
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);//c
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, HIGH);//b
digitalWrite(9, LOW);
break;
case '7':
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, LOW);//c
digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
digitalWrite(7, LOW);
digitalWrite(8, LOW);//b
digitalWrite(9, LOW);
break;
case '8':
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);//c
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);//b
digitalWrite(9, LOW);
break;
case '9':
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
digitalWrite(4, LOW);//c
digitalWrite(5, LOW);
digitalWrite(6, LOW);
digitalWrite(7, LOW);
digitalWrite(8, LOW);//b
digitalWrite(9, LOW);
break;
default:
// turn all the LEDs off:
for (int thisPin = 2; thisPin < 10; thisPin++) {
digitalWrite(thisPin, HIGH);
}
}
}
}
อธิบายวงจร
เมื่อทำการพิมพ์เลข 0-8 บน Serial Monitor และกดส่งค่าไป 7-Segment จะแสดงผลเป็นตัวเลขตามที่พิมพ์ลง Serial Monitor และถ้าหากกดตัวอื่นนอกเหนือจากตัวเลขที่กำหนด 7-Segment จะดับ
วิดีโอประกอบ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น