Контроллер освещения
- Войдите на сайт для отправки комментариев
Чт, 20/10/2016 - 22:23
Всем привет, хочу сделать контроллер освещения на 5 каналов, но что-то не так со скетчем. Поэтому уважаемые форумчане помогите оптимизировать код. Использую ардуину уно, датчики движения HC-SR501 5 шт. , и 5 реле. Программировать начал совсем недавно (начинающий), и многого еще не понимаю. Я так понимаю проблему можно решить с помощью прерываний, но как их применить увы не знаю. Вот разработанный скетч:
void setup()
{
pinMode(2, INPUT); //PIR 1
pinMode(3, INPUT); //PIR 2
pinMode(4, INPUT); //PIR 3
pinMode(5, INPUT); //PIR 4
pinMode(6, INPUT); //PIR 5
pinMode(7, OUTPUT); //relay 1
pinMode(8, OUTPUT); //relay 2
pinMode(9, OUTPUT); //relay 3
pinMode(10, OUTPUT); //relay 4
pinMode(11, OUTPUT); //relay 5
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
digitalWrite(6, LOW);
}
void loop()
{
if (digitalRead(2) == HIGH) // время с начала срабатывания PIR 1
delay (1000);
if (digitalRead(3) == HIGH) // время с начала срабатывания PIR 1
delay (1000);
if (digitalRead(4) == HIGH) // время с начала срабатывания PIR 1
delay (1000);
if (digitalRead(5) == HIGH) // время с начала срабатывания PIR 1
delay (1000);
if (digitalRead(6) == HIGH) // время с начала срабатывания PIR 1
{
digitalWrite(7, HIGH); // включено реле 1
delay (30000);
digitalWrite(8, HIGH); // включено реле 1
delay (30000);
digitalWrite(9, HIGH); // включено реле 1
delay (30000);
digitalWrite(10, HIGH); // включено реле 1
delay (30000);
digitalWrite(11, HIGH); // включено реле 1
delay (30000);
}
else
digitalWrite(7, LOW); // иначе не включено реле 1
digitalWrite(8, LOW); // иначе не включено реле 1
digitalWrite(9, LOW); // иначе не включено реле 1
digitalWrite(10, LOW); // иначе не включено реле 1
digitalWrite(11, LOW); // иначе не включено реле 1
}
Проблема заключается как я понимаю в том, чтобы считать данные с одного пина проходит целый цикл, а это время. Чтобы считать данные со второго пина требуется времени в два раза больше, чем на считывание с первого и так с остальными на каждый пин времени требуется больше и больше. От чего ощущение, что контроллер тормозит. Подскажите, что можно сделать в этой ситуации???
Так можно и без ардуины. http://www.youtube.com/watch?v=ajG6P9AR3Io
Но, мне нужно именно на ардуино, так как данные с нее буду потом пересылать на веб сервер.
От чего ощущение, что контроллер тормозит. Подскажите, что можно сделать в этой ситуации???
удалить делеи.
Без них пробывал тоже, но все равно проблема осталась. Собираю схему, а она не работает как надо, при этом компилятор не ругается на ошибки в коде.
Без них пробывал тоже, но все равно проблема осталась. Собираю схему, а она не работает как надо, при этом компилятор не ругается на ошибки в коде.
как ты мне предлагаешь узнать о сути твоей проблемы?
какого рода методы дознания в отношении тебя предпринять?
Без них пробывал тоже, но все равно проблема осталась. Собираю схему, а она не работает как надо, при этом компилятор не ругается на ошибки в коде.
как ты мне предлагаешь узнать о сути твоей проблемы?
какого рода методы дознания в отношении тебя предпринять?
Просто объясните как прикрутить к данному коду прерывания?
Можно и без прерываний применять.
Без них пробывал тоже, но все равно проблема осталась. Собираю схему, а она не работает как надо, при этом компилятор не ругается на ошибки в коде.
как ты мне предлагаешь узнать о сути твоей проблемы?
какого рода методы дознания в отношении тебя предпринять?
Просто объясните как прикрутить к данному коду прерывания?
ок. ходи голодный, если не желаешь сотрудничать.
Без них пробывал тоже, но все равно проблема осталась. Собираю схему, а она не работает как надо, при этом компилятор не ругается на ошибки в коде.
как ты мне предлагаешь узнать о сути твоей проблемы?
какого рода методы дознания в отношении тебя предпринять?
Просто объясните как прикрутить к данному коду прерывания?
ок. ходи голодный, если не желаешь сотрудничать.
Я хочу сделать автоматическое освещение в квартире, для этого мне нужен многоканальный контроллер освещения, чтобы подключить датчики движения и от каждого датчика срабатывало ему привязанное реле. Так вот не могу никак сделать чтобы была многоканальность и переключения происходили мгновенно, а не с задержкой. Нормально работает только такой код
void setup()
{
pinMode(2, INPUT); //PIR 1
pinMode(7, OUTPUT); //relay 1
digitalWrite(2, LOW);
}
void loop()
{
if (digitalRead(2) == HIGH) // время с начала срабатывания PIR 1
{
digitalWrite(7, HIGH); // включено реле 1
}
else
digitalWrite(7, LOW); // если не было движения, то выключено реле 1
}
Как произвести быструю многоканальную обработку сигналов??? Хоть кто нибудь может подсказать как эту проблему решить??? А то бьюсь уже месяц, но никак не дойдет как это сделать. Как я привел код в первом посте код работает очень медленно, будто частоты процессора не хватает.
прошло 5 дней (по словам автора уже месяц), а от автора так и не поступило алгоритма КАК это должно работать.
Получили срабатывание сенсора 1 - что делаем дальше? И т.д.
прошло 5 дней (по словам автора уже месяц), а от автора так и не поступило алгоритма КАК это должно работать.
Получили срабатывание сенсора 1 - что делаем дальше? И т.д.
Месяц прошел с того времени как я начал работать над контроллером освещения. Алгоритм простой. Когда срабатывает датчик движения, не важно какой из пяти каналов, то срабатывает реле назначенное на данный канал и включает освещение на одну минуту. После сработки датчика если не было движения, освещение выключается. Затем процесс повторяется.
Алгоритм действительно простой:
Что-то мне подсказывает, что это не решает твоих проблем, а только создает новые.
Можно и без прерываний применять.
Собрал по вашему варианту тоже не работает
Все верно, его вариант нерабочий по-определению.
Все верно, его вариант нерабочий по-определению.
Уважаемый Andy, доброго времени суток. Ваш код по логике вещей наиболее работоспособен из предложенных. Но, немного не пойму как его прикрутить, чтобы в итоге все пины ардуины уно были задействованы и отрабатывали с задержкой не более секунды. То есть произошло событие, сработали датчики движения в пяти комнатах скажем так одновременно и на каждую комнату включилось реле, которое в свою очередь включило освещение. Как начать setup?
Всем спасибо за помощь, я смог самостоятельно разобраться. Написал код и протестил, все работает как надо.