Умная сигнализация

Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
Ответить
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

Triple_H писал(а):Мешает цена вопроса, которая в магазине особенно.
он стоит бакса 3 у китайцев
Triple_H писал(а):плюс еще COM порта на компьютере нету
они давно уже усб
тематические ответы только в форуме, в приват не пишите
Реклама
Открыл глаза
Сообщения: 45
Зарегистрирован: Ср апр 23, 2014 22:17:24

Сообщение Triple_H »

kalobyte писал(а):
Triple_H писал(а):Мешает цена вопроса, которая в магазине особенно.
он стоит бакса 3 у китайцев
Triple_H писал(а):плюс еще COM порта на компьютере нету
они давно уже усб
А можно ссылку? Просто те, что мне попадались от 6 тыс. где- то.
Реклама
Открыл глаза
Сообщения: 45
Зарегистрирован: Ср апр 23, 2014 22:17:24

Сообщение Triple_H »

kalobyte писал(а):
Triple_H писал(а):Мешает цена вопроса, которая в магазине особенно.
он стоит бакса 3 у китайцев
Triple_H писал(а):плюс еще COM порта на компьютере нету
они давно уже усб
Я кажется понял, про какие программаторы вы говорите. Тогда еще один вопрос, на каком контроллере посоветуете собрать схему?
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

Triple_H писал(а):Я кажется понял, про какие программаторы вы говорите.
обычный дешевый для авр контроллеров
Triple_H писал(а):Тогда еще один вопрос, на каком контроллере посоветуете собрать схему?
любой авр контроллер
тематические ответы только в форуме, в приват не пишите
Реклама
Эиком - электронные компоненты и радиодетали
Открыл глаза
Сообщения: 45
Зарегистрирован: Ср апр 23, 2014 22:17:24

Сообщение Triple_H »

Не сочтите за наглость, но тут по ходу дела возникло еще пару вопросов, может кто поможет.
Решил собирать устройство на Attiny 2313, программа на CodeVisionAVR ( ну как программа, так пару строк :lol: ).

Собственно, сама рабочая часть программы:

Код: Выделить всё

         
while (1)    
 {
       //Place your code here   
      
    
                   
                 
       while (PIND.0==1) {     //сработал первый датчик
                  
      vhod=1; 
      
                         
    }   
    
                            
         
          while (PIND.1==1) {      //сработал второй датчик
     
     vihod=1;
     
     }         
                 
     
     
     if (vhod>vihod) {       //Срабатывает звонок
           
         PORTB.0=1;
     }; 
            
   
        
    if (vhod==vihod) { 
       PORTB.0=0, vhod=0, vihod=0;     // Выключается звонок
}
      



} 
}
Вот, то, что я хотел, чтобы при первом пересечении датчика номер один, звонок срабатывал, а при пересечении первым датчика номер два не срабатывал, у меня получилось.

Теперь вопрос, а как убрать ложное срабатывание, т.е. если пересекли первый датчик, но не пересекли второй датчик. Как бы сделать, чтобы при этом ну скажем звонок выключался через несколько секунд, или выключался при повторном пересечении.
Я пробовал через delay, но там получается или вообще не срабатывает или постоянно срабатывает. Хотел через таймер в контроллере, но там, что то сильно заморочено, может можно без него?

Заранее благодарен.
Реклама
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

есть такой паттерн программирования или как там это называется - машина состояний
выделяется переменная и в ней биты
каждый бит означает какое-то состояние машины

в общем цикле или по таймеру проверяются эти состояния и в зависимости от выполняются какие-то действия

https://ru.wikipedia.org/wiki/%D0%90%D0 ... 0%B8%D0%B5

педевикия говорит, что это парадигма :write:
вот столько заумных словей я уже знаю

обрати внимание на енум, эта штука используется обычно
как я тебе говорил - есть такой язык дракон для рисования подобных прог
даже в педевикии в сносках есть про дракон

ну и у дихальта годно написано http://easyelectronics.ru/avr-uchebnyj- ... tomat.html

чтобы время отмерять - надо сделать таймер, который тикает например 1с или 100мс и срабатывает прерывание по таймеру, а там ты прибавляеш каждый раз нужное число, только переменная в обработчике прерывания должны быть глобальной, чтобы к ней был доступ из главной функции

думаю понял
тематические ответы только в форуме, в приват не пишите
Реклама
Открыл глаза
Сообщения: 45
Зарегистрирован: Ср апр 23, 2014 22:17:24

Сообщение Triple_H »

Благодарю за столь расширенный ответ.
Я пробовал нарисовать в Horizont Configurator, но там почему то, именно с этим контроллером выдает ошибку :cry: .
Почитаю ссылки, и по экспериментирую с таймерами.
Электрический кот
Аватара пользователя
Сообщения: 1090
Зарегистрирован: Пн ноя 21, 2011 16:45:00

Сообщение kotpalych »

Получил что-то похожее на логике .
Изображение
Думаю , что в программе задержку следует включить после команды выключения звонка .
Вложения
4013l.png
(14.71 КБ) 448 скачиваний
Невозможно починить то, что не сломалось.
Открыл глаза
Сообщения: 45
Зарегистрирован: Ср апр 23, 2014 22:17:24

Сообщение Triple_H »

Отдельная благодарность kotpalych, за схемку ( правда я еще не совсем понял как она работает, но сейчас буду разбираться :lol: ). Жаль раньше не было, я уже контроллер заказал.
Электрический кот
Аватара пользователя
Сообщения: 1090
Зарегистрирован: Пн ноя 21, 2011 16:45:00

Сообщение kotpalych »

Triple_H писал(а):не совсем понял как она работает
Описание моей схемы(надеюсь правильное) .
После размыкания датчика 1 , единица со входа данных триггера U1:B поступит на его прямой выход , одновременно через конденсатор C1 поступит сбрасывающий импульс на U1:A . Реле времени на R1 C3 отключит сигнализацию примерно через 8 секунд . Если до срабатывания реле времени разомкнется датчик 2 , то сигнализация отключится подачей с прямого выхода U1:A на вход сброса U1:B положительного импульса через конденсатор C2 , при этом через конденсатор C1 , U1:A также будет сброшен . Следующее переключение датчика установит на входе данных триггера U1:B ноль , что не позволит сигнализации сработать по первому переключению датчика 1 .
По программе могу предложить только алгоритм .
Если сработал первый датчик проверить признак запрета срабатывания сигнализации.
Если запрета нет - инвертировать сигнализирующий вывод порта .
Иначе - сбросить признак запрета .
Если сработал второй датчик - проверить включение сигнализации .
Если сигнализация выключена - установить признак запрета срабатывания сигнализации .
Иначе - выключить сигнализацию.
Спящий режим .
К началу .
Невозможно починить то, что не сломалось.
Друг Кота
Аватара пользователя
Сообщения: 35639
Зарегистрирован: Вс янв 25, 2009 21:16:04
Откуда: Москва

Сообщение Brigadir »

Triple_H писал(а):Спасибо за ответ.
Задача та тупая, но вот как без контроллера бы это сделать. Их то прошивать надо, а программатора нету ((
Берешь счетчик...реверсивный...и собираешь. :))) А к нему приладишь и табло: сколько человек вошло и сколько ушло... Счетчик - ИЕ7, дешифратор счета - ИЕ4 + светодиодный индикатор. Но придется делать двойной ИК барьер.
А поболтать?
Открыл глаза
Сообщения: 45
Зарегистрирован: Ср апр 23, 2014 22:17:24

Сообщение Triple_H »

Brigadir писал(а):
Triple_H писал(а):Спасибо за ответ.
Задача та тупая, но вот как без контроллера бы это сделать. Их то прошивать надо, а программатора нету ((
Берешь счетчик...реверсивный...и собираешь. :))) А к нему приладишь и табло: сколько человек вошло и сколько ушло... Счетчик - ИЕ7, дешифратор счета - ИЕ4 + светодиодный индикатор. Но придется делать двойной ИК барьер.
Благодарю, но я не собирался никого считать, так просто чтобы звенело :) Хотя, это идея, а то ходят там всякие. Все таки попробую на контролере сделать, хотя там с наскока не получиться, заморочено, что -то там с таймерами :cry:
Друг Кота
Аватара пользователя
Сообщения: 35639
Зарегистрирован: Вс янв 25, 2009 21:16:04
Откуда: Москва

Сообщение Brigadir »

На счетчике: вошел = счетчик прибавил единицу. Сирена запищала. Вышел = минус единица , сирена отключилась.
Магазин (к примеру) : к концу рабочего дня глянул на счетчик - осталась одна единица....это кто там спрятался за ширмой???? не грабитель ли? В метро: именно так считают количество пассажиров (в турникете счетчик). А сирена зачем? Более приятнее...колокольчик на двери....звякнул = зашел клиент! :))) Дешево и сердито!
Где купить счетчик? А купи калькулятор: там есть две кнопки - плюс и минус....есть и индикатор.... :))) и никаких контроллеров...
А поболтать?
Ответить

Вернуться в «Умные мысли»