#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <SPI.h>
#include "DHT.h"
#include <TM1637.h>
#define DHT1Pin 27
#define DHT2Pin 39
#define DHT3Pin 49
#define OLED_RESET 4
#define DHTTYPE DHT22
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
const int CLK1 = 25;
const int DIO1 = 23;
const int CLK2 = 35;
const int DIO2 = 37;
const int CLK3 = 51;
const int DIO3 = 53;
int tDH1 = 0;
int uDH1 = 0;
int tDH2 = 0;
int uDH2 = 0;
int tDH3 = 0;
int uDH3 = 0;
TM1637 tm1(CLK1, DIO1);
TM1637 tm2(CLK2, DIO2);
TM1637 tm3(CLK3, DIO3);
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
DHT Sensor1(DHT1Pin, DHTTYPE);
DHT Sensor2(DHT2Pin, DHTTYPE);
DHT Sensor3(DHT3Pin, DHTTYPE);
void setup(){
Sensor1.begin();
Sensor2.begin();
Sensor3.begin();
tm1.init();
tm2.init();
tm3.init();
tm1.set(BRIGHT_TYPICAL);
tm2.set(BRIGHT_TYPICAL);
tm3.set(BRIGHT_TYPICAL);
Serial.begin(9600);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3c, safety precheck
Serial.println(F("SSD1306 allocation failed"));
}
display.clearDisplay();
display.display();
}
void loop(){
SLM1();
SLM2();
SLM3();
ShowUmidad();
}
void SLM1(){
tDH1 = Sensor1.readTemperature();
uDH1 = Sensor1.readHumidity();
tm1.display(2, (tDH1/10)%10);
tm1.display(3, tDH1%10);
}
void SLM2(){
tDH2 = Sensor2.readTemperature();
uDH2 = Sensor2.readHumidity();
tm2.display(2, (tDH2/10)%10);
tm2.display(3, tDH2%10);
}
void SLM3(){
tDH3 = Sensor3.readTemperature();
uDH3 = Sensor3.readHumidity();
tm3.display(2, (tDH3/10)%10);
tm3.display(3, tDH3%10);
}
void ShowUmidad(){
display.clearDisplay();
display.fillRect(0, 0, 128, 15, SSD1306_INVERSE);
display.drawRect(1, 16, 20, 11, SSD1306_WHITE);
display.setTextSize(2);
display.setTextColor(SSD1306_BLACK);
display.setCursor(3,0);
display.print("Umidade:");
display.setTextColor(SSD1306_WHITE);
display.setCursor(3,18);
display.setTextSize(0,1);
display.print("FEI");
display.setCursor(2,30);
display.print("1ANDAR|2ANDAR|3ANDAR");
display.setCursor(0,43);
display.setTextSize(1,3);
display.print(uDH1);
display.print("%");
display.setCursor(45,43);
display.print(uDH2);
display.print("%");
display.setCursor(87,43);
display.print(uDH3);
display.print("%");
display.display();
delay(1000);
}