Датчик освещенности: различия между версиями
Сергей (обсуждение | вклад) |
Сергей (обсуждение | вклад) |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 21: | Строка 21: | ||
== Пример программы для аналогового датчика освещенности == | == Пример программы для аналогового датчика освещенности == | ||
<code>void setup() {</code> | |||
<code>pinMode(A1, INPUT);</code> | |||
В приведенном примере мы выводим на монитор порта данные с датчика освещенности, преобразованные с помощью АЦП | <code>analogWrite(A1, LOW);</code> | ||
<code>Serial.begin(9600); // подключаем монитор порта</code> | |||
<code>}</code> | |||
<code>void loop() {</code> | |||
<code>// считываем данные с датчика и выводим на монитор порта</code> | |||
<code>int light = analogRead(A1);</code> | |||
<code>Serial.print("Light = ");</code> | |||
<code>Serial.println(light);</code> | |||
<code>// рассчитываем напряжение и выводим на монитор порта</code> | |||
<code>float u = light * 0.48 / 100;</code> | |||
<code>Serial.print("U = ");</code> | |||
<code>Serial.println(u);</code> | |||
<code>// ставим паузу и делаем перенос строки</code> | |||
<code>delay(500);</code> | |||
<code>Serial.println("");</code> | |||
<code>}</code> | |||
В приведенном примере мы выводим на монитор порта данные с датчика освещенности, преобразованные с помощью АЦП Ардуино; | |||
Чтобы узнать приблизительно напряжение, поступающее на вход Arduino, следует умножить получаемое значение на 0,0048 или U = light * (5 / 1023). Так как тип данных <code>float</code> может хранить значения только с двумя знаками после запятой, то мы используем в скетче другую формулу для своих расчетов. | Чтобы узнать приблизительно напряжение, поступающее на вход Arduino, следует умножить получаемое значение на 0,0048 или U = light * (5 / 1023). Так как тип данных <code>float</code> может хранить значения только с двумя знаками после запятой, то мы используем в скетче другую формулу для своих расчетов. |
Текущая версия от 08:12, 6 июня 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
может хранить значения только с двумя знаками после запятой, то мы используем в скетче другую формулу для своих расчетов.