#include <Tiny4kOLED.h>
// protótipo da função
void iniciaDisplay();
void limpaDisplay();
void incrementa();
void decrementa();
// variáveis globais
int8_t contador = 0;
void setup(){
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
// configura INT nos pinos
// 2 e 3
attachInterrupt(digitalPinToInterrupt(3), incrementa, RISING);
attachInterrupt(digitalPinToInterrupt(2), decrementa, RISING);
iniciaDisplay();
limpaDisplay();
}
void loop(){
oled.setCursor(18, 3);
oled.print(F("Contador: "));
oled.print(contador);
oled.print(" ");
}
// implementação das funções
void iniciaDisplay(){
oled.begin();
oled.clear();
oled.setFont(FONT8X16);
oled.setCursor(44, 1);
oled.print(F("IFPB"));
oled.setFont(FONT6X8);
oled.setCursor(28, 4);
oled.print(F("Prof. Cicero"));
oled.setCursor(12, 6);
oled.print(F("Sistemas Digitais"));
}
void limpaDisplay(){
oled.clear();
oled.switchRenderFrame();
oled.clear();
oled.switchRenderFrame();
}
void incrementa(){
// variável local
static long tempo_anterior = 0;
long tempo_atual = millis();
if ( (tempo_atual - tempo_anterior) > 200){
// contador++
contador = contador + 1;
}
tempo_anterior = tempo_atual;
}
void decrementa(){
// variável local
static long tempo_anterior = 0;
long tempo_atual = millis();
if ( (tempo_atual - tempo_anterior) > 200){
contador--;
}
tempo_anterior = tempo_atual;
}