#include "DHTesp.h"
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define button1 27
#define button2 13
#define buttonUp 14
#define buttonDown 12
#define cool1 2
#define cool2 4
#define heat1 5
#define heat2 18
int HighTempSet = 75;
int newHighTempSet;
int LowTempSet = 65;
int newLowTempSet;
bool setMode = true;
const unsigned long event1Interval = 10000;
unsigned long previous1Time = 0;
#define SCREEN_WIDTH 128 // OLED width, in pixels
#define SCREEN_HEIGHT 64 // OLED height, in pixels
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
const int DHT_PIN = 15;
DHTesp dhtSensor;
void setup()
{
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
pinMode(buttonUp, INPUT_PULLUP);
pinMode(buttonDown, INPUT_PULLUP);
pinMode(cool1, OUTPUT);
pinMode(cool2, OUTPUT);
pinMode(heat1, OUTPUT);
pinMode(heat2, OUTPUT);
Serial.begin(115200);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("failed to start SSD1306 OLED"));
while (1);
}
oled.clearDisplay();
}
void loop()
{
unsigned long current1Time = millis();
TempAndHumidity data = dhtSensor.getTempAndHumidity();
int pressed1 = digitalRead(button1);
int pressed2 = digitalRead(button2);
int pressedUp = digitalRead(buttonUp);
int pressedDown = digitalRead(buttonDown);
if(pressed1 == LOW)
{
oled.clearDisplay();
oled.setTextSize(2); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(19, 6); // set position to display (x,y)
oled.println("Set High");
oled.setTextSize(2); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(102, 42); // set position to display (x,y)
oled.println(HighTempSet);
previous1Time = current1Time;
setMode = true;
delay(10);
}
if(pressed2 == LOW)
{
oled.clearDisplay();
oled.setTextSize(2); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(20, 6); // set position to display (x,y)
oled.println("Set Low");
oled.setTextSize(2); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(0, 42); // set position to display (x,y)
oled.println(LowTempSet);
previous1Time = current1Time;
setMode = false;
delay(10);
}
if((pressedUp == LOW)&&(setMode == true))
{
oled.clearDisplay();
oled.setTextSize(2); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(19, 6); // set position to display (x,y)
oled.println("Set High");
newHighTempSet = HighTempSet+1;
oled.setTextSize(2); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(102, 42); // set position to display (x,y)
oled.println(HighTempSet);
HighTempSet = newHighTempSet;
previous1Time = current1Time;
delay(10);
}
if((pressedDown == LOW)&&(setMode == true))
{
oled.clearDisplay();
oled.setTextSize(2); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(19, 6); // set position to display (x,y)
oled.println("Set High");
newHighTempSet = HighTempSet-1;
oled.setTextSize(2); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(102, 42); // set position to display (x,y)
oled.println(HighTempSet);
HighTempSet = newHighTempSet;
previous1Time = current1Time;
delay(10);
}
if((pressedUp == LOW)&&(setMode == false))
{
oled.clearDisplay();
oled.setTextSize(2); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(20, 6); // set position to display (x,y)
oled.println("Set Low");
newLowTempSet = LowTempSet+1;
oled.setTextSize(2); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(0, 42); // set position to display (x,y)
oled.println(LowTempSet);
LowTempSet = newLowTempSet;
previous1Time = current1Time;
delay(10);
}
if((pressedDown == LOW)&&(setMode == false))
{
oled.clearDisplay();
oled.setTextSize(2); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(20, 6); // set position to display (x,y)
oled.println("Set Low");
newLowTempSet = LowTempSet-1;
oled.setTextSize(2); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(0, 42); // set position to display (x,y)
oled.println(LowTempSet);
LowTempSet = newLowTempSet;
previous1Time = current1Time;
delay(10);
}
if (current1Time - previous1Time >= event1Interval)
{
oled.clearDisplay();
oled.setTextSize(3); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(0, 0); // set position to display (x,y)
oled.println(String((((data.temperature)*9/5)+32),0) + " F");
oled.setTextSize(3); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(0, 25); // set position to display (x,y)
oled.println(String((data.humidity),0) + " %");
previous1Time = current1Time;
if((((data.temperature)*9/5)+32) >= (HighTempSet))
{
oled.setTextSize(2); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(80, 25); // set position to display (x,y)
oled.println("Cool");
}
if((((data.temperature)*9/5)+32) <= (LowTempSet))
{
oled.setTextSize(2); // set text size
oled.setTextColor(WHITE); // set text color
oled.setCursor(80, 25); // set position to display (x,y)
oled.println("Heat");
}
}
oled.display();
}