Здравствуйте. Хочу регулировать яркость светодиода в фонаре при помощи только одной кнопки.
1. Кратковременное нажатие кнопки - включение/выключение
2. Длительное удержание кнопки (во включенном состоянии) - регулировка яркости "по кругу" (от нуля до полного, от полного до нуля и т.д.). Отпустили кнопку - остались на текущей яркости. Краткое нажатие - полностью выключили. Ну думаю понятно. Так вот. Контроллер Mega8. Кварц 8 МГц. Запускаю Timer2 -› Fast PWM -› Делитель 8
Код:
|
for (i=0;i‹255;i++) { //Плавно повышаем яркость
OCR2++;
delay_ms(20);
}
for (i=0;i‹255;i++) { //Плавно понижаем яркость
OCR2--;
delay_ms(20);
} |
Собственно всё работает. Плавно разгорается, плавно гаснет. Тут понятно. Дальше сижу туплю. Как привязать всё это к кнопке??? Вкл/выкл понятно:
Код:
|
if (PINB.0 == 0) {
delay_ms(40);
if (PINB.0 == 0) {
PORTB.3^=1;
}
} |
А как быть с долгим удержанием? Как его обработать??? Да ещё так чтобы при удержании
OCR2 по кругу гонять 0-255-0 ?