#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
// ================= PINOUT =================
#define DHTPIN D0
#define DHTTYPE DHT22
#define LED D1
// ================= DHT =================
DHT dht(DHTPIN, DHTTYPE);
// --SSD1306--
#define height 64
#define width 128
#define rst -1
// SSD1306 OLED OBJECT
Adafruit_SSD1306 display(width, height, &Wire, rst);
//================ Variables ================
float tem = 0.0;
float hum = 0.0;
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(115200);
Wire.begin();
dht.begin();
if (!display.begin(SSD1306_SWITCHCAPVCC, 0X3C)) {
Serial.println("Oled Display NOT Found...");
for (;;);
}
printTxt("Control");
delay(3000);
digitalWrite(LED, LOW);
printTxt("OFF");
}
void loop() {
// ===== READ DHT22 =====
tem = dht.readTemperature();
hum = dht.readHumidity();
// ===== VALIDATE =====
if (isnan(tem) || isnan(hum)) {
Serial.println("DHT ERROR");
delay(1000);
return;
}
// ===== SEND SERIAL DATA =====
Serial.print("Tem\t");
Serial.print(tem);
Serial.print(",\tHum\t");
Serial.print(hum);
Serial.println(";");
// ===== PRINT DATA ON DISPLAY =====
printData(tem, hum, digitalRead(LED));
// ===== SERIAL COMMANDS =====
if (Serial.available() > 0) {
String txt = Serial.readString();
txt.trim();
if (txt == "LON") {
digitalWrite(LED, HIGH);
printTxt("ON");
}
else if (txt == "LOFF") {
digitalWrite(LED, LOW);
printTxt("OFF");
}
}
delay(1000);
}
void displayTxtConfig(int size, int x, int y) {
//1. Tamaño letra
display.setTextSize(size);
//2. Color
display.setTextColor(WHITE);
//3. Cursor
display.setCursor(x, y);
}
void printData(float tem, float hum, bool ledState){
display.clearDisplay();
// ===== TITULO =====
displayTxtConfig(1, 20, 0);
display.println("WG-FAB ACADEMY");
// ===== TEMPERATURA =====
displayTxtConfig(2, 0, 18);
display.print("T: ");
display.print(tem, 1);
display.println(" C");
// ===== HUMEDAD =====
displayTxtConfig(2, 0, 38);
display.print("H: ");
display.print(hum, 1);
display.println(" %");
// ===== LED =====
displayTxtConfig(1, 85, 54);
if(ledState){
display.println("LED ON");
}
else{
display.println("LED OFF");
}
display.display();
}
void printTxt(String txt) {
display.clearDisplay();
displayTxtConfig(2, 15, 0);
display.println("LED");
displayTxtConfig(2, 40, 30);
display.println(txt);
display.display();
Serial.print("LED ");
Serial.println(txt);
}Loading
xiao-esp32-c3
xiao-esp32-c3