| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Микроконтроллеры (MCU) и микропроцессоры (MPU) > Запутался в алгоритме |
| Автор: 344092 2.11.2008, 12:14 |
| Здравствуёте, я новичёк в написании программ для микроконтроллеров, вот имею дело с контроллером attiny2313. Вопрос такой, Необходимо на любой порт повесить микрофон и при двух хлопках на другом порте(пине) должен появиться лог1 если ещё хлопнуть 2 раза лог0. При 3 хлопках аналогично но на другой порт(пине) лог1 и лог0 . Чтото вроди включения света хлопками...но так же если хлопнуть 2 раза а через 5 секунд ещё 1раз хлопнуть, тройной хлопок не прошёл бы...(таймер счёта хлопков, например промежуток между хлопками 1сек)Пишу на CVavr |
| Автор: smalcom 2.11.2008, 20:28 |
| в чем вопрос состоит? |
| Автор: Lazin 2.11.2008, 21:25 |
| на порт нельзя просто повесить микрофон, нужно использовать ADC, кстати есть раздел по программированию контроллеров |
| Автор: 344092 4.11.2008, 07:35 | ||||
Вопрос состоит в том, как заставить гореть светодиод на ножке выхода (например PORTB.1). При замыкании ножки входа но не 1 раз а 2....как бы счётчик Например
А как сделать при ./ проверить "1" на линии 1 порта D дважы??? // Если дважды лог1 есть значит PORTB |= _BV(PB1); // установить "1" на линии 1 порта B |
| Автор: Mazzi 4.11.2008, 09:57 |
| Вот тебе решение. Повторять_пока (истина) { Если (хлопок) { Если (мы_сейчас_ожидаем_первый_хлопок) { переходим_в_режим_подсчёта_хлопков(); счётчик_хлопков++; запускаем_таймер_таймаут_ожидания очередного_хлопка(); } иначе // если мы ожидаем очередной хлопок { счётчик_хлопков++; перезапускаем_таймер_таймаут_ожидания очередного_хлопка(); } } Если (сработал_таймер_таймаут_ожидания очередного_хлопка) { переходим_в_режим_ожидания_первого_хлопка(); ОБРАБАТЫВАЕМ_СЧЁТЧИК_ХЛОПКОВ(); } } Удачи! |
| Автор: 344092 4.11.2008, 15:19 |
| Спасибо Mazzi |