วันพฤหัสบดีที่ 22 มีนาคม พ.ศ. 2561

ใบงานที่ 2 การใช้งาน 7 Segment กับ Arduino

นางสาวจริญญา แสงวงศ์   1 สทค 2 รหัส 026
นางสาวจิรนันท์ จานศิลา  1 สทค 2 รหัส 028

 การใช้งาน 7 Segment กับ Arduino


      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







อ้างอิงข้อมูลจาก : https://www.ioxhop.com/article/32/การใช้งาน-7-segment-กับ-arduino-ตอนที่-1-7-segment-หลักเดียว



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

1.บอร์ด Arduino                        1 ตัว
2.สาย USB                                1 เส้น
3.โฟโต้บอร์ด                             1 อัน
4.7 Segment                               1 ตัว
5.ตัวต้านทาน 220                   1 ตัว
6.สายไฟผู้-ผู้                              9 เส้น
7.โปรแกรม Arduino
8.PC / NoteBook









รูปวงจร (Fritzing)



















คลิก Download เพื่อดาวน์โหลดรูปไปแก้เพิ่มเติม แต่ทั้งนี้ต้องมีโปรแกรม Fritzing อยู่ในเครื่องคอม ฯ ของเราก่อนนะคะ หากไม่มีสามารถโหลดได้ที่ DownloadProgramFritzing 





Code : โปรแกรม Arduino



หลักการทำงาน มีดังนี้
- เมื่อเปิด Serial monitor ขึ้นมา
             กดเลข 0 ใน Serail moniter และกด Enter เลข 0 ก็จะมาขึ้นที่ 7 Segment 
             กดเลข 1 ใน Serail moniter และกด Enter เลข 1 ก็จะมาขึ้นที่ 7 Segment
             กดเลข 2 ใน Serail moniter และกด Enter เลข 2 ก็จะมาขึ้นที่ 7 Segment
             กดเลข 3 ใน Serail moniter และกด Enter เลข 3 ก็จะมาขึ้นที่ 7 Segment
             กดเลข 4 ใน Serail moniter และกด Enter เลข 4 ก็จะมาขึ้นที่ 7 Segment
             กดเลข 5 ใน Serail moniter และกด Enter เลข 5 ก็จะมาขึ้นที่ 7 Segment
             กดเลข 6 ใน Serail moniter และกด Enter เลข 6 ก็จะมาขึ้นที่ 7 Segment
             กดเลข 7 ใน Serail moniter และกด Enter เลข 7 ก็จะมาขึ้นที่ 7 Segment
             กดเลข 8 ใน Serail moniter และกด Enter เลข 8 ก็จะมาขึ้นที่ 7 Segment
             กดเลข 9 ใน Serail moniter และกด Enter เลข 9 ก็จะมาขึ้นที่ 7 Segment




/*
  Switch statement with serial input

  Demonstrates the use of a switch statement. The switch statement allows you
  to choose from among a set of discrete values of a variable. It's like a
  series of if statements.

  To see this sketch in action, open the Serial monitor and send any character.
  The characters a, b, c, d, and e, will turn on LEDs. Any other character will
  turn the LEDs off.

  The circuit:
  - five LEDs attached to digital pins 2 through 6 through 220 ohm resistors

  created 1 Jul 2009
  by Tom Igoe

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/SwitchCase2
*/

void setup() {
  // initialize serial communication:
  Serial.begin(9600);
  // initialize the LED pins:
  for (int thisPin = 1; thisPin < 12; thisPin++) {
    pinMode(thisPin, OUTPUT);
  }
}

void loop() {
  // read the sensor:
  if (Serial.available() > 0) {
    int inByte = Serial.read();
    // do something different depending on the character received.
    // The switch statement expects single number values for each case; in this
    // example, though, you're using single quotes to tell the controller to get
    // the ASCII value for the character. For example 'a' = 97, 'b' = 98,
    // and so forth:

   switch (inByte) {
      case '0':
        digitalWrite(2, LOW);
        digitalWrite(7, LOW);
        digitalWrite(6, LOW);
        digitalWrite(9, LOW);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(10,HIGH);
        break;
      case '1':
        digitalWrite(2, HIGH);
        digitalWrite(7, HIGH);
        digitalWrite(6, LOW);
        digitalWrite(9, HIGH);
        digitalWrite(3, HIGH);
        digitalWrite(4, LOW);
        digitalWrite(10,HIGH);
        break;
      case '2':
        digitalWrite(2, LOW);
        digitalWrite(7, LOW);
        digitalWrite(6, LOW);
        digitalWrite(9, HIGH);
        digitalWrite(3, LOW);
        digitalWrite(4, HIGH);
        digitalWrite(10,LOW);
        break;
      case '3':
        digitalWrite(2, HIGH);
        digitalWrite(7, LOW);
        digitalWrite(6, LOW);
        digitalWrite(9, HIGH);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(10,LOW);
        break;
      case '4':
        digitalWrite(2, HIGH);
        digitalWrite(7, HIGH);
        digitalWrite(6, LOW);
        digitalWrite(9, LOW);
        digitalWrite(3, HIGH);
        digitalWrite(4, LOW);
        digitalWrite(10,LOW);
        break;
      case '5':
        digitalWrite(2, HIGH);
        digitalWrite(7, LOW);
        digitalWrite(6, HIGH);
        digitalWrite(9, LOW);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(10,LOW);
        break;
      case '6':
        digitalWrite(2, LOW);
        digitalWrite(7, LOW);
        digitalWrite(6, HIGH);
        digitalWrite(9, LOW);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(10,LOW);
        break;
      case '7':
        digitalWrite(2, HIGH);
        digitalWrite(7, LOW);
        digitalWrite(6, LOW);
        digitalWrite(9, HIGH);
        digitalWrite(3, HIGH);
        digitalWrite(4, LOW);
        digitalWrite(10,HIGH);
        break;
      case '8':
        digitalWrite(2, LOW);
        digitalWrite(7, LOW);
        digitalWrite(6, LOW);
        digitalWrite(9, LOW);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(10,LOW);
        break;
      case '9':
        digitalWrite(2, HIGH);
        digitalWrite(7, LOW);
        digitalWrite(6, LOW);
        digitalWrite(9, LOW);
        digitalWrite(3, LOW);
        digitalWrite(4, LOW);
        digitalWrite(10,LOW);
        break;
      default:
        // turn all the LEDs off:
        for (int thisPin = 1; thisPin < 12; thisPin++) {
          digitalWrite(thisPin, LOW);
        }
    }
  }
}




คลิก Download Code เพื่อนำไปแก้ไขเพิ่มเติม แต่ทั้งนี้ต้องมีโปรแกรม Arduino อยู่ในเครื่องคอม ฯ ของเราก่อนนะคะ หากไม่มีสามารถโหลดได้ที่ DownloadArduino 



VDO :






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

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

ใบงานที่ 8 Ultrasonic Object Radar System

นางสาวจริญญา แสงวงศ์ 1 สทค 2 รหัส 6031280026 นางสาวจิรนันท์ จานศิลา 1 สทค 2 รหัส 6031280028    Ultrasonic Object Radar System ...