Помогите с написанием скетча для PIR
- Войдите на сайт для отправки комментариев
Вс, 19/04/2015 - 16:03
Здравствуйте.
Помогите пожалуйста написать скетч.
В электронике разбираюсь, а в программировании новичок.
Задача такая.
1. При движении проверяем освещенность
2. если темно зажигаем подсветку на 10 сек
3. если движение больше 10 сек зажигаем основной свет
4. если движения нет через 1 мин выкл. основной свет через 10 сек выкл подсветку
(время выкл при каждом движении передвигается чтобы не мигать светом)
5. проверяется команда на вкл от Выключателя света и от радио модуля.
6. Если команда есть минуем датчик освещения и движениея и включаем всё, но на 5 мин
7. выключаем проверяя пункт 4
8. проверяем температуру и отправляем на радиомодуль каждые 5 минут
Delay использовать нельзя! Использовать millis()
Пункт 5 и 8 попробую вставить сам (только куда?)
В наличии arduinominipro, датчик движения, освещения, температуры, радиомодули приёмник и передатчик
Отталкивался от этого кода но ничего не получается.
Заранее спасибо.
//Если обнаружено движение
if(digitalRead(pirPin) == HIGH)
{
// Записываем время когда началось дижение
timee=millis();
digitalWrite(ledPin2, LOW);
// Проверяем освещённость в комнате
if (PhotoRValue<500)
{
//Включаем реле.
digitalWrite(relayPin, HIGH);
digitalWrite(ledPin, HIGH);
// delay(50);
}
}
//Елидвижениянет
if(digitalRead(pirPin) == LOW)
{
digitalWrite(ledPin2, HIGH);
//Если время без движение превышает паузу => движение окончено
if(millis()- timee > pause)
{
digitalWrite(relayPin, LOW);
digitalWrite(ledPin, LOW);
// delay(50);
}
}
}
Мне кажется Ваш код должен выглядеть вот так
Спасибо за ответ.
Я поместил только кусок программы, пауза задана в setup.
Если движения нет timee не обнуляется и при условии что millis()-timee>pause свет выкл.
Программа работает я проверял, НО для одной лампы.
хотелось бы обьединить подсветку и вкл из вне как описанно выше.
Спасибо.
Всё заработало.
Спасибо vosara за подсказку в коде
04
if
(digitalRead(pirPin) == HIGH)
05
{
06
if
(flagPause == 1)
07
{
08
timee=millis();
09
flagPause = 0;
10
}
До этого мучился с обнулением времени для отсчета 10 секунд.
vov4ik тоже спасибо, но код для меня ещё сложноват.
Первая моя программа всё работает:(за совет и или подправления буду очень рад)
После того как обьект остановился нужно зафиксировать время остановки для того чтобы отсчитать 30000 и 40000
Вы можете сказать в какай строчке было зафиксировано время остановки?
Я подправил Ваш код, где зафиксировал это время, посмотрите:
Всем привет.
Доработал код как хотел (когда задавал вопрс), начал писать для выключателя.
В коридоре два вык. в начале и в конце.
Одним вкл. другим выкл. и наобарот.
Собираюсь поставить реле вместо лампы,а с ардуино управлять ею.
Если каму интересно вот код для выключателя