Датчик освещенности: различия между версиями
Ангелина (обсуждение | вклад) Нет описания правки |
Ангелина (обсуждение | вклад) Нет описания правки |
||
Строка 36: | Строка 36: | ||
int light = analogRead(A1); | int light = analogRead(A1); | ||
Serial.print("Light = "); | Serial.print("Light = "); |
Версия от 18:38, 2 июня 2021
Датчик освещенности (освещения) - относительно простой цифровой датчик, способный возвращать значение освещённости в люксах и коэффициент пульсаций света в процентах, а так же определять близость препятствий.
Датчики освещенности, построенные на базе фоторезисторов, довольно часто используются в реальных ардуино проектах. Данный датчик позволяет сделать автоматическое включение освещения.
Основой данного модуля является полупроводниковый элемент — фоторезистор. Фоторезистор ардуино позволяет контролировать уровень освещенности и реагировать на его изменение.
Характеристики модуля датчика освещенности
Датчик света может выпускаться в двух вариантах: с подстроечным резистором (цифровой датчик) и без него (аналоговый датчик). Оба варианта имеют три контакта для подключения к Arduino Nano или Uno. Два контакта служат для питания датчика — 5V и GND, а третий контакт — выдает аналоговый (обозначен буквой S) или цифровой сигнал (обозначен D0) и подключается к соответствующим портам платы Ардуино.
Подключение к Ардуино
Схема подключения датчика освещенности к ардуино довольна проста. Соединяем выход модуля VCC с разъемом 5В на плате, GND – c землей. Оставшиеся выводы соединяем с разъемами ардуино.
На модуль подается питание 5 Вольт, а в зависимости от освещенности в помещении на выходе модуля (S) меняется напряжение от 0 до 5 Вольт. При подаче этого сигнала на аналоговый вход микроконтроллера, Arduino преобразует сигнал при помощи АЦП в диапазон значений от 0 до 1023.
Если на плате представлен цифровой выход, то отправляем его на цифровые пины. Если аналоговый – то на аналоговые. В первом случае мы получим сигнал срабатывания – превышения уровня освещенности (порог срабатывания может быть настроен с помощью резистора подстройки). С аналоговых же пинов мы сможем получать величину напряжения, пропорциональную реальному уровню освещенности.
Пример программы для аналогового датчика освещенности
void setup() {
pinMode(A1, INPUT);
analogWrite(A1, LOW);
Serial.begin(9600); // подключаем монитор порта
}
void loop() {
// считываем данные с датчика и выводим на монитор порта
int light = analogRead(A1);
Serial.print("Light = ");
Serial.println(light);
// рассчитываем напряжение и выводим на монитор порта
float u = light * 0.48 / 100;
Serial.print("U = ");
Serial.println(u);
// ставим паузу и делаем перенос строки
delay(500);
Serial.println("");
}
В приведенном примере мы выводим на монитор порта данные с датчика освещенности, преобразованные с помощью АЦП Ардуино;
Чтобы узнать приблизительно напряжение, поступающее на вход Arduino, следует умножить получаемое значение на 0,0048 или U = light * (5 / 1023). Так как тип данных float
может хранить значения только с двумя знаками после запятой, то мы используем в скетче другую формулу для своих расчетов.