// DEPURACAO AVANCADA - diagnostico de comportamento anomalo
const int pot = 34;
const int botao = 18;
const int ledOK = 2;
const int ledErro = 4;
int ultimaLeitura = -1;
void setup() {
Serial.begin(115200);
pinMode(botao, INPUT_PULLUP);
pinMode(ledOK, OUTPUT);
pinMode(ledErro, OUTPUT);
Serial.println("Sistema iniciado em modo de diagnostico");
}
void loop() {
int leituraPot = analogRead(pot);
int estadoBotao = digitalRead(botao);
bool erroDetectado = false;
// verifica variacao abrupta
if (ultimaLeitura != -1) {
int variacao = abs(leituraPot - ultimaLeitura);
if (variacao > 1500) {
Serial.println("ALERTA: variacao abrupta detectada");
erroDetectado = true;
}
}
// verifica faixa valida
if (leituraPot < 0 || leituraPot > 4095) {
Serial.println("ERRO: leitura fora da faixa esperada");
erroDetectado = true;
}
// exibicao de diagnostico
Serial.print("Leitura atual: ");
Serial.print(leituraPot);
Serial.print(" | Estado do botao: ");
Serial.print(estadoBotao);
if (erroDetectado)
Serial.println(" | STATUS: ANOMALIA");
else
Serial.println(" | STATUS: NORMAL");
// sinalizacao visual
if (erroDetectado) {
digitalWrite(ledOK, LOW);
digitalWrite(ledErro, HIGH);
}
else {
digitalWrite(ledOK, HIGH);
digitalWrite(ledErro, LOW);
}
ultimaLeitura = leituraPot;
delay(300);
}