ขอความช่วยเหลือหน่อยครับคำสั่ง lcd.clear ไม่ทำงาน

ขอความช่วยเหลือหน่อยครับพี่ๆในกลุ่มพอดีผมใช้ คำสั่ง lcd.clear แล้วคำสั่งไม่ทำงานครับ ผลลัพธ์ออกมาคนละแบบกับที่เขียนโค๊ดลงไปเลยครับ

โค้ต

//--------------------------------------------------------------- LIBRARY SENSOR -----------------------------------------------------------------------------------------//
#define BLYNK_PRINT Serial
#include <LiquidCrystal_I2C.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

BlynkTimer timer;
LiquidCrystal_I2C lcd(0x27, 16, 2);  
//--------------------------------------------------------------- VARIABLES --------------------------------------------------------------------------------------------//
int measurePin = A0;
int ledPower = D5;    

int samplingTime = 280;
int deltaTime = 40;
int sleepTime = 9680;

float voMeasured = 0;
float calcVoltage = 0;
float dustDensity = 0;
//--------------------------------------------------------------- FUNCTION --------------------------------------------------------------------------------------------//
int WifiPercentSignal() {
  int CurrentWiFiSignal,WifiSignal;
  CurrentWiFiSignal = WiFi.RSSI();
  if(CurrentWiFiSignal > -40) CurrentWiFiSignal = -40;
  if(CurrentWiFiSignal < -90) CurrentWiFiSignal = -90;
  WifiSignal = map(CurrentWiFiSignal, -40, -90, 0, 100);
  return WifiSignal;
}
int Airdust(){
  digitalWrite(ledPower, LOW); 
  delayMicroseconds(samplingTime);
  voMeasured = analogRead(measurePin); 
  delayMicroseconds(deltaTime);
  digitalWrite(ledPower, HIGH); 
  delayMicroseconds(sleepTime);
  calcVoltage = voMeasured * (3.3 / 1024);
  dustDensity = 0.17 * calcVoltage - 0.1;
  Serial.print("Raw Signal Value (0-1023): ");
  Serial.print(voMeasured);
  Serial.print(" - Voltage: ");
  Serial.print(calcVoltage);
  if (dustDensity <= 0.00) {
    dustDensity = 0.00;
  }
  dustDensity = dustDensity * 1000;
  Serial.print(" - Dust Density: ");
  Serial.print(dustDensity);
  Serial.println(" µg/m³");
  lcd.home();
  lcd.clear();
  lcd.setCursor(1, 0);
  lcd.print("Dus");
  lcd.setCursor(2, 1);
  lcd.print(dustDensity); 
  lcd.print(" ug/m3  ");
  return dustDensity; 
}
void sendsensor(){
  Blynk.virtualWrite(V10,WifiPercentSignal());
  Blynk.virtualWrite(V1,Airdust());
}
void connect_internet(){
  char auth[34] = "yz-122hagdcFwGKRmfL8jEWFdy5lWgew";
  char sever[15] = "103.233.194.42";
  int port = 8080;
  const char* ssid = "aisfibre_2.4G_Netpuk";
  const char* pass = "kaew170217";
   WiFi.begin(ssid, pass); 
   Blynk.begin(auth, ssid, pass, "103.233.194.42", 8080);
   while (WiFi.status() != WL_CONNECTED) {
    Serial.println("Connecting...  "); 
    Serial.printf("Connection Status: %d\n", WiFi.status()); 
    delay(1000);
  }
  Serial.print("Wi-Fi connected."); 
  Serial.print("IP Address : ");
  Serial.println(WiFi.localIP());
  Serial.print("WifiPercentSignal(%) : ");
  Serial.println(WifiPercentSignal());
}
//--------------------------------------------------------------- SET DEFAULT--------------------------------------------------------------------------------------------//
void setup() {
   Serial.begin(9600);
   connect_internet();
   timer.setInterval(5000L, sendsensor);
}

void loop() {
   Blynk.run();
   timer.run();
}



ผลลัพธ์

ปล.ผลลัพธ์ที่ต้อองการอยู่ในฟังก์ชั่น Airdust ครับ

ขอขอบคุณล่วงหน้าครับ

ผลลัพธ์ที่ต้องการต้องโชว์เท่าไหร่ครับ serial printf ออกมาดูหน่อย เทียบกันครับ

ผลลัพธ์ที่เป็น ค่า dustDensity กำหนดตายตัวอะครับ แต่ตอน ให้ไปโชว์ใน lcd ข้อความมันเพี้ยนนะครับ มันเหมือนไม่ clear ข้อความที่โชว์อยุ่เดิมให้อะครับ

อันนี้คือภาพเพื้ยนหรอครับ

ภาพ

ใช่ละครับพี่ ข้อความมันเพี้ยนนะครับตรง บรรทัดที่ 1 นะครับที่เขียนว่า Dust Density นะครับ ผมลองทดสอบลดให้เหลือแค่คำว่า dust ดู แต่มันไม่ได้ออกมาตามนั้นนะครับ

ทำได้ละครับพี่ ขอบคุณครับ

เยี่ยมมากครับ สรุปให้หน่อยว่าปัญหาคืออะไร แก้ไขอย่างไร

ปัญหาเกิดจาก ผมเผลอไปหมด methon lcd.begin(); กับ lcd.backlight(); จึงทำให้เหมือนกับว่าช่องทางการเชื่อมต่อของโค๊ดกับ จอ LCD หายไปนะครับ

ปล.เขินตายเลยครับบบผมม

1 Likes

เยี่ยมเลยครับขอบคุณที่อัพเดทครับ