[gelöst] Bitte um Hilfe bei einem Schleifen-Thema

@my_xy_projekt

Am fehlenden kompletten Code soll es nicht scheitern :wink:

#include <SPI.h>
#include "LCD_Driver.h"
#include "GUI_Paint.h"
#include "image.h"

#include <Adafruit_SCD30.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH110X.h>

Adafruit_SCD30  scd30;

void setup()
{
  Config_Init();
  LCD_Init();
  LCD_Clear(GREEN);
  LCD_SetBacklight(80);
  Paint_NewImage(LCD_WIDTH, LCD_HEIGHT,0,WHITE);
  Paint_Clear(GREEN);
  Paint_SetRotate(180);
//  Paint_DrawString_EN(0, 0, "Temp:", &Font24, GREEN, BROWN);
//  Paint_DrawString_EN(0, 28, "Hum:", &Font24, WHITE, GRAYBLUE);
//  Paint_DrawString_EN(0, 56, "CO2:",  &Font24, GREEN, BLACK);
//  Paint_DrawRectangle(70, 10, 100, 40, RED,DRAW_FILL_EMPTY, DOT_PIXEL_2X2 );
//  Paint_DrawLine(70, 10, 100, 40, MAGENTA, LINE_STYLE_SOLID, DOT_PIXEL_2X2);
//  Paint_DrawLine(100, 10, 70, 40, MAGENTA, LINE_STYLE_SOLID, DOT_PIXEL_2X2);
//
//  Paint_DrawImage(gImage_40X40,120, 0,40, 40);

//  while (!Serial) delay(10);     // will pause Zero, Leonardo, etc until serial console opens
  Serial.println("Adafruit SCD30 test!");


    // Try to initialize!
    if (!scd30.begin()) 
    {
    Serial.println("Failed to find SCD30 chip");
    while (1) { delay(10); }
    }
    Serial.println("SCD30 Found!");

    if (!scd30.setMeasurementInterval(3))
    {
    Serial.println("Failed to set measurement interval");
    while(1){ delay(10);}
    }
    
  Serial.print("Measurement Interval: "); 
  Serial.print(scd30.getMeasurementInterval()); 
  Serial.println(" seconds");
    
}



void loop()
{
  if (scd30.dataReady())
  {
    Serial.println("Data available!");

    if (!scd30.read()){ Serial.println("Error reading sensor data"); return; }

    Serial.print("Temperature: ");
//   Serial.print(scd30.temperature);
    Serial.print(scd30.temperature,1);
    Serial.println(" degrees C");
    
    Serial.print("Relative Humidity: ");
//    Serial.print(scd30.relative_humidity);
    Serial.print(scd30.relative_humidity,0);
    Serial.println(" %");
    
    Serial.print("CO2: ");
    Serial.print(scd30.CO2, 0);
    Serial.println(" ppm");
    Serial.println("");
  } else 
  {
  //  Serial.println("No data");
  }

if(scd30.CO2 < 900)
  { 
    LCD_Clear(GREEN);                                               // lösche Display-Inhalt, Hintergrundfarbe grün
    Paint_DrawString_EN(45, 10, "CO2:",  &Font24, GREEN, BLACK);    // schreibe Messgröße an richtigen Platz
    Paint_DrawString_EN(85, 42, "ppm",  &Font20, GREEN, BLACK);     // schreibe Einheit an richtigen Platz
    
    while (scd30.CO2 < 900)
    {
    Paint_DrawNum(25, 40, (scd30.CO2), &Font24, GREEN, BLACK);      // schreibe Messwert an richtigen Platz
    }
  }
  
else if (scd30.CO2 >= 900 && scd30.CO2 < 1000)

 {
    LCD_Clear(YELLOW);                                              // lösche Display-Inhalt, Hintergrundfarbe grün
    Paint_DrawString_EN(45, 10, "CO2:",  &Font24, YELLOW, BLACK);   // schreibe Messgröße an richtigen Platz
    Paint_DrawString_EN(90, 42, "ppm",  &Font20, YELLOW, BLACK);    // schreibe Einheit an richtigen Platz
    
    Paint_DrawNum(20, 40, (scd30.CO2), &Font24, YELLOW, BLACK);     // schreibe Messwert an richtigen Platz
  }

else if (scd30.CO2 >= 1000 && scd30.CO2 < 1200)

 {
    LCD_Clear(YELLOW);
    Paint_DrawString_EN(45, 10, "CO2:",  &Font24, YELLOW, BLACK);
    Paint_DrawString_EN(95, 42, "ppm",  &Font20, YELLOW, BLACK);
    
    Paint_DrawNum(18, 40, (scd30.CO2), &Font24, YELLOW, BLACK);
  }

else

 {  
    LCD_Clear(RED); 
    Paint_DrawString_EN(45, 10, "CO2:",  &Font24, RED, BLACK);
    Paint_DrawString_EN(95, 42, "ppm",  &Font20, RED, BLACK);
    
    Paint_DrawNum(18, 40, (scd30.CO2), &Font24, RED, BLACK);
 }

}

// für später:
//  Paint_DrawString_EN(0, 5, "Temp:", &Font20, GREEN, BROWN);
//  Paint_DrawNum(77, 5, (scd30.temperature), &Font20, GREEN, BROWN);
//  Paint_DrawString_EN(120, 5, "C", &Font20, GREEN, BROWN);
//  Paint_DrawString_EN(0, 32, "Hum:", &Font20, GREEN, BLUE);
//  Paint_DrawNum(77, 32, (scd30.relative_humidity), &Font20, GREEN, BLUE);
//  Paint_DrawString_EN(120, 32, "%", &Font20, GREEN, BLUE);

/*********************************************************************************************************
  END FILE
*********************************************************************************************************/