Нужна помощь по ARDUINO UNO

Тема в разделе "Arduino & Shields", создана пользователем tuz-vetal, 20 фев 2016.

  1. tuz-vetal

    tuz-vetal Нуб

    Привет всем!кто может помочь мне решить проблему?
    есть две комнаты в которых нужно поставить по датчику присуцтвия что бы включался и выключался свет автоматом.
    Я нашел вот такую схему,ну она на один датчик и одну лампочку
    PIR_and_relay_module_control_filament_lamp.jpg
    вот скетч на эту схему:
    Код (C++):
    //Тестировалось на Arduino IDE 1.0.1
    //Время калибровки датчика (10-60 сек. по даташиту)
    int calibrationTime = 30;

    //Время, в которое был принят сигнал отсутствия движения(LOW)
    long unsigned int lowIn;

    //Пауза, после которой движение считается оконченным
    long unsigned int pause = 5000;

    //Флаг. false = значит движение уже обнаружено, true - уже известно, что движения нет
    boolean lockLow = true;
    //Флаг. Сигнализирует о необходимости запомнить время начала отсутствия движения
    boolean takeLowTime;

    int pirPin = 2; //вывод подключения PIR датчика
    int ledPin = 13; //вывод сигнального диода
    int relayPin = 4; //реле пин

    void setup()
    {
    pinMode(pirPin, INPUT);
    pinMode(ledPin, OUTPUT);
    pinMode(relayPin, OUTPUT);

    //!ВНИМАНИЕ! При использовании n-p-n реле необходимо в след. строчке поменять HIGH на LOW
    digitalWrite(relayPin, HIGH);
    delay(4000);
    digitalWrite(pirPin, LOW);

    //дадим датчику время на калибровку
    for(int i = 0; i < calibrationTime; i++)
    {
    //Во время калибровки будет мигать сигнальный диод
    i % 2 ? digitalWrite(ledPin, HIGH) : digitalWrite(ledPin, LOW);
    delay(1000);
    }
    //По окончанию калибровки зажжем сигнальный диод
    digitalWrite(ledPin, HIGH);
    delay(50);
    }

    void loop()
    {
    //Если обнаружено движение
    if(digitalRead(pirPin) == HIGH)
    {
    //Если до этого момента еще не включили реле
    if(lockLow)
    {
    lockLow = false;
    //Включаем реле.
    //!ВНИМАНИЕ! При использовании n-p-n реле необходимо в след. строчке поменять LOW на HIGH
    digitalWrite(relayPin, LOW);
    delay(50);
    }
    takeLowTime = true;
    }

    //Ели движения нет
    if(digitalRead(pirPin) == LOW)
    {
    //Если время окончания движения еще не записано
    if(takeLowTime)
    {
    lowIn = millis(); //Сохраним время окончания движения
    takeLowTime = false; //Изменим значения флага, чтобы больше не брать время, пока не будет нового движения
    }
    //Если время без движение превышает паузу => движение окончено
    if(!lockLow && millis() - lowIn > pause)
    {
    //Изменяем значение флага, чтобы эта часть кода исполнилась лишь раз, до нового движения
    lockLow = true;
    digitalWrite(relayPin, HIGH);
    delay(50);
    }
    }
    }
    как изменить скетч под мою затею?
     
    Последнее редактирование: 20 фев 2016
  2. Airbus

    Airbus Радиохулиган Модератор

    А что за проблема?Ставите по такому комплекту в каждой комнате и будет Вам Щастье
     
  3. tuz-vetal

    tuz-vetal Нуб

    а на один arduino не получиться подключить ?
     
  4. shpock

    shpock Гик

    получится, но все остальные компоненты и кабеля к ним все-таки нужны.
     
  5. tuz-vetal

    tuz-vetal Нуб

    так я понимаю что нужны!я спрашиваю как это сделать?
     
  6. shpock

    shpock Гик

    разберитесь как работает данный скетч. Думаю не составит большего труда добавить туда датчик движения и рэле.
     
  7. incbot

    incbot Нуб

    Смотрел только схемку и начало кода У вас на пине 2 ждется сигнал от датчика, на 4 выдается сигнал на реле включения света. Цепляете еще такие же датчик (например на пин 3) и реле с лампой (например на пин 5) и вносите не значительные изменения в код: Естественно надо будет где то хранить сигнал отсутствия движения для КАЖДОГО датчика. Ну и написать блок для новых пинов по аналогии
     
  8. Sindbad

    Sindbad Гик

    ...и поэкспериментировать с максимальной длинной проводов к датчику, при которой эта схема стабильно работает.
     
  9. tuz-vetal

    tuz-vetal Нуб

    а можете накидать код?я просто только начал вникать в
    ARDUINO
     
  10. tuz-vetal

    tuz-vetal Нуб

    очень прошу.