Модераторы: PILOT, ManiaK, Mazzi
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запутался в алгоритме, две лог1 для включения 
:(
    Опции темы
344092
Дата 2.11.2008, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 3.6.2006

Репутация: нет
Всего: нет



Здравствуёте, я новичёк в написании программ для микроконтроллеров, вот имею дело с контроллером attiny2313.  Вопрос такой, Необходимо на любой порт повесить микрофон и при двух хлопках на другом порте(пине) должен появиться лог1 если ещё хлопнуть 2 раза лог0. При 3 хлопках аналогично но на другой порт(пине) лог1 и лог0 . Чтото вроди включения света хлопками...но так же если хлопнуть 2 раза а через 5 секунд ещё 1раз хлопнуть, тройной хлопок не прошёл бы...(таймер счёта хлопков, например промежуток между хлопками 1сек)Пишу на CVavr  


PM MAIL   Вверх
smalcom
Дата 2.11.2008, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 494
Регистрация: 16.10.2004
Где: Dnepr

Репутация: 4
Всего: 7



в чем вопрос состоит?


--------------------
What DA F...???
PM MAIL WWW Skype Jabber   Вверх
Lazin
Дата 2.11.2008, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 3
Всего: 154



на порт нельзя просто повесить микрофон, нужно использовать ADC, кстати есть раздел по программированию контроллеров

PM MAIL Skype GTalk   Вверх
344092
Дата 4.11.2008, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 3.6.2006

Репутация: нет
Всего: нет



Цитата(smalcom @ 2.11.2008,  20:28)
в чем вопрос состоит?

Вопрос состоит в том, как заставить гореть светодиод на ножке выхода (например PORTB.1). При замыкании ножки входа но не 1 раз а 2....как бы счётчик

Например

Код

if (!(PIND | (1<<PIND1))) // проверить "1" на линии 1 порта D
        {
                          // Если лог1 есть значит
                 PORTB |= _BV(PB1); // установить "1" на линии 1 порта B


                 //иначе
        }
        else
        {
                   

                        PORTB &= _BV(PB1); // установить "0" на линии 1 порта B


А как сделать при ./ проверить "1" на линии 1 порта D дважы??? // Если дважды лог1 есть значит PORTB |= _BV(PB1); // установить "1" на линии 1 порта B
PM MAIL   Вверх
Mazzi
Дата 4.11.2008, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Правильный
**


Профиль
Группа: Комодератор
Сообщений: 825
Регистрация: 3.4.2003

Репутация: 9
Всего: 21



Вот тебе решение.

Повторять_пока (истина)
{
      Если (хлопок) 
      {
           Если (мы_сейчас_ожидаем_первый_хлопок)
           {
                переходим_в_режим_подсчёта_хлопков();
                счётчик_хлопков++;
                запускаем_таймер_таймаут_ожидания очередного_хлопка();
           }
           иначе // если мы ожидаем очередной хлопок
           {
                 счётчик_хлопков++;
                 перезапускаем_таймер_таймаут_ожидания очередного_хлопка();
           }
      }

      Если (сработал_таймер_таймаут_ожидания очередного_хлопка)
      {
           переходим_в_режим_ожидания_первого_хлопка();
           ОБРАБАТЫВАЕМ_СЧЁТЧИК_ХЛОПКОВ();
      }
}

Удачи!


--------------------
Мне нужны помощники.
PM MAIL WWW   Вверх
344092
Дата 4.11.2008, 15:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 3.6.2006

Репутация: нет
Всего: нет



Спасибо Mazzi  smile  попробую  код реализовать...Если возможно то  smile конкретного кода smile 

Это сообщение отредактировал(а) 344092 - 4.11.2008, 18:42
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)"
PILOT ManiaK
UniBomb Mazzi

На данный раздел помимо Правил форума распространяются текже следующие правила:


  • Прежде чем создать тему воспользуйтесь поиском или посмотрите в faq. Возможно на форуме уже есть ответ на ваш или близкий к вашему вопрос.
  • В заголовке темы в квадратных скобках обозначьте используемое семейство микроконтроллера: [avr],[pic],[arm].
  • При создании темы с вопросом указывайте участок кода с ошибкой, версию компилятора, схемы подключения, fuse биты и прочие данные, которые помогут найти правильный ответ. Для форматирования текста программ используйте кнопку код.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Для флуда, просьб выполнить задание, поиска партнёров или исполнителей существуют свои разделы.
  • Если вы заметили несовместимое с правилами сообщение, то можете уведомить об этом модератора раздела нажав кнопку Репорт у соответствующего сообщения.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема »


 




[ Время генерации скрипта: 0.0445 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.