#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;
}