Датчик освещенности 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);
}

, 👍-2

Обсуждение

Что произойдет, если вы отключите модуль? У вас все еще есть 54612lx?, @Gerben

люкс/2? проверьте конфигурацию по умолчанию (lightMeter.begin(???))., @Mikael Patel

используйте эту библиотеку = https://github.com/Erriez/ErriezBH1750 его очень хорошо использовать, @mahdi gadget


5 ответов


1

На плате, которую вы используете, может быть регулятор и логический переключатель, но, согласно техническому описанию, устройство представляет собой устройство 3 В с логикой 1,8 В и уровнями I2C. Итак, это первое, что вам нужно проверить.

Есть ли у вас резисторы 4,7 К, тянущие линии SDA и SCL к Vcc?

Можете ли вы изменить свой код, чтобы выключить устройство, а затем снять показания?

В вашем коде все в порядке, проводка выглядит нормально, значит, что-то не так с устройством или Arduino. Измените устройство (и код) на другое устройство I2C и посмотрите, нормально ли оно работает. Если да, то проблема может быть в BH1750.

Надеюсь, это поможет.

,

0

Глядя на BH1750.cpp и BH1750.h, я заметил некоторые ошибки:

  1. Замените #include "Wire.h" на #include <Wire.h> в файле заголовка, возможно тривиально, но все же...
  2. В методе BH1750::readLightLevel в .cpp закомментируйте Wire.beginTransmission(BH1750_I2CADDR); и Wire.endTransmission();; они не нужны для чтения и могут быть причиной неправильного значения, которое вы получаете.
  3. Вы также можете попробовать заменить _delay_ms(10); на delay(10), на всякий случай
  4. Вы также можете попробовать закомментировать level = level/1.2;, чтобы посмотреть, не повлияет ли это разделение на какие-либо негативные последствия.

Сохраните файлы после внесения изменений.

,

0

Мне пришлось подключить контакты SCL и SDA к выделенным контактам 20-й и 21-й на Arduino MEGA 2560. .

,

Убедитесь, что OP использует Arduino UNO, как указано в вопросе., @RSM


0

Я купил несколько модулей "GY-302" на ebay, это коммутационная плата с датчиком BH1750. Я попробовал один из них, и он вообще не реагировал, как и вы, я видел 54612 (это всего лишь 65535/1.2). Я попробовал другой из этих модулей, и это сработало. Итак, на том, который не работал, сенсорный чип не был хорошо выровнен и отцентрирован, а пайка выглядела некрасиво с одной стороны, поэтому я использовал свой паяльник, чтобы попытаться оплавить и повторно выровнять/отцентрировать его. Если вы попытаетесь сделать это, очистите жало и не добавляйте припой! Теперь пайка выглядит еще некрасивее (под микроскопом..), но датчик работает хорошо! У меня нет никакого профессионального оборудования, даже маленького жала для моего дрянного паяльника, так что, наверное, мне повезло, что он сработал.

,

0

Я не припаивал свой датчик освещенности, и у него была та же ошибка, так как он просто упирался в контакты, попробуйте подтолкнуть его, чтобы датчик соприкасался с вилками, или просто припаяйте их :D

,