int j;
void setup() {
Serial.begin(115200);
Serial.println("Prática 2!");
pinMode(2, OUTPUT);
pinMode(0, OUTPUT);
pinMode(4, INPUT_PULLUP);
attachInterrupt()digitalPinToInterrupt(4),aperto,FALLING;
}
void aperto(){
//Loop profissional
void loop() {
delay(10);
//Atenção para o static nas variáveis abaixo.
//Eles indicam que a função reterá o valor dela entre duas chamadas!
static int i; //variável para contar o número de ciclos
static long ti = 0; //variável para contar o tempo
static bool estado; //especifica o estado do LED
//resolução1 tronxa:
//static bool apertou;
//apertou = digitalRead(4);
//if (apertou == LOW) j++;
//Resolução2 - com pulse:
if ((millis() - ti) >= 500) //caso tenha se passado 500ms, muda o estado do LED
{
digitalWrite(2, estado);
digitalWrite(0, !estado);
estado = !estado;
ti = millis(); //e ajusta ti para recomeçar uma nova contagem!
if (!estado) {i++;
Serial.print("Numero de ciclos ");
Serial.println(i);
Serial.print("Numero de apertos ");
Serial.println(j);
}
}
} }