วันพุธที่ 21 มีนาคม พ.ศ. 2561

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

นางสาว กัญญารัตน์  สังขพันธ์ 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 จะดับ

วิดีโอประกอบ




ไม่มีความคิดเห็น:

แสดงความคิดเห็น