#include <Tiny4kOLED.h>
#include <dht.h>
#include <RTClib.h>
// DEFINIÇÕES
#define DHT22_PIN 8
// classes
dht DHT;
RTC_DS1307 rtc;
// protótipo da função
void iniciaDisplay();
void limpaDisplay();
void menuTemperatura();
void incrementa();
void decrementa();
uint8_t contador = 0;
const uint8_t termometro[] PROGMEM = {
0x00, 0xfe, 0x03, 0xfe, 0x50,
0x00, 0xff, 0x00, 0xff, 0x55,
0x60, 0x9f, 0x80, 0x9f, 0x65,
};
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(DHT22_PIN, INPUT);
// configura interrupção nos pinos 2 e 3
attachInterrupt(digitalPinToInterrupt(3), incrementa,RISING); // rising acende
attachInterrupt(digitalPinToInterrupt(2), decrementa,RISING);
// Inicia o display
oled.begin();
oled.setFont(FONT6X8);
oled.clear();
rtc.begin();
iniciaDisplay();
delay(2000);
limpaDisplay();
}
void loop() {
// put your main code here, to run repeatedly:
/*DHT.read22(DHT22_PIN);
oled.setFont (FONT8X16);
oled.setCursor (12, 1);
oled.print("Temp: ");
oled. print(DHT.temperature);
oled.print("C ");
oled.setCursor (12, 4);
oled.setFont (FONT6X8);
oled.print("Humidade: ");
oled. print(DHT.humidity);
oled.print("% ");
oled.bitmap(115, 1, 5+115, 3+1, termometro);
*/
DateTime now = rtc.now();
oled.setCursor(10, 0);
oled.print("DATA: ");
oled.print(now.day(), DEC);
oled.print("/");
oled.print(now.month(), DEC);
oled.print("/");
oled.print(now.year(), DEC);
oled.print(" ");
oled.setCursor(24, 4);
oled.print(now.hour());
oled.print(":");
oled.print(now.minute());
oled.print(":");
oled.print(now.second());
}
void iniciaDisplay(){
oled.begin(); // begin significa iniciar.
oled.setFont (FONT8X16);
oled.clear ();
oled.setCursor (15, 33);
oled.print(F("IFPB")); // quando for numero não tem aspas no texto sim.
delay(500);
oled.setCursor (5, 4);
oled.print(F("Sistemas"));
delay(1000);
oled.setCursor (3, 6);
oled.print(F("Digitais"));
delay(100);
}
void limpaDisplay(){
oled.clear(); // limpar parte de cima
oled.switchRenderFrame(); // metade de baixo
oled.clear();
oled.switchRenderFrame();
}
void menuTemperatura(){
DHT.read22(DHT22_PIN);
oled.setFont (FONT8X16);
oled.setCursor (12, 1);
oled.print("Temp: ");
oled. print(DHT.temperature);
oled.print("C ");
oled.setCursor (12, 4);
oled.setFont (FONT6X8);
oled.print("Humidade: ");
oled. print(DHT.humidity);
oled.print("% ");
oled.bitmap(115, 1, 5+115, 3+1, termometro);
}
void incrementa(){
// variável local
static long tempo_anterior = 0;
long tempo_atual = millis();
if ((tempo_atual - tempo_anterior) > 200){
contador = contador +10;
}
tempo_anterior = tempo_atual;
}
void decrementa(){
static long tempo_anterior = 0;
long tempo_atual = millis();
if ((tempo_atual - tempo_anterior) > 100){
contador--;
}
tempo_anterior = tempo_atual;
}