#include <Tiny4kOLED.h>
#include <dht.h>
//definições
#define DHT22_PIN 8
//Classes
dht DHT;
//Protótipo da função
void iniciaDisplay();
void limpadisplay();
void menuTemperatura();
void menuHumidade();
void incrementa();
void decrementa();
//Variavéis globais
int8_t contador = 0 ;
void setup() {
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(DHT22_PIN, INPUT);
//Configura INT(interrupção) nos pinos 2 e 3
attachInterrupt(digitalPinToInterrupt (3), incrementa, RISING );
attachInterrupt(digitalPinToInterrupt (2), decrementa, RISING );
// put your setup code here, to run once:
iniciaDisplay();
delay(2000);
limpadisplay();
}
void loop() {
DHT.read22 (DHT22_PIN);
oled.setCursor (2,1); // Configuração de cursor
oled.print (F("Temperatura: ")); //Exibir
oled.print (DHT.temperature);
oled.print (F("C"));
oled.setCursor (2,4); // Configuração de cursor
oled.print (F("Humidade: ")); //Exibir
oled.print (DHT.humidity);
oled.print (F("%"));
}
//Implementação das funções
void iniciaDisplay() {
oled.begin(); //Inicia
oled.clear(); //Limpa
oled.setFont (FONT8X16); //Configurar Fonte
oled.setCursor (48,1); // Configuração de cursor
oled.print (F("IFPB")); //Exibir
oled.setFont (FONT6X8);
oled.setCursor (45,4);
oled.print (F("Amanda"));
oled.setFont (FONT6X8);
oled.setCursor (20,6);
oled.print (F("Sistema Digitais"));
delay (2000);
}
void limpadisplay(){
oled.clear();
oled.switchRenderFrame(); // Trocar metade da tela
oled.clear(); //Limpar
oled.switchRenderFrame();
}
void menuTemperatura(){
DHT.read22(DHT22_PIN);
oled.setFont (FONT8X16);
oled.setCursor(15,1 );
oled.print ("Tem: ");
oled.print (DHT.temperature);
oled.print ( "C ");
oled.setCursor(15,4 );
oled.print ("Hum: ");
oled.print (DHT.humidity);
oled.print ( "% ");
}
void incrementa(){
// variável local
static long tempo_anterior = 0;
long tempo_atual = millis();
if ((tempo_atual - tempo_anterior) >200){
//contador = contador ++
contador = contador +1;
}
tempo_anterior = tempo_atual;
}
void decrementa(){
static long tempo_anterior = 0;
long tempo_atual = millis();
if ((tempo_atual - tempo_anterior) >200){
contador--;
}
tempo_anterior = tempo_atual;
}