Ich habe mir eine Co2 Ampel besorgt und lese auch die Temperatur und Feuchtigkeitsmesswerte aus. Der Temperaturwert ist immer deutlich zu hoch (ca. 5-6 °C), Feuchtigkeit und Co2 Werte ergeben Sinn.
Mein Code ist ganz simpel:
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include „SenseBoxMCU.h“
#include „SparkFun_SCD30_Arduino_Library.h“#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
SCD30 airSensor;
#include <Adafruit_NeoPixel.h>
Adafruit_NeoPixel rgb_led_1= Adafruit_NeoPixel(3, 1,NEO_GRB + NEO_KHZ800);void setup() {
senseBoxIO.powerI2C(true);
delay(2000);
display.begin(SSD1306_SWITCHCAPVCC, 0x3D);
display.display();
delay(100);
display.clearDisplay();
Wire.begin();
if (airSensor.begin() == false)
{
while (1)
;
}
rgb_led_1.begin();
rgb_led_1.setBrightness(255);
}void loop() {
if (airSensor.getCO2() < 1000) {
rgb_led_1.setPixelColor(0,rgb_led_1.Color(0,255,0));
rgb_led_1.show();
} else if (airSensor.getCO2() >= 1000 && airSensor.getCO2() < 1500) {
rgb_led_1.setPixelColor(0,rgb_led_1.Color(255,150,0));
rgb_led_1.show();
} else if (airSensor.getCO2() >= 1500) {
rgb_led_1.setPixelColor(0,rgb_led_1.Color(255,0,0));
rgb_led_1.show();
}
display.clearDisplay();
display.setCursor(0,0);
display.setTextSize(2);
display.setTextColor(WHITE,BLACK);
display.println(„CO2“);
display.setCursor(0,25);
display.setTextSize(5);
display.setTextColor(WHITE,BLACK);
display.println(airSensor.getCO2());
display.display();
delay(2000);
display.clearDisplay();
display.setCursor(0,0);
display.setTextSize(2);
display.setTextColor(WHITE,BLACK);
display.println(„Temp“);
display.setCursor(0,25);
display.setTextSize(5);
display.setTextColor(WHITE,BLACK);
display.println(airSensor.getTemperature());
display.display();
delay(2000);
display.clearDisplay();
display.setCursor(0,0);
display.setTextSize(2);
display.setTextColor(WHITE,BLACK);
display.println(„rel.H.%“);
display.setCursor(0,25);
display.setTextSize(5);
display.setTextColor(WHITE,BLACK);
display.println(airSensor.getHumidity());
display.display();
delay(2000);
Hat jemand eine Idee, woran es liegen könnte oder ob man den Sensor kalibrieren kann/muss? Eventuell hat der Sensor auch ein Heizelement, das man berücksichtigen muss? Es scheint so, als würde der Wert nach dem Einschalten erst mit der Zeit höher und pendelt sich dann bei diesem Offset ein.