Atualmente, meu esboço está verificando um pino de entrada toda vez em volta do loop principal. Se ele detectar uma alteração, chamará uma função personalizada para responder a ela. Aqui está o código (reduzido ao essencial):
int pinValue = LOW;
void pinChanged()
{
//...
}
void setup()
{
pinMode(2, INPUT);
}
void loop()
{
// Read current input
int newValue = digitalRead(2);
// Has the input changed?
if (newValue != pinValue) {
pinValue = newValue;
pinChanged();
}
}
Infelizmente, isso nem sempre funciona corretamente para alterações muito curtas na entrada (por exemplo, pulsos breves), especialmente se loop()
estiver um pouco lento.
Existe uma maneira de fazer o Arduino detectar a alteração de entrada e chamar minha função automaticamente?