Why do I have to open Serial Monitor to display non-NaN values retrieved from DHT22,
what am I doing wrong in the code below?
#include <DHT.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
// OLED display TWI address
#define OLED_ADDR 0x3C
// reset pin not used on 4-pin OLED module
Adafruit_SSD1306 display(-1); // -1 = no reset pin
// 128 x 64 pixel display
#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif
#define DHTPIN D3
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(115200);
delay(100);
dht.begin();
pinMode (DHTPIN, OUTPUT);
/// initialize and clear display
display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR);
display.clearDisplay();
// display.drawRect(1, 1, display.width()-1, display.height()-1, WHITE); // draws the outer rectangular boundary on the screen
display.display();
// display a pixel in each corner of the screen
display.drawPixel(0, 0, WHITE);
display.drawPixel(127, 0, WHITE);
display.drawPixel(0, 63, WHITE);
display.drawPixel(127, 63, WHITE);
// display a line of text
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(20, 18);
display.print("Welcome");
display.setCursor(25, 40);
display.print("San");
// update display with all of the above graphics
display.display();
}
void loop() {
// put your main code here, to run repeatedly:
float h = dht.readHumidity();
float t = dht.readTemperature();
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 1);
display.print("Showing Temperature");
// display Temperature
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(1, 18);
display.print("T : ");
display.print(t);
display.setTextSize(1);
display.print((char)247);
display.setTextSize(2);
display.print("C");
display.setCursor(1, 40);
display.print("H : ");
display.print(h);
display.print(" %");
// update display with all of the above graphics
display.display();
}
After uploading code it does will display NaN but when I open serial monitor it works fine displaying actual values from DHT22 :o
below is the fritzing of the hookup, I do not have witty cloud in fritzing, so I have used wemos D1Mini instead. on wemos d1 mini 3v3 is VCC on witty cloud dev board.
It looks like loop function doesn't execute by itself unless I open the serial monitor, why is it so? please help