TSL2591-SQM

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();
}

>giove50: ti ricordo che in conformità al regolamento, punto 7, devi editare il tuo post (quindi NON scrivendo un nuovo post, ma utilizzando il bottone More -> Modify che si trova in basso a destra del tuo post) e racchiudere il codice (... fosse anche UNA sola riga) all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone con icona fatta così: </>, tutto a sinistra).

In pratica, tutto il tuo codice dovrà trovarsi racchiuso tra due tag: [code] _il _tuo_ codice_ [/code] così da non venire interpretato e non dare adito alla formazione di caratteri indesiderati o cattiva formattazione del testo. Grazie.

Guglielmo

P.S.: Ti ricordo anche che, purtroppo, fino a quando non avrai sistemato il codice come richiesto, nessuno ti potrà rispondere, quindi ti consiglio di farlo al più presto. :wink:

Hai fatto correttamente, ma NON hai letto attentamente il mio post ... devi MODIFICARE il post originale e non crearne uno nuovo ... :wink:

Ho rimosso l'inutile post duplicato ...

Guglielmo