Перезалил
схему.
BH1750 цифровой 16-битный датчик освещённости (люксметр) со стабилизатором напряжения и удобными выводами подключения:
VCC — питание 5 В;
GND — общий;
SDA — данные;
SCL — синхронизация;
ADDR — выбор адреса;
Диапазон измерений: от 1 до 65535 люкс. Согласно
datasheet, датчик
BH1750 чувствителен к видимому свету и практически не подвержен влиянию инфракрасного излучения, т.е. реагирует примерно на тот же спектральный диапазон, что и человеческий глаз. У датчика
BH1750 вывод
ADDR — это выбор адреса на шине
I2C.
BH1750 отвечает на запросы, в зависимости от уровня сигнала на входе
ADDR, по адресу
0x23 или
0x5C. Это значит, что управляя сигналом
ADDR можно одновременно работать с двумя датчиками
BH1750. Для того, чтобы работать с большим количеством датчиков
BH1750 надо ставить на шину
I2C расширители адресов, либо использовать динамическое управление уровнем на выводах
ADDR. Я использовал второй способ, так как управление расширителем адресов шины
I2C - это дополнительные расходы, а количество датчиков меньше чем выводов TTL уровня у контроллера
CH341. Следующая таблица показывает логику выбора любого из 3-х датчиков для опроса по адресу 0x23:
1-й | 0 | 1 | 1 |
2-й | 1 | 0 | 1 |
3-й | 1 | 1 | 0 |
Для работы с 3-мя датчиками собираем следующую схему и, управляя в программе уровнями сигналов на выводах D0-D2, выбираем только один датчик, который будет отвечать на адрес 0x23, что позволит прочитать данные с любого из 3-х датчиков.
P.S. Для тестирования на макетной плате подтягивающие резисторы можно не подключать.