Am fehlenden kompletten Code soll es nicht scheitern ![]()
#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
*********************************************************************************************************/