Ардуино - управление освещением, жалюзи, климатом.
Задумал сделать из Ардуинки систему типа "Умный дом". Первоначально хочу реализовать управление освещением по принципу: две кнопки - вкл/выкл, длительное нажатие на кнопку влк прибавляет яркость лампы, длительное нажатие кнопки выкл убавляет яркость. Кратковременные нажатия включают/выключают лампу на уровень яркости, который был задан ранее.
Также жалюзи, длительное нажатие - жалюзи движутся вверх/вниз пока кнопка удерживается, кратковременное нажатие - жалюзи поднимаются/опускаются до конца(установлены датчики конечных положений для обратной связи).
Касаемо тампературы - тут гораздо сложнее. Соединение с кондиционером можно осуществить через инфракрасную связь, путём генерирования кода сигнала самой Ардуиной, либо тупо подпояв проводки к кнопке квл/выкл в пульте от кондёра.(Если кондиционер с пультом) Алгоритмов управления множество, от простого включения по таймеру, до прогнозирования изменения температуры в зависимости от времени суток, температуры на улице, или даже в зависимости от того что в комнате включено(Бывают люстры с галогеновыми лампами, которые не хило могут нагреть комнату). Нагревание комнаты в расчёт не беру, так как с этим проблем никогда не возникало, комунальные службы в этом плане работают нормально.
Всю проводку предусмотрел во время ремонта квартиры - подвод силовых проводов к люстре и жалюзи. А кнопку выполнил на радио управлении. Купил за 600р. две детских миниатюрных радиоуправляемых машинки(по 4 канала - вперёд, назад, влево, вправо). Приёмник - плата из машинки подключен к входам Ардуино, а передатчик с батарейками встроен в обычный двух клавишный выключатель света.
Re: Ардуино - управление освещением, жалюзи, климатом.
Собственно пока начал делать управление освещением. У меня оно на светодиодах. Регулирование яркости сделал, но как сделать включение в зависимости от длительности нажатия кнопки? Поможет кто с кодом?
P.S. Если есть какие идеи по теме, рад буду увидеть.
Re: Ардуино - управление освещением, жалюзи, климатом.
Ну вот мой простейший скетч по регулированию яркости:
PHP код:
int jarkost; //Значение яркости света
int knopkaDOWN = 0; //Кнопка "Уменьшить яркость"
int knopkaUP = 1; //Кнопка "Увеличить яркость"
int svet = 10; //Выходной сигнал на 10 пине
void setup()
{
pinMode(knopkaDOWN, INPUT);
pinMode(knopkaUP, INPUT);
pinMode(svet, OUTPUT);
jarkost=0; // 0-выключено 255-максимум
}
void loop()
{
if ( analogRead(knopkaUP) == HIGH && jarkost<255)
{
delay(15);
jarkost++;
}
//==============================================
if (analogRead(knopkaDOWN) == HIGH && jarkost>1)
{
delay(15);
jarkost--;
}
analogWrite(svet, jarkost);
}
Хочется добавить действие в зависимости от длительности нажатия кнопки.
Re: Ардуино - управление освещением, жалюзи, климатом.
Длинное и короткое нажатие можно различать по времени,
Выключатель повесить на вход с прерыванием , после срабатывания прерывания в обработке посчитать длительность нажатия можно функцией pulseIn()
Еще посмотри здесь http://cyber-place.ru/forumdisplay.php?f=24
Re: Ардуино - управление освещением, жалюзи, климатом.
Как пользоваться функцией pulseIn() ? Не нашёл ни одного примера, кроме стандартного, который ничего не объясняет.
Re: Ардуино - управление освещением, жалюзи, климатом.
Так поймешь?
PHP код:
int inputPin=3; //номер пина на котором будет кнопка
unsigned long Botton;
void setup()
{
Serial.begin(115200);
pinMode(inputPin, INPUT);
digitalWrite(inputPin, HIGH); //подтянуть вход к +5в
}
void loop()
{
Botton = pulseIn(inputPin, LOW); //Функция может измерять сигналы длиной от 10 микросекунд до 3 минут
if(Botton>>3000000) digitalWrite(13, HIGH);//если нажатие более трех сек
delay(500);
digitalWrite(13, LOW);
}
Re: Ардуино - управление освещением, жалюзи, климатом.
Возвращает всегда 156488 или 156487.
Не зависимо от уровня сигнала, хоть закорочен вход с GND, хоть на плюсе висит. Что это значит?
Re: Ардуино - управление освещением, жалюзи, климатом.
подправил, только есть проблема с дребезгом
Re: Ардуино - управление освещением, жалюзи, климатом.
Что то функция как то криво работает, не вижу я заявленных 3 минут
Re: Ардуино - управление освещением, жалюзи, климатом.
Я бы сказал то работает - то не работает... Как-то произвольно.