Su pseudocódigo (junto con la histéresis miceuz explicada en su respuesta) debería funcionar bien. A veces, dependiendo de su requerimiento, la histéresis puede no ser necesaria, ya que un LED parpadeante es bueno para lo que quiere hacer. Es un requisito un tanto inusual, pero surge de vez en cuando.
Me gustaría señalar, sin embargo, que hacer esto en el bucle principal podría ser problemático en algunos casos de uso. Si el bucle en sí es largo o está lleno de llamadas de bloqueo (por ejemplo, una función de lectura en serie que se devuelve solo después de que se recibe un mensaje), esto podría causar un retraso en la respuesta de los LED. Si el tiempo de respuesta es importante para usted, puede asegurarse de que el bucle principal se ejecute dentro de un período inferior al tiempo de respuesta deseado.
Hay soluciones alternativas disponibles. Posiblemente son demasiado complicados para ser más que un interés académico para aplicaciones simples, pero nunca se sabe cuándo necesitaría más.
- Ejecute el código LED como una función que se ejecuta periódicamente, nuevamente con un período más corto que el tiempo de respuesta deseado. Esta 'función' podría activarse desde una interrupción, o en sistemas mucho más complicados, como una tarea en un sistema operativo en tiempo real.
- Si la función de obtener temperatura está usando el ADC, en su lugar, podría configurar el ADC como un comparador si no le importa cuál es la temperatura real (o tal vez use un canal separado del ADC como un comparador, que es << em> think el AVR permite), y use la interrupción del comparador para disparar el LED. Esto no requeriría una verificación regular y esencialmente garantizaría una respuesta muy rápida.
- Si el umbral también se usará para algún tipo de corte de seguridad, o para activar una ráfaga de medición rápida de ADC en la que está intentando detectar algo que ocurre justo después (algo así como un disparador de osciloscopio), puede valga la pena pasar por alto el AVR por completo y usar un comparador real. Son baratos, fáciles de usar, rápidos y se pueden conectar a uno de los interruptores de cambio de pin AVRs (llamado interrupción externa en el mega8).