Здравствуйте! Задача такова: Дом - 8 комнат, в каждой комнате стоит датчик движения, все датчики подключены к ардуино, а от ардуино подключены осветительные приборы. Так же есть на входе в дом панель с кнопками "+" и "-" и дисплеем. Как должно все работать: Человек зашел в дом, ходит по комнатам, а свет включается там куда он входит и выключается в другом месте, т.е фактически свет одновременно горит лишь в одной комнате. Но если приходит еще 1 человек, он нажимает кнопку "+" - на дисплее появляется цифра "2" и свет может гореть одновременно уже в двух комнатах, и так до 4х человек. естественно при выходе человек должен нажать "-". Помогите пожалуйста, хотя бы примерным кодом, или идеей как это реализовать. Дисплей подключен и работает, помощь нужна в лишь в коде по регистрации. Спасибо!
А подробнее о датчике движения можно? Просто, если это простой инфракрасный датчик, то проще всего в каждой комнате, использовать по два датчика, для определения направления, выход или вход в комнату. А дальше уже просто, на входе свет включаем а на выходе выключаем
Хммм, интересная идея! мои датчики обычные, инфракрасные PIR. А ваша идея даже наверное проще! Ее наверное можно реализовать 2-мя лазерами на входе и счетчиком, Спасибо за ответ!
Только для каждой комнаты должен быть еще отдельный счетчик количества находящихся в ней людей. При входе счетчик увеличивать, при выходе уменьшать. светом управлять на основе показаний этих счетчиков. И обязать всех пользователей соблюдать дистанцию, иначе двоих можно посчитать за одного, если они пройдут, например, обнявшись. Если в доме есть животные, нужно уметь отличать их от людей.
Ну впринципе да, наверное так и сделаю! А из животных только кошка, ее мы считать не будет, поставим лазеры на метр в высоту
А подскажите еще одну вещь, вот такое вообще возможно? будут ли уны общаться с мегой в обе стороны? Если нет, подскажите как организовать связь в обе стороны, есть 1 мега (Голова) и 10 уно
В плане логики - будут при условии использования протокола типа Wake. В плане электрофизики - нужно на каждый порт поставить преобразователь в RS-485, см. http://www.novosoft.by/Ency/rs-485.htm. Получите полудуплексный режим. Соединять напрямую, как на Вашей картинке, нельзя.
Пошел по ссылкам Мегакотейки, наткнулся на пару не понятных фраз, пошел в поисковик и в итоге пришел к такой весьма интересной ссылочке по разводке сетей на RS-485. Вроде не плохо так описано и рассказано.
А как на счет вот такого варианта? В каждой UNO прописываться код на проход сигнала от RX к TX, и каждая его принимает и ищет совпадение условия if, естественно если ничего не найдено то ничего и не делаем. Данные посылать unsigned long; ну и к каждой команде прописать if условие в числовом значении. Как думаете, будет работать?
Хотя unsigned long можно заменить на int, int может хранить числа от -32 768 до 32 767, этого больше чем достаточно
Не много почитав Ваши предложения, могу поделится небольшим опытом.... 1) Для корректной работы всего устройства необходима постоянная синхронизация ВСЕХ мк. 2) Лично я предлогаю использовать в меге несколько "Созданных" последовательных портов. Код (Text): #include <SoftwareSerial.h> SoftwareSerial mySerial(6, 7); // RX, TX void setup() { mySerial.begin(9600); } Как то так, и потом попытаться в полной мере реализовать синхронизацию, с использованием задержек 1-2 миллисекунды.
Большое вам спасибо! наверное так и поступлю! Вот скоро придут все ATMEG`и, и будем тестить! А то задумал большой проект на ардуинах, а там и 200 пинов не хватит, да и дело не в пинах а в модульной системе, провода от всех пинов тянуть не охота, а так кинул по витушке VCC GND RX TX и готово ))) а с SoftwareSerial думаю выкручусь, надеюсь он стабильно будет работать, а по поводу задержек не страшно, я могу даже и в 1000мс поставить. Еще раз большое спасибо!