BH1750 Digital ljussensor (4 / 6 steg)
Steg 4: Arduino kod
Första stort tack för klor , skapade han ett bibliotek för BH1750, du kan kolla upp det.
Jag förberedde ett bibliotek det, försökte lösa vissa problem som:
1) multi enhet ansluta, kan du ansluta 2 enheter av BH1750 med olika adresser, beror på ADDR Pin status.
Om ADDR = låg, adressen blir 0x23
Om ADDR = hög, adressen blir 0x5C
2) power ned-läge, kan du lägga din sensor i energisparläge så det har konsumera 0.01uA.
Du kan hämta biblioteket från Github , Unzip den bifogade filen och lägga den i bibliotek broschyren i arduino väg, sedan starta om arduino IDE.
Du kan öppna skissen kommer med detta bibliotek.
Första program: läsa värdet Lux via seriell Port.
kod:
/*
Detta är en enkel kod att testa BH1750FVI ljus senosr
kommunicera med I2C-protokollet
Detta bibliotek aktiverar 2 slav enhetsadress
Huvudadressen 0x23
sekundär adress 0x5C
Anslut denna sensor som följande:
VCC >>> 3.3V
SDA >>> A4
SCL >>> A5
addr >> A3
GND >>> Gnd
Skriven av: Björn Rawashdeh
*/
Först definiera biblioteket:
#include < BH1750FVI.h > / / Sensor bibliotek
#include < Wire.h > / / I2C bibliotek
BH1750FVI LightSensor;
void setup() {/ / lägga installationen koden här, om du vill köra en gång:
Serial.BEGIN(9600);
LightSensor.begin();
/*
Ange adress för denna sensor
Du kan använda 2 olika adress
Device_Address_H "0x5C"
Device_Address_L "0x23"
Du måste ansluta Addr pin till A3.
*/
LightSensor.SetAddress (Device_Address_H), //Address 0x5C
För att justera slav på annan adress, kommentera bort den här raden
lightMeter.SetAddress(Device_Address_L); Adress 0x5C
//-----------------------------------------------
/*
Ställ in arbetar denna sensor
Välj följande läge:
Continuous_H_resolution_Mode
Continuous_H_resolution_Mode2
Continuous_L_resolution_Mode
OneTime_H_resolution_Mode
OneTime_H_resolution_Mode2
OneTime_L_resolution_Mode
Databladet rekommenderat för att använda Continuous_H_resolution_Mode
*/
LightSensor.SetMode(Continuous_H_resolution_Mode);
Serial.println("Running...");
}
void loop() {
sätta din huvudsakliga kod här, för att köra flera gånger:
uint16_t lux = LightSensor.GetLightIntensity(); / / få Lux-värde
Serial.Print ("ljus:");
Serial.Print(Lux);
Serial.println ("lux");
Delay(1000);
}