วันพุธที่ 22 กุมภาพันธ์ พ.ศ. 2560

Arduino จอ LCD แบบ I2C แสดงข้อความได้

 Arduino จอ LCD แบบ I2C แสดงข้อความได้

จอ  LCD ปกติจะใช้สายไฟหลายเส้นในการต่อใช้งาน ทำให้บางครั้ง Arduino มีขาไม่พอที่จะควบคุมและยังทำให้การเดินสายต่อใช้งานไม่สะดวก มีวงจรแปลงสัญญาณสำหรับติดต่อจอ LCD แบบอินเตอร์เฟส I2C ต่อแปลงการใช้สายไฟหลาย ๆ เส้น ให้เหลือสายไฟเพียง 2 เส้น ทำให้การเขียนโปรแกรมและการต่อวงจรทำได้ง่ายขึ้น เพียงแค่ใช้โมดูล LCD I2C ไปต่อกับจอ LCD แบบเดิม ก็สามารถใช้งานได้ทันที โมดูล I2C LCD นี้จะมีตัวต้านทานปรับค่าได้สำหรับปรับความสว่างหน้าจอมาด้วย

การแสดงผลของจอ LCD ถ้ามองชัด ๆ แล้วจะเห็นว่าข้อความเกิดจากช่องสี่เหลี่ยมเล็ก ๆ มีสถานะเปิดกับปิดรวมกันหลาย ๆ ช่องกลายเป็น 1 ตัวอักษร ซึ่งเราสามารถสร้างอักษรของเราขึ้นมาเองได้ อาจจะใช้เว็บนี้ในการช่วยสร้างข้อความ http://fusion94.org/lcdchargen/
จอ LCD ที่ใช้งานร่วมกับโมดูล LCD I2C นี้มีอยู่ 2 รุ่นคือ
1. รุ่น LCD 16x2 หรือรุ่น LCD 1602 สามารถแสดงข้อความได้ 16 ตัวอักษร 2 บรรทัด
2. รุ่น LCD 20x4 หรือรุ่น LCD 2004 สามารถแสดงข้อความได้ 20 ตัวอักษร 4 บรรทัด

วิธีการใช้งาน Arduino จอ LCD แบบ I2C แสดงข้อความ
ดาวน์โหลดไลบารี LCD คลิกที่่นี่ หลังจากติดตั้งไลบารีแล้ว ก็พร้อมใช้งานได้เลย

การต่อใช้งาน  จอ LCD แบบ I2C
  • Vcc -> 3.3-5V
  • Gnd -> Gnd
  • SDA -> 4
  • SCL -> 5
ตัวอย่างโคด 1602 2004 LCD Adapter Plate IIC I2C Interface for arduino
#include <Wire.h>
#include <LCD.h>
#include <LiquidCrystal_I2C.h>

#define I2C_ADDR 0x27 // กำหนดตำแหน่ง Address ของ I2C
// #define I2C_ADDR 0x3F // ในบางกรณี Address ของ I2C เป็น 0x3f 
//ให้เปลี่ยน 0x27 เป็น 0x3F

#define BACKLIGHT_PIN 3


LiquidCrystal_I2C lcd(I2C_ADDR,2,1,0,4,5,6,7);

void setup()
{
// lcd.begin (20,4); 
lcd.begin (16,2);

/* byte customChar0[8] = {
    0b00000,
    0b00000,
    0b00000,
    0b11111,
    0b11111,
    0b11111,
    0b11111,
    0b00000
  };
  byte customChar1[8] = {
    0b11100,
    0b11100,
    0b11100,
    0b11111,
    0b11111,
    0b11111,
    0b11110,
    0b00000
  };
  lcd.createChar(1, customChar0);
  lcd.createChar(2, customChar1);*/
// Switch on the backlight
lcd.setBacklightPin(BACKLIGHT_PIN,POSITIVE);
lcd.setBacklight(HIGH);
lcd.home (); // ไปที่ตัวอักษรที่ 0 แถวที่ 1

lcd.setCursor(1,0); // ไปทตัวอักษรที่ 1 แถวที่ 1
lcd.print("Welcome ALL");

lcd.setCursor(3,1); // ไปที่ตัวอักษรที่ 5 แถวที่ 2
lcd.print("ArduinoAll");
// lcd.write(1);
// lcd.write(2);

}

void loop()
{

}
จอ LCD 16x2 with I2C ทางร้านตรวจสอบให้อย่างละเอียด ทุกจุด ทุก pixel ถ้ามีปัญหาแม้เแต่จุด pixel เดียว ก็จะไม่ส่งให้ลูกค้า

I2C มี 2 เบอร์ PCF8574T/PCF8574AT

Datasheet บอกไว้ชัดเจนตามนี้ http://www.nxp.com/documents/data_sheet/PCF8574_PCF8574A.pdf


และ แต่ละเบอร์เปลี่้ยน address ได้ 8 แบบ มีความเป็นไปได้ 16 address แบบ ซึ่งทำให้เราสามารถต่อ LCD แบบ I2C ได้ถึง 16 ตัวพร้อมกันบนบอร์ดเดียว โดยใช้ขาควบคุมเพียง 2 เส้น





สำหรับ I2C บางตัวอาจจะมี Address ไม่ตรงตามตัวอย่างเนื่องจากสามารถตั้งค่าได้ถึง 8 Address 
จึงต้องแน่ใจว่ากำหนดค่า Address ของบอร์ด I2C ถูกต้องแล้ว
ถ้าไม่รู้ว่าเซตเป็นค่าเท่าไหร่ วิธีหา Address ของ I2C จากตัวอย่างโคดในหน้านี้ครับ 
http://www.instructables.com/id/I2C-LCD-Controller-the-easy-way/

ถ้าใครใช้ arduino IDE 1.6.x วิธีทำคล้ายกัน โดยใช้ไลบารีตัวนี้ครับ 
allarduino.com/download/LiquidCrystal_I2C_IDE1.6.rar

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

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