เขียนค่าฝุ่นแล้วไม่ออกจอ LCD

สวัสดีครับพอดีเขียนโค้ดให้แสดงค่าฝุ่นไปที่จอLCD ตอนแรกก็แสดงค่าปกติครับ ตอนนี้ไม่แสดงค่าครับ แต่โค้ดอัพได้ปกติครับ (ปล.โค้ดทดลองจอก็มีข้อความขึ้น พอเป็นโค้ดนี้ไม่มีค่าขึ้นเลยครับ)

#include "PMS.h"
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

PMS::DATA data;
PMS pms(Serial);
LiquidCrystal_I2C lcd(0x27, 16, 4);

void setup() {
  Serial.begin(9600); Serial.println();
  // initialize the LCD
   lcd.begin();

  // Turn on the blacklight and print a message.
  lcd.backlight();
  
}

void loop() {
  if (pms.read(data)){
    Serial.print("PM 1.0:  ");
    Serial.println(data.PM_AE_UG_1_0); 
    Serial.print("PM 2.5:  ");
    Serial.println(data.PM_AE_UG_2_5);
    Serial.print("PM 10.0:  ");   
    Serial.println(data.PM_AE_UG_10_0);

    lcd.setCursor(3,0);
    lcd.print("PMS:Reporter");
   
    lcd.setCursor(0, 1);
    lcd.print("PM 1.0:  ");
    lcd.print(data.PM_AE_UG_1_0); 
    lcd.print("   ug/m3");
    
    lcd.setCursor(0, 2);
    lcd.print("PM 2.5:  ");
    lcd.print(data.PM_AE_UG_2_5); 
    lcd.print("   ug/m3");
   
    lcd.setCursor(0, 3);
    lcd.print("PM 10 :  ");
    lcd.print(data.PM_AE_UG_10_0); 
    lcd.print("   ug/m3");
    }
  
delay(4); 
 
}


อันนี้เป็นตอนที่อัพโค้ดทดลองจอนะครับขึ้นปกติ


ส่วนอันนี้ใช้โค้ดข้างต้นครับ ไม่มีข้อความเลย

ใช้ Arduino หรือ ESP8266 หรือ ESP32 ครับ ข้อมูลคุณน้อยจัง

Esp8266 ครับ หัววัด pms3003

ใครรู้ช่วยแก้หน่อยนะครับพอดี ผมต้องรีบส่งก่อนวันที่1 ขอบคุณล่วงหน้าครับ

ลองดูครับ (ผมแค่ Complie ให้ผ่านนะครับ ไม่ลองกับอุปกรณ์จริง)

#include "PMS.h"
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

PMS::DATA data;
PMS pms(Serial);

#include <LCD.h>                          // บรรทัดที่ 1 และ 2 สามารถสลับบรรทัดกันได้
#include <Wire.h>                         // บรรทัดที่ 1 และ 2 สามารถสลับบรรทัดกันได้
#include <LiquidCrystal_I2C.h>            //บรรทัดนี้ต้องอยู่ในบรรทัดที่ 3 เท่านั้น ถ้าไปอยู่บรรทัดที่ 1 และ 2 จะคอมไพล์ไม่ผ่าน
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //// ตั้งค่า Address ของอุปกรณ์จอ LCD ที่มีการเชื่อมต่อแบบ I2C

void setup() {
  Serial.begin(9600); Serial.println();
  // initialize the LCD
   lcd.begin(20, 4);

  // Turn on the blacklight and print a message.
  lcd.backlight();
  
}

void loop() {
  if (pms.read(data)){
    Serial.print("PM 1.0:  ");
    Serial.println(data.PM_AE_UG_1_0); 
    Serial.print("PM 2.5:  ");
    Serial.println(data.PM_AE_UG_2_5);
    Serial.print("PM 10.0:  ");   
    Serial.println(data.PM_AE_UG_10_0);

    lcd.setCursor(3,0);
    lcd.print("PMS:Reporter");
   
    lcd.setCursor(0, 1);
    lcd.print("PM 1.0:  ");
    lcd.print(data.PM_AE_UG_1_0); 
    lcd.print("   ug/m3");
    
    lcd.setCursor(0, 2);
    lcd.print("PM 2.5:  ");
    lcd.print(data.PM_AE_UG_2_5); 
    lcd.print("   ug/m3");
   
    lcd.setCursor(0, 3);
    lcd.print("PM 10 :  ");
    lcd.print(data.PM_AE_UG_10_0); 
    lcd.print("   ug/m3");
    }
  
delay(4); 
 
}

Library Download :
New-LiquidCrystal-master.rar (1.3 MB)

ที่เหลือให้ผู้รู้ช่วยอีกแรงนะครับ ศึกษาดูให้ถ้วนถี่ เราจะได้ความรู้ไปต่อยอดได้เยอะ

คอมแต่ไม่มีค่าแสดงครับ

งั้นลอง Scan Address I2C ดูก่อนครับ ว่า มันเป็น Address อะไร

I2CScaneresp8266_2OK.ino (1.1 KB)

เมื่อได้แล้วก็ ไปเปลี่ยน จาก
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
ตรง 0x27
เป็น

0x… ตามที่ Scan ได้ครับ ซึ่งอาจะเป็น 0x3F ประมาณนั้น

อัพได้แล้วครับพอเปิดใช้อีกทีแล้ว ไม่ขึ้นเกิดจากอะไรครับ

คุณให้รายละเอียดมาน้อยเกินไปครับ เช่น การต่อ Hardware + Code ผมเอง ก็ต้องให้ข้อมูลเท่าที่คิดว่ามันน่าจะมีปัญหามาจากอะไรบ้าง 555…

แคป serial ออกมาดูด้วยครับ ดูว่ามันโชวร์อะไรบ้างการทำงานปกติ มันทำไหม