Датчик освещенности BH1750 всегда дает выходной сигнал 54612 лк
срочно нужны некоторые данные,
Соединение:
VCC-5v
GND-GND
SCL-SCL(analog pin 5)
SDA-SDA(analog pin 4)
ADD-NC or GND
Код вставлен ниже используемая библиотека из GIT: https://github.com/claws/BH1750
#include <BH1750.h>
#include <Wire.h>
BH1750 lightMeter;
void setup(){
Serial.begin(9600);
lightMeter.begin();
Serial.println("Running...");
}
void loop() {
uint16_t lux = lightMeter.readLightLevel();
Serial.print("Light: ");
Serial.print(lux);
Serial.println(" lx");
delay(1000);
}
@ferraro, 👍-2
Обсуждение5 ответов
На плате, которую вы используете, может быть регулятор и логический переключатель, но, согласно техническому описанию, устройство представляет собой устройство 3 В с логикой 1,8 В и уровнями I2C. Итак, это первое, что вам нужно проверить.
Есть ли у вас резисторы 4,7 К, тянущие линии SDA и SCL к Vcc?
Можете ли вы изменить свой код, чтобы выключить устройство, а затем снять показания?
В вашем коде все в порядке, проводка выглядит нормально, значит, что-то не так с устройством или Arduino. Измените устройство (и код) на другое устройство I2C и посмотрите, нормально ли оно работает. Если да, то проблема может быть в BH1750.
Надеюсь, это поможет.
Глядя на BH1750.cpp
и BH1750.h
, я заметил некоторые ошибки:
- Замените
#include "Wire.h"
на#include <Wire.h>
в файле заголовка, возможно тривиально, но все же... - В методе
BH1750::readLightLevel
в .cpp закомментируйтеWire.beginTransmission(BH1750_I2CADDR);
иWire.endTransmission();
; они не нужны для чтения и могут быть причиной неправильного значения, которое вы получаете. - Вы также можете попробовать заменить
_delay_ms(10);
наdelay(10)
, на всякий случай - Вы также можете попробовать закомментировать
level = level/1.2;
, чтобы посмотреть, не повлияет ли это разделение на какие-либо негативные последствия.
Сохраните файлы после внесения изменений.
Мне пришлось подключить контакты SCL
и SDA
к выделенным контактам 20-й и 21-й на Arduino MEGA 2560
. .
Убедитесь, что OP использует Arduino UNO, как указано в вопросе., @RSM
Я купил несколько модулей "GY-302" на ebay, это коммутационная плата с датчиком BH1750. Я попробовал один из них, и он вообще не реагировал, как и вы, я видел 54612 (это всего лишь 65535/1.2). Я попробовал другой из этих модулей, и это сработало. Итак, на том, который не работал, сенсорный чип не был хорошо выровнен и отцентрирован, а пайка выглядела некрасиво с одной стороны, поэтому я использовал свой паяльник, чтобы попытаться оплавить и повторно выровнять/отцентрировать его. Если вы попытаетесь сделать это, очистите жало и не добавляйте припой! Теперь пайка выглядит еще некрасивее (под микроскопом..), но датчик работает хорошо! У меня нет никакого профессионального оборудования, даже маленького жала для моего дрянного паяльника, так что, наверное, мне повезло, что он сработал.
Я не припаивал свой датчик освещенности, и у него была та же ошибка, так как он просто упирался в контакты, попробуйте подтолкнуть его, чтобы датчик соприкасался с вилками, или просто припаяйте их :D
- Ошибка повторного объявления библиотеки Arduino
- Тензодатчик Arduino HX711 сильно дрейфует
- Мой ультразвуковой датчик показывает диапазон только 4 см?
- Попытка прочитать разные уровни газа с помощью датчика газа MQ2
- Почему вывод отправки влияет на вывод приема с помощью библиотеки емкостных датчиков Arduino
- Соответствие шаблону вибрации
- Библиотека клавиатуры не работает или я где-то ошибаюсь
- Какова работа pulseIn?
Что произойдет, если вы отключите модуль? У вас все еще есть 54612lx?, @Gerben
люкс/2? проверьте конфигурацию по умолчанию (lightMeter.begin(???))., @Mikael Patel
используйте эту библиотеку = https://github.com/Erriez/ErriezBH1750 его очень хорошо использовать, @mahdi gadget