#include <Wire.h>>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <BlynkSimpleEsp32.h>
#include <ESP32Servo.h>
#include <DHT.h>
char auth[] = BLYNK_AUTH_TOKEN ;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
Servo servo;
Adafruit_SSD1306 display(128, 64, &Wire);
#define BLYNK_TEMPLATE_ID "TMPL6eGouzwKy"
#define BLYNK_TEMPLATE_NAME "hippomorakot"
#define BLYNK_AUTH_TOKEN "ZXi0pUZTZf5cWxbInVX3GcdNQ-PCoL8y"
#define BLYNK_PRINT Serial
#define DHT_PIN 27
#define DHT_TYPE DHT22
DHT dht(DHT_PIN, DHT_TYPE);
String displayString;
void setup()
{
Serial.begin(115200);
dht.begin();
Blynk.begin(auth, ssid, pass);
servo.attach(18);
pinMode(14, OUTPUT);
pinMode(12, OUTPUT);
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(50, 20);
display.println("Suphanat Sihaitthiwath!");
display.println("6409610331");
display.write(3);
display.write(3);
display.write(3);
display.display();
display.startscrollright(0x00, 0x07);
delay(5000);
display.stopscroll();
delay(1000);
display.clearDisplay();
displayString.reserve(10);
}
void loop() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temperature) || isnan(humidity))
displayString = "Failed";
} else {
displayString = String(tempC, 1);
displayString += "°C";
displayString += String(humi, 1);
displayString += "%";
}
Serial.println(displayString);
oledDisplayCenter(displayString);
Blynk.run();
}
BLYNK_WRITE(V0)
{
servo.write(param.asInt());
}
BLYNK_WRITE(V1)
{
servo.write(0);
}
BLYNK_WRITE(V2)
{
servo.write(180);
}
void oledDisplayCenter(String text) {
int16_t x1;
int16_t y1;
uint16_t width;
uint16_t height;
display.getTextBounds(text, 0, 0, &x1, &y1, &width, &height);
display.clearDisplay();
display.setCursor((SCREEN_WIDTH - width) / 2, (SCREEN_HEIGHT - height) / 2);
display.println(text);
display.display();
}