нужна помощь таймер с использованием фоторезистора

vladproard
Offline
Зарегистрирован: 01.07.2013
#define SVET_PIN 9 // Вывод к котрому подключена нагрузка
#define TIME_ON_SVET 500 // Время в течении, которого на выводе 1
#define TIME_OFF_SVET 100 // Время в течении, которого на выводе 0
boolean state_svet = 1; // Переменная для хранения состояния вывода
unsigned long new_millis_svet = millis(); // Переменная для хранения времени
int sensePin = 0;

void setup() {
    pinMode(SVET_PIN, OUTPUT);  // Настраиваем вывод на выход  
}
void loop(){
    if(millis() > new_millis_svet){
    state_svet = !state_svet;
    int val = analogRead(sensePin);
    if(val < 50)digitalWrite(SVET_PIN, state_svet);
    if(state_svet){
      new_millis_svet = millis() + TIME_ON_SVET;
    }
    else{
      new_millis_svet = millis() + TIME_OFF_SVET;
    }
  }
}

 

vladproard
Offline
Зарегистрирован: 01.07.2013

задача скетча вкл. и выкл. релле на определенное время  при изменение освещенности. проблема в том что выкл. осуществляется так же как и вкл. только тогда когда val <50 а нужно чтоб он выключался в любом случае через определенный промежуток времяни. сильно не пинайте я нуб в программирование.

faraddin
Offline
Зарегистрирован: 11.08.2013

А готовый купить не вариант? Они сейчас копейки стоят.

Или разбирайтесь в программировании или платите за готовое решение, за Вас тут делать никто не будет. Помочь - это пожалуйста, но сделать за Вас...

Давайте Вы попробуете сами составить логику программы и описать ее любым доступным Вам языком. И увидите как все на самом деле просто, а иначе не интересно даже.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

что то я не понял. если почти нет света, светильник который висит на 9 пине должен моргать?

faraddin
Offline
Зарегистрирован: 11.08.2013

Мне кажется это защита от домушников. Вроде в доме кто то есть, свет моргает.. А в приведенном скетче лампочка не выключится, если будет светло.. Помоему так

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

но моргать капитально будет. 500 и 100мс

vladproard
Offline
Зарегистрирован: 01.07.2013

время стоит для примера. таймер у меня есть но он не подходит. мне нужно чтоб при отсуствии света релле грубо говоря переходило в режим 30 мин  выкл. 5 мин вкл. и дальше по кругу пока не появится свет. скетч работает почти но проблема в том что при изменении освещенности цикл может остановиться и не выкл. (((( помогите плиз

 

vladproard
Offline
Зарегистрирован: 01.07.2013

время стоит для примера. таймер у меня есть но он не подходит. мне нужно чтоб при отсуствии света релле грубо говоря переходило в режим 30 мин  выкл. 5 мин вкл. и дальше по кругу пока не появится свет. скетч работает почти но проблема в том что при изменении освещенности цикл может остановиться и не выкл. (((( помогите плиз

SergKT
Offline
Зарегистрирован: 04.08.2014

vladproard пишет:

... скетч работает почти но проблема в том что при изменении освещенности цикл может остановиться и не выкл. (((( помогите плиз

Естественно, ведь изменение Пина происходит только при "var<50". Соответственно, при большей яркости освещения изменения (выключения/включения) не происходит.

Какой напрашивается вывод?

Вариантов как понимаете моооре.

Вам нужно, чтобы при высокой освещенности могло произойти выключение, думайте.

faraddin
Offline
Зарегистрирован: 11.08.2013

У вас идет проверка на освещенность и если она низкая, то происходит смена статуса освещения. А если освещение яркое то статус не поменяется, а нам надо что? Нам, тоесть Вам, надо переключать в режим "выключено" всегда. А что для этого достаточно сделать? А для этого достаточно убедиться, что сейчас у нас статус "включено". И что мы имеем в сумме? А имее мы следущее: Нам надо поменять статус если освещение низкое или сейчас "включено". Вот думайте, пока не пришел пухлявый и не назвал Вас дураком.

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

нарисуйте граф состояний.... блок-схему алгоритма....

в старшем ифе - следите за освещённостью , во вложенном ифе - за графиком вкл/выкл

или постройте систему флагов - чё когда делать

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

да и логику надо менять , с таким графиком вкл/выкл вас за 2...3 часа раскусят, что там живёт дрон

vladproard
Offline
Зарегистрирован: 01.07.2013

всем спасибо с вашей помощью додумал скетч 

 

vladproard
Offline
Зарегистрирован: 01.07.2013

не понял ?

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

расписание вкл/выкл заточить под время суток, ибо никто не включает свет с 02:00 до 05:30 - пока в туалет не захоцца....

проанализируйте вкл света при нахождении в квартире 1....4 человека...

ну не всю же ночь гонять освещение 50 мин - темнота , 10 мин - свет !

faraddin
Offline
Зарегистрирован: 11.08.2013

Тогда куда проще определять когда стемнеет и запускать скрипт включил, подождал час, выключил, подождал пол часа, включил на 10 минут и так далее, а на следующий день все опять. Хотя опять же, для таких целей есть готовые решения в виде розеток таймеров. А вот что можно сделать с помощью ардуины, так это подключить RGB светоленту для иммитации работы телевизора (такие устройства были популярны в некоторых странах)

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

faraddin пишет:

Тогда куда проще определять когда стемнеет и запускать скрипт включил, подождал час, выключил, подождал пол часа, включил на 10 минут и так далее, а на следующий день все опять. Хотя опять же, для таких целей есть готовые решения в виде розеток таймеров. А вот что можно сделать с помощью ардуины, так это подключить RGB светоленту для иммитации работы телевизора (такие устройства были популярны в некоторых странах)

может быть моя не правильно написал....

имитировать вкл/выкл света нужно вечером и утром , работу телека - с 20:00 до 02:00 и с 06:00 до 08:00....

а не тупо - 50 мин выкл , 10 мин вкл - и так всю ночь ! люди так не живут ( не пользуются светом )

faraddin
Offline
Зарегистрирован: 11.08.2013

SU-27-16 пишет:

может быть моя не правильно написал....

имитировать вкл/выкл света нужно вечером и утром , работу телека - с 20:00 до 02:00 и с 06:00 до 08:00....

а не тупо - 50 мин выкл , 10 мин вкл - и так всю ночь ! люди так не живут ( не пользуются светом )

Скорее твоя неправильно понял. Пишем скрипт:

стемнело? да - поехали

включить на десять минут

выключить на 20

включить на час

выключить на 7 минут

включить на 3 часа

выключить на 4

включить на 3 минуты (пошел в туалет)...

выключить... и все, дальше можно не включать, утро уже.. ну можно еще раз проверить часа через 4, чтоб утром если темно включить, а дальше ждать следущего вечера

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

#14 - тоже самое :)

vladproard
Offline
Зарегистрирован: 01.07.2013

этот скетч был собран из несколько других и предназначен он для включения режима вентиляции в теплице при разной освещенности. днем находиться в постоянном рабочем режиме ночью включаеться только в течении 5 минут через каждые 20 минут.

#define SVET_PIN 9 // Вывод к котрому подключена нагрузка
#define TIME_ON_SVET 1200000 // Время в течении, которого на выводе 1
#define TIME_OFF_SVET 300000 // Время в течении, которого на выводе 0
boolean state_svet = 1; // Переменная для хранения состояния вывода
unsigned long new_millis_svet = millis(); // Переменная для хранения времени
int sensePin = 0;

void setup() {
    pinMode(SVET_PIN, OUTPUT);  // Настраиваем вывод на выход  
}
void loop(){
    if(millis() > new_millis_svet){
    state_svet = !state_svet;
    int val = analogRead(sensePin);
    if(val < 50)digitalWrite(SVET_PIN, state_svet);
    if(state_svet){
      new_millis_svet = millis() + TIME_ON_SVET;
    }
    else{
      if(val > 50)digitalWrite(SVET_PIN, LOW);
      new_millis_svet = millis() + TIME_OFF_SVET;
    }
  }

 

vladproard
Offline
Зарегистрирован: 01.07.2013

а то что было почти всеми вами написано выше не фига для меня не понятно

 

SU-27-16
SU-27-16 аватар
Offline
Зарегистрирован: 13.08.2012

дык, спрашивайте :)

vladproard
Offline
Зарегистрирован: 01.07.2013

просто мне это и не нужно было

 

art100
Offline
Зарегистрирован: 09.03.2014

так что у нас с фоторезистор-ом?

резисторнул?