Intellekten Edison: Lux mätare, TSL2561 (4 / 5 steg)
Steg 4: Ställ in den final koden.
Jag använder koden bygger på exempelkoden.
Först med de definitioner och globala variabler. Raden " TSL2561 tsl(TSL2561_ADDR_LOW);" innebär att min ADDR pin på sensorn är i marken.
< p > #include < wire.h >< br > #include "TSL2561.h"
#include "rgb_lcd.h" < /wire.h >< /p >< p > TSL2561 tsl(TSL2561_ADDR_LOW); < /p >< p > rgb_lcd lcd; < /p >< p > const int colorR = 255;
CONST int colorG = 0;
CONST int colorB = 0; < /p >
Gör sedan installationen.
< p > void setup(void) {< br > Serial.begin(9600);
om (tsl.begin()) {
Serial.println ("Funna sensor");
} annat {
Serial.println ("ingen sensor?");
samtidigt (1).
}
< /p >< p > tsl.setGain(TSL2561_GAIN_0X); Ange ingen vinst (för ljusa situtations)
tsl.setGain(TSL2561_GAIN_16X); ställa in 16 x förstärkning (för dim situationer)
tsl.setTiming(TSL2561_INTEGRATIONTIME_13MS); < /p >< p >
LCD.BEGIN (16, 2);
LCD.Home();
LCD.Clear();
lcd.setRGB (colorR, colorG, colorB);
lcd.setRGB(255,255,255);
} < /p >
Och slutligen det viktigaste programmet i loop. De tre linjerna strax under void slingan definiera vilken typ av ljus du vill mäta. Synlig inställning åtgärder allt ljus du kan se. Häxan är ett litet område från det elektromagnetiska spektrumet, som är ungefär mellan 380nm-700nm i våglängd på spektrumet.
Då finns det fullspectrum häxa innebär att du kan mäta synligt ljus och infraröd ljus på samma gång. I spektrumet innebär i våglängd mellan 380nm - 1mm (1000nm)
Och infraröd inställningen ser infrarött ljus i våglängd mellan 700nm - 1mm.
< p > void loop(void) {< br >
uint16_t x = tsl.getLuminosity(TSL2561_VISIBLE);
uint16_t x = tsl.getLuminosity(TSL2561_FULLSPECTRUM);
uint16_t x = tsl.getLuminosity(TSL2561_INFRARED);
Serial.println (x, DEC); < /p >< p > uint32_t lum = tsl.getFullLuminosity();
uint16_t ir, full;
IR = lum >> 16.
hela = lum & 0xFFFF; < /p >< p > lcd.setCursor(0,0);
LCD.Print("vis:");
lcd.setCursor(4,0);
LCD.Print(full-IR);
lcd.setCursor(9,0);
LCD.Print("IR:");
lcd.setCursor(12,0);
LCD.Print(IR);
lcd.setCursor(0,1);
LCD.Print("Lux:");
lcd.setCursor(4,1);
LCD.Print (tsl.calculateLux (full, ir));
Delay(500);
LCD.Clear();
} < /p >