#include <Wire.h>
#include "DHT.h"
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#define DHTTYPE DHT22
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int counter = 0;
int currentStateCLK;
int lastStateCLK, btnState;
String currentDir ="0";
unsigned long lastButtonPress = 0;
#define CLK 3
#define DT 4
#define SW 2
const long interval = 40000;
float Humidity;
float Temperature;
float current_Humidity;
float current_Temperature;
uint8_t DHTPin = 8;
DHT dht(DHTPin, DHTTYPE);
unsigned long previous_Millis = 0;
void setup() {
// put your setup code here, to run once:
pinMode(DHTPin, INPUT);
pinMode(CLK,INPUT_PULLUP);
pinMode(DT,INPUT_PULLUP);
pinMode(SW, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(SW),doEncoder,LOW);
display.clearDisplay();
display.display();
display.setTextColor(SSD1306_WHITE);
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
unsigned long current_Millis = millis;
if (current_Millis - previous_Millis >= interval ){
previous_Millis = current_Millis;
Temperature = dht.readTemperature();
display.clearDisplay();
display.setTextSize(1);
display.setCursor(23, 05);
display.print("Temprature");
display.setTextSize(4);
display.setCursor(45, 30);
display.print(Temperature);
display.display();
}
else{
Humidity = dht.readHumidity();
display.clearDisplay();
display.setTextSize(1);
display.setCursor(23, 05);
display.print("Humidity");
display.setTextSize(4);
display.setCursor(45, 30);
display.print(Humidity);
display.display();}
}
void doEncoder()
{
currentStateCLK = digitalRead(CLK);
if (currentStateCLK != lastStateCLK && currentStateCLK == 1)
{
if (digitalRead(DT) != currentStateCLK)
{
counter ++;
if(counter>=100)
counter=100;
currentDir ="CW";
}
else
{
counter --;
if(counter<=0)
counter=0;
currentDir ="CCW";
}
display.clearDisplay();
display.setTextSize(1);
display.setCursor(23, 05);
display.print("set temp");
display.setTextSize(4);
display.setCursor(45, 30);
if(counter<10)
display.print("0");
display.print(counter);
display.display();
}
}