Помогите с кодом (регистрация человека)

Тема в разделе "Arduino & Shields", создана пользователем Pi-Tone, 20 дек 2013.

  1. Pi-Tone

    Pi-Tone Нерд

    Здравствуйте!
    Задача такова:
    Дом - 8 комнат, в каждой комнате стоит датчик движения, все датчики подключены к ардуино, а от ардуино подключены осветительные приборы.
    Так же есть на входе в дом панель с кнопками "+" и "-" и дисплеем.
    Как должно все работать:
    Человек зашел в дом, ходит по комнатам, а свет включается там куда он входит и выключается в другом месте, т.е фактически свет одновременно горит лишь в одной комнате.
    Но если приходит еще 1 человек, он нажимает кнопку "+" - на дисплее появляется цифра "2" и свет может гореть одновременно уже в двух комнатах, и так до 4х человек.
    естественно при выходе человек должен нажать "-".
    Помогите пожалуйста, хотя бы примерным кодом, или идеей как это реализовать.
    Дисплей подключен и работает, помощь нужна в лишь в коде по регистрации.
    Спасибо!
     
  2. А подробнее о датчике движения можно?
    Просто, если это простой инфракрасный датчик, то проще всего в каждой комнате, использовать по два датчика, для определения направления, выход или вход в комнату.
    А дальше уже просто, на входе свет включаем а на выходе выключаем
     
    Pi-Tone нравится это.
  3. Pi-Tone

    Pi-Tone Нерд

    Хммм, интересная идея! мои датчики обычные, инфракрасные PIR. А ваша идея даже наверное проще! Ее наверное можно реализовать 2-мя лазерами на входе и счетчиком, Спасибо за ответ!
     
  4. Megakoteyka

    Megakoteyka Оракул Модератор

    Только для каждой комнаты должен быть еще отдельный счетчик количества находящихся в ней людей. При входе счетчик увеличивать, при выходе уменьшать. светом управлять на основе показаний этих счетчиков. И обязать всех пользователей соблюдать дистанцию, иначе двоих можно посчитать за одного, если они пройдут, например, обнявшись. Если в доме есть животные, нужно уметь отличать их от людей.
     
  5. Pi-Tone

    Pi-Tone Нерд

    Ну впринципе да, наверное так и сделаю! А из животных только кошка, ее мы считать не будет, поставим лазеры на метр в высоту :)
     
  6. Pi-Tone

    Pi-Tone Нерд

    А подскажите еще одну вещь, вот такое вообще возможно? будут ли уны общаться с мегой в обе стороны? Если нет, подскажите как организовать связь в обе стороны, есть 1 мега (Голова) и 10 уно
     

    Вложения:

    • ATMEGAQW.PNG
      ATMEGAQW.PNG
      Размер файла:
      20,2 КБ
      Просмотров:
      736
  7. Megakoteyka

    Megakoteyka Оракул Модератор

    В плане логики - будут при условии использования протокола типа Wake.
    В плане электрофизики - нужно на каждый порт поставить преобразователь в RS-485, см. http://www.novosoft.by/Ency/rs-485.htm. Получите полудуплексный режим. Соединять напрямую, как на Вашей картинке, нельзя.
     
  8. NR55RU

    NR55RU Гик

    Пошел по ссылкам Мегакотейки, наткнулся на пару не понятных фраз, пошел в поисковик и в итоге пришел к такой весьма интересной ссылочке по разводке сетей на RS-485.
    Вроде не плохо так описано и рассказано.
     
  9. Pi-Tone

    Pi-Tone Нерд

    А как на счет вот такого варианта? В каждой UNO прописываться код на проход сигнала от RX к TX, и каждая его принимает и ищет совпадение условия if, естественно если ничего не найдено то ничего и не делаем. Данные посылать unsigned long; ну и к каждой команде прописать if условие в числовом значении. Как думаете, будет работать?
     

    Вложения:

    • RXTX2.PNG
      RXTX2.PNG
      Размер файла:
      23,3 КБ
      Просмотров:
      715
  10. Pi-Tone

    Pi-Tone Нерд

    Хотя unsigned long можно заменить на int, int может хранить числа от -32 768 до 32 767, этого больше чем достаточно :)
     
  11. Sergey991

    Sergey991 Нерд

    Не много почитав Ваши предложения, могу поделится небольшим опытом....
    1) Для корректной работы всего устройства необходима постоянная синхронизация ВСЕХ мк.
    2) Лично я предлогаю использовать в меге несколько "Созданных" последовательных портов.

    Код (Text):
    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(6, 7); // RX, TX

    void setup()
    {
      mySerial.begin(9600);
    }
    Как то так, и потом попытаться в полной мере реализовать синхронизацию, с использованием задержек 1-2 миллисекунды.
     
    Pi-Tone нравится это.
  12. Pi-Tone

    Pi-Tone Нерд

    Большое вам спасибо! наверное так и поступлю! Вот скоро придут все ATMEG`и, и будем тестить! А то задумал большой проект на ардуинах, а там и 200 пинов не хватит, да и дело не в пинах а в модульной системе, провода от всех пинов тянуть не охота, а так кинул по витушке VCC GND RX TX и готово :)))) а с SoftwareSerial думаю выкручусь, надеюсь он стабильно будет работать, а по поводу задержек не страшно, я могу даже и в 1000мс поставить.
    Еще раз большое спасибо!