Uživatelské nástroje

Nástroje pro tento web


education:arduino_bh1750

Toto je starší verze dokumentu!


BH1750

  • Senzor intenzity osvětlení
  • Komunikace přes I2C
  • Napájení 2.4 - 3.6V
  • Nastavitelné rozlišení

BH1750
Data sheet
Podrobný článek

BH1750 ARDUINO ESP32
I2C SDA A4 GPIO21
SCL A5 GPIO22

2 režimy měření:

  1. Jednotlivé - Po naměření jedné hodnoty automaticky přejde do power down režimu
  2. Stálé - Po dokončení jednoho měření se spustí další

Knihovna obsahuje:
begin(mode, addr, i2c); - mode režimy měření, addr - I2C adresa, i2c - I2C sběrnice
configure(mode); - Slouží pro změnu režimu. mode - režim
setMTreg(MTreg); - Slouží k nastavení registru MTreg, který ovlivňuje citlivost a rozsah (Vysoká citlivost = malý rozsah…)
measurementReady(maxWait); - Vrátí logickou 1, když je měření pravděpodobně dokončené (spoléhá na dobu měření z datasheetu). maxWait - použití typické nebo maximální doby měření
readLightLevel(); - Vrátí naměřenou hodnotu intenzity světla [lx] jako float

REŽIM DÉLKA MĚŘENÍ ROZLIŠENÍ ROZSAH
L-resolution 16 ms 4 lx 0 - 54 612.5 lx
H-resolution 120 ms 1 lx 0 - 54 612.5 lx
H-resolution 2 120 ms 0.5 lx 0 - 27 306.25 lx
BH1750.ino
#include <BH1750.h>
#include <Wire.h>
 
BH1750 lightMeter(0x23);  // I2C, adresa: |ADD=LOW 0x23| |ADD=HIGH 0x5C|
 
void setup() {
  Serial.begin(9600);
  Wire.begin();
 
  Serial.println("\nBH1750 test");
  if (lightMeter.begin(BH1750::CONTINUOUS_HIGH_RES_MODE_2)) {
    Serial.println(F("Chyba komunikace s BH1750"));
  }
}
 
void loop() {
  if (lightMeter.measurementReady()) {
    float lux = lightMeter.readLightLevel();
 
    if (lux == -2) Serial.println("Chyba: senzor neni nastaven");
    else if (lux == -1) Serial.println("Chyba: neplatna hodnota");
    else Serial.println(lux);
  }
}
education/arduino_bh1750.1685529738.txt.gz · Poslední úprava: 2023/08/18 12:36 (upraveno mimo DokuWiki)