จอ oled ไม่ขึ้นตามที่ต้องการครับ

ภาพ

โค้ต

ในคอมผม เปลี่ยน ssid pass token แล้วครับ 
/*

    -OLED-

   VCC - 3v3

   GND - GND

   D1 - SCL

   D2 - SDA

   -PMS7003-

   VCC - 5V

   GND - GND

   RX - D6

   TX - D7

*/

#include <ESP8266WiFi.h>

#include <BlynkSimpleEsp8266.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

#include "PMS.h"

#include <SoftwareSerial.h>

SoftwareSerial pmsSerial(D6, D7); //RX,TX

PMS pms(pmsSerial);

PMS::DATA data;

#define BLYNK_PRINT Serial

#define SCREEN_WIDTH 128 // OLED display width, in pixels

#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)

#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

char ssid[] = "wifi_ssid";

char pass[] = "wifi_password";

char auth[] = "xxxxxxxxxxxxxxxxxxxxxx"; //Auth Token from Blynk

void setup() {

  Serial.begin(115200);

  pmsSerial.begin(9600);

  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

  Blynk.begin(auth, ssid, pass);

}

void loop() {

  Blynk.run();

  if (pms.read(data)) {

    display_update();

  }

}

void display_update() {

  //------Update OLED------

  display.clearDisplay(); display.setTextColor(WHITE);

  display.drawRoundRect(0, 0, 127, 40, 3, WHITE); display.drawRoundRect(0, 40, 60, 23, 3, WHITE); display.drawRoundRect(60, 40, 66, 23, 3, WHITE);

  display.setCursor(85, 10); display.setTextSize(1); display.println("PM2.5"); display.setCursor(85, 25); display.println("ug/m"); display.setCursor(108, 22); display.println("3");

  display.setCursor(20, 10); display.setTextSize(3); display.print(data.PM_AE_UG_2_5);

  display.setCursor(4, 47); display.setTextSize(1); display.print("PM1 : "); display.print(data.PM_AE_UG_1_0);

  display.setCursor(64, 47); display.setTextSize(1); display.print("PM10 : "); display.print(data.PM_AE_UG_10_0);

  display.display();

  //------sent data to blynk------

  Blynk.virtualWrite(V1, data.PM_AE_UG_1_0);

  Blynk.virtualWrite(V2, data.PM_AE_UG_2_5);

  Blynk.virtualWrite(V3, data.PM_AE_UG_10_0);

  //------print on serial moniter------

  Serial.print("PM 1.0 (ug/m3): ");

  Serial.println(data.PM_AE_UG_1_0);

  Serial.print("PM 2.5 (ug/m3): ");

  Serial.println(data.PM_AE_UG_2_5);

  Serial.print("PM 10.0 (ug/m3): ");

  Serial.println(data.PM_AE_UG_10_0);

}

Remy_Martin (Permpol Thanapunnamas) May 16, 2020, 9:36am #2

ขอดูโค้ตที่ใช้ด้วยครับ

MiNiSize (เซฟ 'คับ) May 17, 2020, 11:40pm #3

ในคอมผม เปลี่ยน ssid pass token แล้วครับ 
/*

    -OLED-

   VCC - 3v3

   GND - GND

   D1 - SCL

   D2 - SDA

   -PMS7003-

   VCC - 5V

   GND - GND

   RX - D6

   TX - D7

*/

#include <ESP8266WiFi.h>

#include <BlynkSimpleEsp8266.h>

#include <Adafruit_GFX.h>

#include <Adafruit_SSD1306.h>

#include "PMS.h"

#include <SoftwareSerial.h>

SoftwareSerial pmsSerial(D6, D7); //RX,TX

PMS pms(pmsSerial);

PMS::DATA data;

#define BLYNK_PRINT Serial

#define SCREEN_WIDTH 128 // OLED display width, in pixels

#define SCREEN_HEIGHT 64 // OLED display height, in pixels

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)

#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

char ssid[] = "wifi_ssid";

char pass[] = "wifi_password";

char auth[] = "xxxxxxxxxxxxxxxxxxxxxx"; //Auth Token from Blynk

void setup() {

  Serial.begin(115200);

  pmsSerial.begin(9600);

  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);

  Blynk.begin(auth, ssid, pass);

}

void loop() {

  Blynk.run();

  if (pms.read(data)) {

    display_update();

  }

}

void display_update() {

  //------Update OLED------

  display.clearDisplay(); display.setTextColor(WHITE);

  display.drawRoundRect(0, 0, 127, 40, 3, WHITE); display.drawRoundRect(0, 40, 60, 23, 3, WHITE); display.drawRoundRect(60, 40, 66, 23, 3, WHITE);

  display.setCursor(85, 10); display.setTextSize(1); display.println("PM2.5"); display.setCursor(85, 25); display.println("ug/m"); display.setCursor(108, 22); display.println("3");

  display.setCursor(20, 10); display.setTextSize(3); display.print(data.PM_AE_UG_2_5);

  display.setCursor(4, 47); display.setTextSize(1); display.print("PM1 : "); display.print(data.PM_AE_UG_1_0);

  display.setCursor(64, 47); display.setTextSize(1); display.print("PM10 : "); display.print(data.PM_AE_UG_10_0);

  display.display();

  //------sent data to blynk------

  Blynk.virtualWrite(V1, data.PM_AE_UG_1_0);

  Blynk.virtualWrite(V2, data.PM_AE_UG_2_5);

  Blynk.virtualWrite(V3, data.PM_AE_UG_10_0);

  //------print on serial moniter------

  Serial.print("PM 1.0 (ug/m3): ");

  Serial.println(data.PM_AE_UG_1_0);

  Serial.print("PM 2.5 (ug/m3): ");

  Serial.println(data.PM_AE_UG_2_5);

  Serial.print("PM 10.0 (ug/m3): ");

  Serial.println(data.PM_AE_UG_10_0);

}

PUYIOT May 31, 2020, 4:26am #4

ลองดู Library ตัวนี้ดูครับ (แค่แนะเป็นแนวทาง)

arduinolibraries.info

ESP8266 and ESP32 OLED driver for SSD1306 displays

I2C display driver for SSD1306 OLED displays connected to ESP8266, ESP32, Mbed-OS

#include "SSD1306.h" 
SSD1306Wire  display(0x3c, D1, D2);


voild setup{

display.init();
  display.flipScreenVertically();
  display.setFont(ArialMT_Plain_16);
  display.setTextAlignment(TEXT_ALIGN_LEFT);


}


voild loop{


    display.display();
    display.clear();
    display.setFont(ArialMT_Plain_10);
    display.drawString(15, 0, " SSID >> ");
    display.setFont(ArialMT_Plain_10);
    display.drawString(0, 15,  " BBBBB "));
    display.setFont(ArialMT_Plain_10);
    display.drawString(15, 30, " IP >> ");
    display.setFont(ArialMT_Plain_16);
    display.drawString(0, 45,  "AAAAAA");


    delay (1000);


}