====== Цифровой датчик освещенности BH1750 ======
===== Описание =====
Цифровой датчик освещенности предназначен для измерения уровня фоновой освещенности. Отличительной особенностью данного датчика является возможность получения измеренной величины сразу в люксах (лк) без дополнительных вычислений. В отличие от аналоговых датчиков освещенности на базе фоторезистора, цифровой датчик обладает более высокой точностью измерений, а также показывает фактический уровень освещенности относительно нуля.

В основе датчика лежит микросхема BH1750. С помощью встроенного фотодиода осуществляется получение значений об уровне освещенности в виде напряжения, которое преобразуется в цифровой сигнал с помощью встроенного аналогово-цифрового преобразователя. Измерения можно производить в режиме низкого и высокого разрешений. При измерении в режиме высокого разрешения погрешность составляет не более 0,5 лк.

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

==== Технические характеристики ====
  * Напряжение питания: 5 В или 3 В (в зависимости от выбранной Вами платы)
  * Потребляемый ток: 0 мА
  * Потребляемый ток в спящем режиме: 0 мА
  * Чувствительность: 65536 градаций
  * Максимальное время измерения: 120 мс
  * Максимальная погрешность: ±4 люкса

==== Размеры ====
  * Габаритные размеры ДхШхВ: 30х20х7 мм

==== Подключение ====
Датчик подключается посредством шины I2C, что при большом количестве устройств и использовании расширителя I2C позволит сэконмить ценные выводы контроллера. Для удобного подключения к Arduino можно также воспользоваться Sensor Shield, на котором выведен отдельный разъем I2C. Для подключения модуля используйте 4-х проводной шлейф "мама-мама" (в комплект не входит).

<WRAP center round important 80%>
Обратите внимание на используемый датчик. Подключайте контакт "+" к соответствующему выводу питания.
Если Вы используете датчик на 3,3 В - подключение к Arduino через Sensor shield выведет датчик из строя! Будьте внимательны!
</WRAP>


==== Библиотека ====
  * Библиотека для работы с датчиком BH1750 ([[http://files.smartelements.ru/know_libs/BH1750.zip|скачать]])

===== Примеры подключения и использования =====

Проиллюстрируем простейший способ взаимодействия с датчиком: подключение датчика к контроллеру и вывод значения, полученного с датчика в монитор порта. Для удобства работы подключим датчик к контроллеру с помощью  Sensor shield (Пример тестировался на контроллере Smart UNO).

==== Шаг 1. Соберите необходимые компоненты ====
^ Что нужно                                                                                                                          ^ Кол-во, шт  ^
| [[https://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart UNO]]  | 1           |
| [[https://smartelements.ru/collection/shildy/product/sensor-shield|Sensor Shield]]  | 1           |
| [[|Цифровой датчик освещенности BH1750]]  | 1           |
| [[https://smartelements.ru/collection/provoda-i-kabeli/product/shleyf-mama-mama-h4-20-sm|Шлейф "мама-мама" х4]]| 1           |

==== Шаг 2. Соедините все компоненты ====

**Схема подключения:**

==== Шаг 3. Установите библиотеку ====
Скачайте библиотеку (по ссылке выше) и установите её в Arduino IDE ([[main:info:libs|как установить библиотеку?]]).

==== Шаг 4. Загрузите скетч на контроллер ====

**Скетч для загрузки:**
<file Arduino>
#include <Wire.h> //подключение библиотеки для работы с I2C
#include <BH1750.h> //подключение библиотеки для работы с датчиком освещённости

BH1750 lightMeter; //объявление объекта датчика освещённости

void setup(){

  Serial.begin(9600); //инициализация порта

  Wire.begin(); //инициализация I2C

  lightMeter.begin(); //инициализация датчика освещённости
  Serial.println(("BH1750 Test")); //вывод надписи в монитор порта

}

void loop() {

  float lux = lightMeter.readLightLevel(); //чтение значения датчика в Люксах
  Serial.print("Light: "); //вывод надписи
  Serial.print(lux); //вывод значения с датчика
  Serial.println(" lx"); //окончание надписи
  delay(1000); //задержка в 1 сек

}
</file>

==== Шаг 5. Результат ====

Постепенно наводите на датчик разные источники света (фонарик, экран телефона). Можно перемещать датчик в разные места помещения (теневые, солнечные). Наблюдайте за изменением значения в мониторе порта.