สอบถามครับ ผมซื้อจอ 20x4 2004A กับ I2C เมื่อประกอบเข้าด้วยกัน ใช้โปรแกรมนี้
#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.begin (16,2); ได้แก้เป็น 20,4 แล้วก็ไม่แสดงผล
มีตัวอย่างและวิธีใช้งานที่หน้าบทความชัดเจน ลองอ่านอีกครั้งนะครับ
#define I2C_ADDR 0x27 // กำหนดตำแหน่ง Address ของ I2C
// #define I2C_ADDR 0x3F // ในบางกรณี Address ของ I2C เป็น 0x3f
//ให้เปลี่ยน 0x27 เป็น 0x3F
สำหรับ 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