Messintervall Scd30 verändern

Hallo,
ich bin grad dabei eine C=2 Ampel mit einem zu bauen. Soweit funktioniert auch das Meiste. Mein Problem ist, dass der Co2 Sensor den ich benutze (SCD30), alle 2 Sekunden misst und ich nicht weiß wie man das Messintervall verändern kann. Ich habe es schon mit einem Delay versucht, jedoch hat die LED dann verzögert bzw. sehr komisch geleuchtet. Ich würde mich über Hilfe freuen.

Hier der Code:

/*
 Reading CO2, humidity and temperature from the SCD30
 By: Nathan Seidle
 SparkFun Electronics
 Date: May 22nd, 2018
 License: MIT. See license file for more information but you can
 basically do whatever you want with this code.

 Feel like supporting open source hardware?
 Buy a board from SparkFun! https://www.sparkfun.com/products/15112

 This example prints the current CO2 level, relative humidity, and temperature in C.

 Hardware Connections:
 Attach RedBoard to computer using a USB cable.
 Connect SCD30 to RedBoard using Qwiic cable.
 Open Serial Monitor at 115200 baud.
*/

#include <Wire.h>
#include <Adafruit_NeoPixel.h>
#include "SparkFun_SCD30_Arduino_Library.h" //Click here to get the library: http://librarymanager/All#SparkFun_SCD30
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define PIN_LED 3     // Control signal, connect to DI of the LED
#define NUM_LED 1
SCD30 airSensor;

#define RED_VAL_1       0
#define GREEN_VAL_1     255
#define BLUE_VAL_1      0

Adafruit_SSD1306 display(4); //OLED_RESET 4

#if (SSD1306_LCDHEIGHT != 32)
#error("Height incorrect, change Adafruit_SSD1306.h");
#endif


Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUM_LED, PIN_LED, NEO_GRB + NEO_KHZ800);

void setup()
{
 Serial.begin(115200);
 Serial.println("SCD30 Example");
 Wire.begin();

 if (airSensor.begin() == false)
 {
   Serial.println("Air sensor not detected. Please check wiring. Freezing...");
   while (1);

 }

 Serial.begin(9600);
 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  //define I2C Adress
 display.clearDisplay();

 //The SCD30 has data ready every two seconds
}

void loop()
{
 
 if (airSensor.dataAvailable())
 {
   Serial.print("co2(ppm):");
   Serial.print(airSensor.getCO2());

   Serial.print(" temp(C):");
   Serial.print(airSensor.getTemperature(), 1);

   Serial.print(" humidity(%):");
   Serial.print(airSensor.getHumidity(), 1);



   Serial.println();
// long runtime = millis() / 1000;
 display.setTextSize(1);
 display.setTextColor(WHITE);
 display.setCursor(10, 0 );
 display.println(airSensor.getCO2());
 display.setTextColor(WHITE);
 display.setTextSize(1);
 display.setTextColor(WHITE); //Change Background to White
 display.setCursor(35, 0);
 display.println("ppm");
//  display.println(runtime);
 display.setTextSize(1);
 display.setTextColor(WHITE); //Change Background to White
 display.setCursor(10, 12);
 display.println(airSensor.getTemperature(), 1 );
 display.setTextSize(1);
 display.setTextColor(WHITE); //Change Background to White
 display.setCursor(38, 12);
 display.println("Grad Celsius");
 display.setTextSize(1);
 display.setTextColor(WHITE); //Change Background to White
 display.setCursor(10, 24);
 display.println(airSensor.getHumidity(), 1);
 display.setTextSize(1);
 display.setTextColor(WHITE); //Change Background to White
 display.setCursor(35, 24);
 display.println("% Humiditaet");
 display.display();
 display.clearDisplay();
   if (airSensor.getCO2() < 1000)
{ 
  pixels.begin();
  for(int i=0; i<NUM_LED; i++)
 pixels.setPixelColor(i, pixels.Color(0, 0, 0));
 pixels.show();
 pixels.setBrightness(0); 


 }
  
 else if (airSensor.getCO2() >= 1000 && airSensor.getCO2() <= 1250){
  pixels.begin();
 for(int i=0; i<NUM_LED; i++)
 pixels.setPixelColor(i, pixels.Color(255,255, 0));
 pixels.show();
 pixels.setBrightness(150); 
 }
  else if (airSensor.getCO2() >= 1250 && airSensor.getCO2() <= 1500){
  pixels.begin();
 for(int i=0; i<NUM_LED; i++)
 pixels.setPixelColor(i, pixels.Color(255,165, 0));
 pixels.show();
 pixels.setBrightness(150); 
 }
 
  else if (airSensor.getCO2() > 1500){
  pixels.begin();
 for(int i=0; i<NUM_LED; i++)
 pixels.setPixelColor(i, pixels.Color(255,0, 0));
 pixels.show();
 pixels.setBrightness(150); 
 }
 //delay(20000) //das delay hat hier nicht funktioniert, die LED hat nur verbuggt geleuchtet
 }
 else
   Serial.println("Waiting for new data");

 delay(500);

}

Danke im voraus (PS. Ich bin noch ein Anfänger, deshalb ist der Code auch nicht sehr schön geschrieben, tut mir leid)

grüße Kpex

Setze Deinen Code bitte in Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
Dann ist er auch auf mobilen Geräten besser lesbar.
Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

(deleted)

Jetzt habe ich es geschafft dass Messintervall auf 20 Sekunden zu ändern, in dem ich das in der Bibliothek so umgeschrieben habe. Jedoch habe ich das Problem, dass die Led teilweise verzögert leuchtet (Sie soll ab 1000 ppm gelb leuchten, jedoch leuchtet sie erst eine Messung später gelb als sie sollte und leuchtet nicht direkt wenn 1000 ppm angezeigt werden. Unter 1000 ppm soll sie nicht leuchten, und da leuchtet sie sofort nicht, wenn 1000 ppm gemessen werden). Ich weiß nicht mehr weiter. Ich wäre für jede Hilfe dankbar

Grüße Kevin

/* Code:
 Reading CO2, humidity and temperature from the SCD30
 By: Nathan Seidle
 SparkFun Electronics
 Date: May 22nd, 2018
 License: MIT. See license file for more information but you can
 basically do whatever you want with this code.

 Feel like supporting open source hardware?
 Buy a board from SparkFun! https://www.sparkfun.com/products/15112

 This example prints the current CO2 level, relative humidity, and temperature in C.

 Hardware Connections:
 Attach RedBoard to computer using a USB cable.
 Connect SCD30 to RedBoard using Qwiic cable.
 Open Serial Monitor at 115200 baud.
*/

#include <Wire.h>
#include <Adafruit_NeoPixel.h>
#include "SparkFun_SCD30_Arduino_Library.h" //Click here to get the library: http://librarymanager/All#SparkFun_SCD30
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define PIN_LED 3     // Control signal, connect to DI of the LED
#define NUM_LED 1
SCD30 airSensor;

#define RED_VAL_1       0
#define GREEN_VAL_1     255
#define BLUE_VAL_1      0

Adafruit_SSD1306 display(4); //OLED_RESET 4

#if (SSD1306_LCDHEIGHT != 32)
#error("Height incorrect, change Adafruit_SSD1306.h");
#endif


Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUM_LED, PIN_LED, NEO_GRB + NEO_KHZ800);

void setup()
{
 pixels.begin();
  //for(int i=0; i<NUM_LED; i++)
 pixels.setPixelColor(0, pixels.Color(0, 255, 0));
 pixels.show();
 pixels.setBrightness(150); 
 delay(2000);
 pixels.clear();
 
 Serial.begin(115200);
 Serial.println("SCD30 Example");
 Wire.begin();

 if (airSensor.begin() == false)
 {
   Serial.println("Air sensor not detected. Please check wiring. Freezing...");
   while (1);

 }

 Serial.begin(9600);
 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  //define I2C Adress
 display.clearDisplay();

 //The SCD30 has data ready every 20 seconds
}

void loop()
{
  
 
 if (airSensor.dataAvailable())
 {
   
   Serial.print("co2(ppm):");
   Serial.print(airSensor.getCO2());

   Serial.print(" temp(C):");
   Serial.print(airSensor.getTemperature(), 1);

   Serial.print(" humidity(%):");
   Serial.print(airSensor.getHumidity(), 1);



   Serial.println();
// long runtime = millis() / 1000;
 display.setTextSize(1);
 display.setTextColor(WHITE);
 display.setCursor(10, 0 );
 display.println(airSensor.getCO2());
 display.setTextColor(WHITE);
 display.setTextSize(1);
 display.setTextColor(WHITE); //Change Background to White
 display.setCursor(35, 0);
 display.println("ppm");
//  display.println(runtime);
 display.setTextSize(1);
 display.setTextColor(WHITE); //Change Background to White
 display.setCursor(10, 12);
 display.println(airSensor.getTemperature(), 1 );
 display.setTextSize(1);
 display.setTextColor(WHITE); //Change Background to White
 display.setCursor(38, 12);
 display.println("Grad Celsius");
 display.setTextSize(1);
 display.setTextColor(WHITE); //Change Background to White
 display.setCursor(10, 24);
 display.println(airSensor.getHumidity(), 1);
 display.setTextSize(1);
 display.setTextColor(WHITE); //Change Background to White
 display.setCursor(35, 24);
 display.println("% Humiditaet");
 display.display();
 display.clearDisplay();
   if (airSensor.getCO2() < 1000)
{ 
  pixels.begin();
 // for(int i=0; i<NUM_LED; i++)
 pixels.setPixelColor(0, pixels.Color(0, 0, 0));
 pixels.show();
 pixels.setBrightness(0); 


 }
  
 else if (airSensor.getCO2() >= 1000 && airSensor.getCO2() <= 1250){
  pixels.begin();
// for(int i=0; i<NUM_LED; i++)
 pixels.setPixelColor(0, pixels.Color(255,255, 0));
 pixels.show();
 pixels.setBrightness(150); 
 }
  else if (airSensor.getCO2() >= 1250 && airSensor.getCO2() <= 1500){
  pixels.begin();
// for(int i=0; i<NUM_LED; i++)
 pixels.setPixelColor(0, pixels.Color(255,165, 0));
 pixels.show();
 pixels.setBrightness(150); 
 }
 
  else if (airSensor.getCO2() > 1500){
  pixels.begin();
 //for(int i=0; i<NUM_LED; i++)
 pixels.setPixelColor(0, pixels.Color(255,0, 0));
 pixels.show();
 pixels.setBrightness(150); 
 }

 }
 else
   Serial.println("Waiting for new data");

 delay(500);

}

Und warum steht der wieder nicht in Codetags?

Gruß Tommy

kpex
@CODe TAGS schreibt man [ code ] und [ /code ] ohne Leerzeichen.
Du mußt die Ekigen Klammern schon schreiben.
Grüße Uwe

(deleted)