Buon giorno sto facendo un SQM con Arduino nano e TSL2591 funziona tutto ma oscurando completamente il sensore ottengo 16. Non dovrei ottenere 22 circa? Dove sta l'inghippo? Grazie.
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <Fonts/FreeSerif9pt7b.h>
#include "Adafruit_TSL2591.h"
#include <BMP280_DEV.h>
float temperature, pressure, altitude;
BMP280_DEV bmp280;
// OLED display TWI address
#define OLED_ADDR 0x3C
Adafruit_SSD1306 display(-1);
Adafruit_TSL2591 tsl = Adafruit_TSL2591(2591); // pass in a number for the sensor identifier (for your use later)
uint32_t lum;
uint16_t ir, full;
float lux;
float ulux;
float lum1;
float ir1;
float full1;
float mag_arcsec2;
// symbols
// degree for Celsius
const unsigned char degree [] PROGMEM =
{
0xe,0x11,0x11,0x11,0xe,0x0,0x0,0x0
};
void setup() {
Serial.begin(9600);
bmp280.begin(BMP280_I2C_ALT_ADDR);
bmp280.setTimeStandby(TIME_STANDBY_1000MS);
bmp280.startNormalConversion();
// tsl2591
sensor_t sensor;
tsl.getSensor(&sensor);
tsl.setGain(TSL2591_GAIN_MED); // MAX, HIGH MED,LOW,
tsl.setTiming(TSL2591_INTEGRATIONTIME_600MS); // 100MS, 200 MS, 300MS, 400MS,500MS, 600MS
// setup for oled display
display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR);
display.clearDisplay();
display.display();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setFont(&FreeSerif9pt7b);
display.clearDisplay();
display.drawPixel(120, 50, WHITE);
display.clearDisplay();
display.setCursor(1, 20);
display.print("SQM");
display.display();
}
void loop() { {
lux = 0;
ulux =0;
mag_arcsec2=0;
}
bmp280.getMeasurements(temperature, pressure, altitude);
lum = tsl.getFullLuminosity();// micro-lumen
lum1 = lum;//lumen
ir = lum >> 16;// diviso per 2 alla 16
ir1 = ir;
full = lum & 0xFFFF;// and tra bit
full1 = full;
delay(100);
lux = tsl.calculateLux(full, ir); // light intensiti in microlux
mag_arcsec2 = log10(lux/108000)/-0.4; //(log((ulux/108000) ) /(-0.4)
display_values();
}
void display_values(){
display.drawPixel(120, 50, WHITE);
display.clearDisplay();
display.setCursor(1, 20);
display.print("mag");
display.setCursor(55, 20);
display.print(mag_arcsec2);
display.display();
}