#include <TimerOne.h>
volatile uint16_t toggle = 0; //cria na memoria RAM
void setup() {
Serial.begin(115200);
Serial.setTimeout(100000);
pinMode(9, OUTPUT);
Timer1.initialize(500000); // 500ms
Timer1.stop();
Timer1.attachInterrupt(interruptTimer1);
novosvalores();
}
void loop() {
if (Serial.available()>0)
if (Serial.find(" "))
{novosvalores();
Serial.setTimeout(500);}
}
void contagem() {
long count;
noInterrupts();
count=toggle;
interrupts();
Serial.println("...contagem: "+String(count));
delay(1000);
}
void interruptTimer1(void) {
digitalWrite(9,!digitalRead(9));
toggle++;
contagem();
}
void novosvalores(void) {
Serial.println("Digite a frequência (em Hz)");
long input = Serial.parseInt();
long periodo = 1000000 /(input * 2);
Timer1.setPeriod(periodo);
Serial.println("Frequencia = " + String(input) + " [Hz]");
Serial.println("Aperte Espaço e Enter para entrar com outro valor");
noInterrupts();
toggle=0;
interrupts();
Timer1.start();
delay(100);
}