<< Go Back

 

 

      คำว่า LCD ย่อมาจากคำว่า Liquid Crystal Display ซึ่งเป็นจอที่ทำมาจากผลึกคริสตัลเหลว หลักการคือด้านหลังจอจะมีไฟส่องสว่าง หรือที่เรียกว่า Backlight อยู่ เมื่อมีการปล่อยกระแสไฟฟ้าเข้าไปกระตุ้นที่ผลึก ก็จะทำให้ผลึกโปร่งแสง ทำให้แสงที่มาจากไฟ Backlight แสดงขึ้นมาบนหน้าจอ ส่วนอื่นที่โดนผลึกปิดกั้นไว้ จะมีสีที่แตกต่างกันตามสีของผลึกคริสตัล เช่น สีเขียว หรือ สีฟ้า ทำให้เมื่อมองไปที่จอก็จะพบกับตัวหนังสือสีขาว แล้วพบกับพื้นหลังสีต่าง ๆ กัน

จอ LCD จะแบ่งเป็น 2 แบบใหญ่ๆตามลักษณะการแสดงผลดังนี้
      1. Character LCD เป็นจอที่แสดงผลเป็นตัวอักษรตามช่องแบบตายตัว
          จอ LCD ที่ใช้งานร่วมกับโมดูล LCD I2C นี้มีอยู่ 2 รุ่น คือ
      1. รุ่น LCD 16x2 หรือรุ่น LCD 1602 สามารถแสดงข้อความได้ 16 ตัวอักษร 2 บรรทัด
      2. รุ่น LCD 20x4 หรือรุ่น LCD 2004 สามารถแสดงข้อความได้ 20 ตัวอักษร 4 บรรทัด
    2. Graphic LCD เป็นจอที่สามารถกำหนดได้ว่าจะให้แต่ละจุดบนหน้าจอกั้นแสง หรือปล่อยแสงออกไป ทำให้จอนี้สามารถสร้างรูปขึ้นมาบนหน้าจอได้ การระบุขนาดจะระบุในลักษณะของจำนวนจุด (Pixels) ในแต่ละแนว เช่น 128x64 หมายถึงจอที่มีจำนวนจุดตามแนวนอน 128 จุด และมีจุดตามแนวตั้ง 64 จุด
ในบทนี้จะกล่าวถึง Character LCD เพียงอย่างเดียว เนื่องจากใช้งานได้ง่าย และนิยมใช้งานในโปรเจคทั่วๆ ไปมากกว่า


    การเชื่อมต่อจะมีด้วยกัน 2 แบบ คือ

  • การเชื่อมต่อแบบขนาน - เป็นการเชื่อมต่อจอ LCD เข้ากับบอร์ด Arduino โดยตรง โดยจะแบ่งเป็นการเชื่อมต่อแบบ 4 บิต และการเชื่อมต่อแบบ 8 บิต ใน Arduino จะนิยมเชื่อมต่อแบบ 4 บิต เนื่องจากใช้สายในการเชื่อมต่อน้อยกว่า
  • การเชื่อมต่อแบบอนุกรม - เป็นการเชื่อต่อกับจอ LCD ผ่านโมดูลแปลงรูปแบบการเชื่อมต่อกับจอ LCD จากแบบขนาน มาเป็นการเชื่อมต่อแบบอื่นที่ใช้สายน้อยกว่า เช่น การใช้โมดูล I2C Serial Interface จะเป็นการนำโมดูลเชื่อมเข้ากับตัวจอ LCD แล้วใช้บอร์ด Arduino เชื่อมต่อกับบอร์ดโมดูลผ่านโปรโตคอล I2C ทำให้ใช้สายเพียง 4 เส้น ก็ทำให้หน้าจอแสดงผลข้อความต่างๆ ออกมาได้

ในบทนี้เราจะพูดถึงการเชื่อมต่อแบบอนุกรม
       การเชื่อมต่อแบบอนุกรม จะใช้งานโมดูล I2C Serial Interface Board Module มาเชื่อมต่อระหว่าง Arduino กับจอ LCD


ใช้สายแพ ตัวเมีย ตัวเมีย 4 เส้น
      LCD                                   บอร์ด Arduino
      GND                 ต่อกับ               -
      VCC                 ต่อกับ                +
      SDA                 ต่อกับ                SDA
      SCL                  ต่อกับ                SCL

รายละเอียดคำสั่งในการสั่งงานระหว่าง Arduino กับ จอ LCD
         คำสั่งในการควบคุมจอ LCD ของ Arduino นั้น ทาง Arduino.cc เขียนเป็น Library มาให้เพื่อสะดวกในการนำไปใช้งาน หลังจากต่อสายเสร็จเรียบร้อย ขั้นตอนแรกในการเริ่มเขียนโปรแกรมคือการเรียกใช้ Library ของ LCD จากไฟล์ชื่อ LiquidCrystal.h หลังจากนั้นมาดูกันว่ามีฟังก์ชั่นที่สำคัญอะไรบ้างที่ใช้สั่งงานให้จอ LCD
         ฟังก์ชัน LiquidCrystal(); ใช้ประกาศขาที่ต้องการส่งข้อมูลไปยังจอ LCD รูปแบบในการสั่งงานคือ
LiquidCrystal lcd(rs, enable, d4, d5, d6, d7) <<<<<<< ในกรณีใช้งานแบบ 4 บิต
LiquidCrystal lcd(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7) <<<<<<< ในกรณีใช้งานแบบ 8 บิต
         ในบทความนี้ใช้แบบ 4 บิต คือ LiquidCrystal lcd(12, 11, 4, 5, 6, 7); ก็หมายถึงการเชื่อมต่อ rs ที่ขา 12 , Enable ที่ขา 11 , และ DB4-DB7 ที่ขา 4-7 ของ Arduino ตามลำดับ
         ฟังก์ชัน begin(); ใช้กำหนดขนาดของจอ ในบทความนี้เราใช้ขนาด 16 ตัวอักษร 2 บรรทัด จึงประกาศเป็น lcd.begin(16, 2); 
         ฟังก์ชัน setCursor(); ใช้กำหนดตำแหน่งและบรรทัดของ Cursor เช่น lcd.setCursor(0, 1); คือ ให้เคอร์เซอร์ไปที่ตำแหน่งที่ 0 บรรทัดที่ 1 การนับตำแหน่งเริ่มจาก 0 ดังนั้น LCD 16×2 มีตำแหน่ง 0 – 15 บรรทัด คือ 0 กับ 1
         ฟังก์ชัน print(); ใช้กำหนดข้อความที่ต้องการแสดง เช่น lcd.print(“168Education”); คือ ให้แสดงข้อความ “168Education” ออกทางหน้าจอ LCD 

  1. เปิดโปรแกรม Arduino IDE
  2. ไปที่คำสั่ง  Sketch > Include Library  คลิกเลือกคำสั่ง  Manage Libraries
  3. จะปรากฏหน้าต่าง Library Manager ในช่องค้นหาให้พิมพ์ว่า LCD I2C จากนั้นหาไลบรารีที่ชื่อว่า LiquidCrystal_PCF8574  แล้วให้คลิกที่ปุ่ม Install 
  4. รอจนกว่าจะทำการติดตั้งเสร็จ

  1. ไปที่โปรแกรม Arduino IDE
  2. เลือกที่คำสั่ง Sketch > Include Library  คลิกที่คำสั่ง LiquidCrystal_PCF8574

จะปรากฏโค้ดตามภาพ

บรรทัดที่ 3 เราจะพิมพ์โค้ด   LiquidCrystal_PCF8574 lcd(0x27);

อธิบายโค้ด
        เริ่มต้นโค้ดกำหนดลักษณะการแสดงของจอ lcd คือการแสดงภาพ 16 ตัวอักษร 2 แถว ตั้งค่าความสว่าง มีค่าตั้งแต่  0-255 กำหนดให้ตัวอักษรที่ 0 แถวที่ 0 แสดงข้อความ “012356789101112” กำหนดให้ตัวอักษรที่ 4 แถวที่ 1 แสดงข้อความ “My  lcd…!”
จากนั้นทำการบันทึกไฟล์ก่อน แล้วเช็คความถูกต้องของ syntax ถ้าถูกต้อง ให้ทำการ Upload โค้ดคำสั่งลงบอร์ด Arduino

หมายเหตุ กรณีที่จอ lcd เป็นสีเหลืองให้เขียนโค้ด
บรรทัดที่3  LiquidCrystal_PCF8574 lcd(0x3F);

 

    เป็นโมดูลที่ใช้สำหรับวัดความเร็วการหมุนของมอเตอร์การทำงานเซนเซอร์นับเหรียญจะส่งสัญญาณ digital ออกมาเป็น 1 กับ  0 (HIGH,LOW) และ analog ออกมาเป็น 1024 , 0 (HIGH,LOW) ทำให้สามารถต่อใช้งานกับ Arduino ได้ง่าย 
สถานะถ้าไม่เจอวัตถุผ่านจะเป็น  HIGH หรือค่าจะเป็น 1 ถ้ามีวัตถุผ่านจะเปลี่ยนสถานะเป็น LOW หรือ ค่าจะเป็น 0
ในโปรแกรมเราจะใช้ขา 2 ของ Arduino ในการอ่านข้อมูล เป็นขา interrupt  
เหตุผลสำหรับที่ต้องใช้ ขา interrupt  ก็คือให้ขั้นจังหวะโปรแกรมเมื่อ ขา 2 เปลี่ยนสถานะ ลอจิก 1 เป็น 0 ให้มางานในฟังก์ชั่น  interrupt  2 ก่อน เพื่อให้สามารถอ่านสัญญาณที่เปลี่ยนแปลงได้ทัน 

    ถ้าเราไม่ใช่ขา interrupt อ่าน บางครั้งโปรแกรมไปทำงานอย่างอื่นอยู่ เช่นติดคำสั่ง Delay อยู่ ทำให้วนกลับมาอ่านสถานะลอจิกที่เซ็นเซอร์นับเหรียญส่งมาไม่ทัน

วิธีการต่ออุปกรณ์  เซ็นเซอร์นับเหรียญ นับรอบ นับจำนวน ตรวจจับวัตถุผ่าน ก้ามปู

การต่อให้ใช้สายแพ ตัวเมีย ตัวเมีย ต่อเข้ากับบอร์ด Arduino uno r3 ไปต่อกับเซนเซอร์ ก้ามปู
S10 -> D0
V10 -> VCC
G10 -> GND

  1. ประกาศค่าตัวแปร
  2. ในส่วนของ void setup() กำหนดการรับค่าของข้อมูล
  3. อธิบายโค้ด

          pinMode คำสั่งที่มีไว้สำหรับกำหนดการทำงานของ pin ที่ต้องการใช้งาน ให้ทำงานเป็นแบบ OUTPUT หรือ INPUT ในที่นี่กำหนดให้ pin_coin_10 การทำงานเป็นแบบ input
  4. สร้างฟังก์ชัน sensor_coin
  5. อธิบายโค้ด
           สร้างเงื่อนไข ถ้ามีการหยอดเหรียญผ่านเซนเซอร์ ทำการเพิ่มค่าตัวแปร count_coin_10 ไปทีละ 1 และเปลี่ยน check_coin_10 เป็นจริง และ ถ้า state_coin_10 เท่ากับ 0 เพื่อทำการเช็คการหยอดเหรียญค้างไว้หรือไม่เพื่อไม่ให้ระบบทำการนับไปเรื่อย ๆ  check_coin_10 เป็นเท็จ

  6. เขียนคำสั่งใน void loop()
  7. เช็คการหยอดเหรียญว่าหยอดครบไหม

    อธิบายโค้ด
    ให้ void loop จะทำการเช็คว่ามีการหยอดเหรียญไปกี่เหรียญ และได้ทำการหยอดครบ 2 เหรียญแล้วหรือยัง ถ้าครบแล้วก็ให้เลือกเมนู

 

<< Go Back