Проект 13. Автоматическое управление светом

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

Вариант 1:

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

Описание работы:

Для начала работы подключите питание к Arduino. Подключите к реле источник света. Теперь потенциометром отрегулируйте уровень при котором будет включаться реле, а значит и наш источник света.

Нам понадобится:
Схема сборки:

Код программы:
const uint8_t pinDatL = A3;                                 // Объявляем пин для работы с датчиком звука.
const uint8_t pinPot = A0;                                  // Объявляем пин для работы с потенциометром.
const uint8_t pinRele = 3;                                  // Объявляем пин для работы с реле.
                                                            //
int potValue;                                               // Переменная для считывания показания потенциометра.
int datValue;                                               // Переменная для считывания показании датчика освещенности.
                                                            //
void setup()                                                //
{                                                           //
  pinMode(pinRele, OUTPUT);                                 // Переводим вывод pinRele в режим выхода.
}                                                           //
                                                            //
void loop()                                                 //
{                                                           //
  potValue = analogRead(pinPot);                            // Считываем показания потенциометра
  datValue = analogRead(pinDatL);                           // Считываем показания датчика освещенности.
                                                            //
  if(potValue + 5 < datValue){digitalWrite(pinRele, HIGH);} // Если показания потенциометра + 5 меньше показаний датчика освещенности, то включаем реле.
  if(potValue - 5 > datValue){digitalWrite(pinRele, LOW);}  // Если показания потенциометра - 5 больше показаний датчика освещенности, то выключаем реле.
}                                                           //
Алгоритм работы:

В начале скетча (до кода setup) выполняются следующие действия:

В коде setup выполняются следующие действия:

  • Переводим выводы pinRele для реле в режим выхода.

В коде loop выполняются следующие действия:

  • Считываем показания потенциометра.
  • Считываем показания датчика освещенности.
  • Если показания потенциометра + 5 меньше показаний датчика освещенности, то включаем реле.
  • Если показания потенциометра - 5 больше показаний датчика освещенности, то выключаем реле.

Вариант 2:

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

Описание работы:

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

Нам понадобится:
Схема сборки:
Код программы:
const uint8_t pinDatL = A3;                                                 // Объявляем пин для работы с датчиком освещенности.
const uint8_t pinPowerKey = 3;                                              // Объявляем пин для работы с силовым ключом.
                                                                            //
const int minL = 50;                                                        //
const int maxL = 920;                                                       //
                                                                            //
void setup()                                                                //
{                                                                           //
  pinMode(pinPowerKey, OUTPUT);                                             // Переводим вывод pinPowerKey в режим выхода.
}                                                                           //
                                                                            //
void loop()                                                                 //
{                                                                           //
  if (analogRead(pinDatL) > maxL) {analogWrite(pinPowerKey, 0);}            // Если показания с датчика больше макисмальной границы, выключаем силовой ключ.
  else                                                                      // Если показания датчика в диапазоне от минимального значения до максимальго значения.
  {analogWrite(pinPowerKey, map(analogRead(pinDatL), minL, maxL, 255, 0));} // Считываем показания датчика освещенности и присваиваем его значения силовому ключу в диапазоне от 255 до 0.
  if (analogRead(pinDatL) < minL) {analogWrite(pinPowerKey, 255);}          // Если показания с датчика меньше минимальной границы, подаем 100% напряжения на силовой ключ.
}                                                                           //
Алгоритм работы:

В начале скетча (до кода setup) выполняются следующие действия:

В коде setup выполняются следующие действия:

  • Переводим выводы pinPowerKey для силового ключа в режим выхода.

В коде loop выполняются следующие действия:

  • Проверяем показания с датчика освещенности, если показания больше максимального значения, то подаем ноль на силовой ключ.
  • Считываем показания датчика освещенности и присваиваем его значения силовому ключу в диапазоне от 255 до 0.
  • Проверяем показания с датчика освещенности, если показания меньше минимального значения, то подаем 100% напряжения на силовой ключ.
Особенности:

В скетче присутствуют переменные "minL" - минимальная граница и "maxL" - максимальная граница. Это переменные между которыми датчик освещенности плавно переходит из яркого состояния в темное. И так как датчик освещенности в зависимости от помещения не может достигнуть своего максимального или минимального значения, вводятся константы, для того чтобы, при значениях датчика освещенности которые вышли за пределы диапазона от "minL" до "maxL", источнику света принудительно подается максимальное либо минимальное напряжение. Эти константы регулируются в скетче в начале программы.

Ссылки

Обсуждение