Стандартный delay(1000) останавливает всю программу. Это самый «не-хакерский» способ программирования. Настоящие хакеры используют Таймеры и Прерывания.
Как это работает внутри:
В ATmega328P есть три аппаратных таймера (Timer0, Timer1, Timer2). Они тикают независимо от вашего кода.
- Timer0: Используется для
millis()иmicros(). Не трогайте его, иначе сломаете задержки. - Timer1: 16-битный. Идеален для генерации ШИМ с высокой частотой или для счета импульсов с энкодеров.
- Timer2: 8-битный. Отлично подходит для «танцевальных» эффектов светодиодов без задержек.
Хак с прерываниями (Interrupts):
Подключите датчик к пину 2 или 3 (на Uno это INT0 и INT1). Напишите функцию, которая сработает мгновенно, как только изменится напряжение на пине.
Пример: Вы вращаете энкодер — микроконтроллер бросает все дела, обрабатывает поворот и возвращается к основной программе. Это позволяет делать реактивные интерфейсы без подвисаний.