ใบงานที่ 2 SwitchCase การแสดงผสบน 7-Segment

นางสาวกิตติญากร ขาวใบไม้ 6031280024
นางสาวกิตติมา อุดมปัญญาศิริกุล 6031280025
ปวส.1/2 คอมพิวเตอร์ซอฟต์แวร์

7 Segment คืออะไร
7 Segment คือหน้าจอแสดงผลตัวเลข - ตัวอักษร (ได้บางตัว) ที่มีหน้าจอทำมาจากการจัดวางหลอด LED ในแนวยาว เมื่อทำให้หลอด LED แต่ละดวงติดพร้อมกัน ก็จะทำให้แสดงออกมาเป็นตัวเลขทรงเหลี่ยมได้
  1. รูปร่างหน้าตาของ 7 Segment 1 หลัก (ขอบคุณรูปภาพจากเว็บไซต์ tandyonline.co.uk)
  2. รูปแสดง 7 Segment ที่แสดงผลออกมาเป็นตัวเลขต่างๆ (ขอบคุณรูปภาพจาก maruen.tistory.com
  3. แสดงขาของ 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


อุปกรณ์ที่ใช้

  1. 7 Segment 
  2. โปรโตบอร์ด
  3. บอร์ดArduino Uno R3
  4. สายไฟผู้ผู้
  5. สายอัพโหลด
  6. ตัวต้านทาน 220 Ohm
รูปวงจร

https://drive.google.com/open?id=12FUbskDHbb6OSwJKyv-qEy4UCoIonAPp
https://drive.google.com/open?id=1tzV14fBdCRSKMTRaCTSdPoikR3GaYELO

ตัวอย่าง
ให้ 7-Segment แสดงผลออกเป็นตัวเลขตามนี้

  1. กด 0 ให้แสดง เลข 0
  2. กด 1 ให้แสดง เลข 1
  3. กด 2 ให้แสดง เลข 2
  4. กด 3 ให้แสดง เลข 3
  5. กด 4 ให้แสดง เลข 4
  6. กด 5 ให้แสดง เลข 5
  7. กด 6 ให้แสดง เลข 6
  8. กด 7 ให้แสดง เลข 7
  9. กด 8 ให้แสดง เลข 8
  10. กด 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

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

เทคนิคการอินเตอร์เฟส (Interfacing Techich)

ใบงานที่ 1 ไฟวิ่ง 8 ดวง

ใบงานที่ 4 การใช้งานเซนเซอร์วัดระยะทาง HC-SR04