
Интернет-магазин «Неглупый Дом»
BH1750 измеряет освещённость в люксах и по I2C отдаёт готовое число, которое выводится на дисплей LCD1602.
BH1750 — цифровой датчик освещённости с фотодиодом и встроенным АЦП: в отличие от простых аналоговых фоторезисторов, он сразу выдаёт по шине I2C готовое значение в люксах, откалиброванное производителем под спектральную чувствительность человеческого глаза. Это избавляет от необходимости самостоятельно подбирать коэффициенты пересчёта сопротивления в освещённость.
Датчик поддерживает несколько режимов измерения с разным разрешением и временем отклика — библиотека по умолчанию использует режим непрерывного измерения высокого разрешения (1 люкс), который обновляется примерно раз в 120 мс, этого достаточно для большинства бытовых задач вроде автоматического освещения.
Для справки по шкале: прямой солнечный свет — около 32000-100000 люкс, пасмурный день на улице — 1000-10000, офисное освещение — 300-500, комфортное чтение — около 50, сумерки — единицы люкс.
Так как реализации данного модуля бывают разные, если у вас на плате нет тех контактов, что указаны ниже — сориентируйтесь по названиям контактов на своей плате.
// ВНИМАНИЕ: рекомендую отладить код через монитор порта, так как я языковая
// модель, а не специализированный кодер, и могу что-то упустить. Основу
// и идею я накидал, но проверьте под свою схему.
#include <Wire.h>
#include <BH1750.h>
#include <LiquidCrystal_I2C.h>
BH1750 lightMeter;
LiquidCrystal_I2C lcd(0x27, 16, 2); // адрес 0x27 — самый частый, у некоторых плат 0x3F
void setup() {
Serial.begin(9600);
Wire.begin();
if (!lightMeter.begin()) {
// если датчик не отвечает — проверьте подключение SDA/SCL и адрес
Serial.println("Ошибка: датчик BH1750 не найден");
}
lcd.init();
lcd.backlight();
}
void loop() {
float lux = lightMeter.readLightLevel(); // готовое значение в люксах
lcd.setCursor(0, 0);
lcd.print("Lux: ");
lcd.print(lux);
lcd.print(" "); // затираем хвост от предыдущего более длинного числа
Serial.print("Освещённость: ");
Serial.print(lux);
Serial.println(" лк");
delay(1000);
}
Библиотека BH1750 (автор claws) ставится через Менеджер библиотек Arduino IDE. Датчик и дисплей висят на одной шине I2C — конфликтов адресов нет, у них разные адреса по умолчанию.
Ещё модули для Arduino: Электронные модули.
🎁 Купить весь комплект со скидкой 10%
Все 2 товара сразу в корзину: 345 ₽ 311 ₽ (экономия 34 ₽)
Скидка применяется автоматически при оформлении заказа, если в корзине именно этот комплект.
Остались вопросы? Проконсультируйтесь с ИИ-инженером — он уже в курсе темы статьи и сразу ответит, ничего вводить не нужно.