//DHT22 library "DHT sensor library"
#include "DHT.h"
#define DHTPIN 2 // what pin we’re connected to
#define DHTTYPE DHT22 // DHT 22 (AM2302)
DHT dht(DHTPIN, DHTTYPE, 6);
//OLED library "Adafruit SSD1306"
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#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 4 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup()
{
Serial.begin(9600);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))
{ // สั่งให้จอ OLED เริ่มทำงานที่ Address 0x3C
Serial.println("SSD1306 allocation failed");
}
else
{
Serial.println("ArdinoAll OLED Start Work !!!");
}
Serial.println("DHTxx test!");
dht.begin();
}
void loop()
{
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds ‘old’ (its a very slow sensor)
float h = dht.readHumidity(); // Read Humidity
float t = dht.readTemperature(); // Read temperature as Celsius
float f = dht.readTemperature(true); // Read temperature as Fahrenheit
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f))
{
Serial.println("Failed to read from DHT sensor!");
return;
}
// Compute heat index
// Must send in temp in Fahrenheit!
float hi = dht.computeHeatIndex(f, h);
//Print reading value on screen
Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" *C ");
//Send reading value to OLED
//OLED initialize
display.clearDisplay(); // ลบภาพในหน้าจอทั้งหมด
display.setTextColor(WHITE, BLACK); //กำหนดข้อความสีขาว ฉากหลังสีดำ
//display humidity
display.setCursor(0, 10); // กำหนดตำแหน่ง x,y ที่จะแสดงผล
display.setTextSize(2); // กำหนดขนาดตัวอักษร
display.print("H: "); // แสดงผลข้อความ
display.setCursor(35, 10);
display.setTextSize(2);
display.println(h,2);
display.setCursor(110, 10);
display.setTextSize(2);
display.println("%");
//display temperature
display.setCursor(0, 40);
display.setTextSize(2);
display.println("T: ");
display.setCursor(35, 40);
display.setTextSize(2);
display.println(t, 2);
display.setCursor(110, 40);
display.setTextSize(2);
display.println("C");
display.display(); // สั่งให้จอแสดงผล
}