#include #include "Adafruit_CCS811.h" // Reiner CCS811-Test (CJMCU-811) ohne LCD und DHT11. Ausgabe im Serial Monitor (9600 Baud). // I2C: SDA = A4, SCL = A5 (Arduino Uno). WAK und ADD des Moduls an GND -> Adresse 0x5A. // Mit ADD an VCC lautet die Adresse 0x5B. Adafruit_CCS811 ccs; bool ccsOk = false; // Sucht alle Geräte am I2C-Bus. Der CCS811 muss bei 0x5A oder 0x5B auftauchen. void scanneI2C() { Serial.println(F("I2C-Scan...")); uint8_t gefunden = 0; for (uint8_t adr = 1; adr < 127; adr++) { Wire.beginTransmission(adr); if (Wire.endTransmission() == 0) { Serial.print(F(" Geraet bei 0x")); Serial.println(adr, HEX); gefunden++; } } if (gefunden == 0) { Serial.println(F(" KEIN Geraet gefunden -> SDA/SCL, GND, VCC, WAK, Loetstellen pruefen")); } } void setup() { Serial.begin(9600); Serial.println(F("--- CCS811-Test ---")); Wire.begin(); scanneI2C(); // Erst 0x5A (ADD an GND), dann 0x5B (ADD an VCC) uint8_t adresse = 0x5A; ccsOk = ccs.begin(0x5A); if (!ccsOk) { adresse = 0x5B; ccsOk = ccs.begin(0x5B); } if (ccsOk) { Serial.print(F("CCS811 OK bei 0x")); Serial.println(adresse, HEX); Serial.println(F("Aufwaermphase: die ersten Werte sind oft 400 ppm / 0 ppb.")); } else { Serial.println(F("CCS811 begin() fehlgeschlagen (0x5A und 0x5B)")); } } void loop() { delay(1000); if (!ccsOk) { Serial.println(F("CCS811: nicht initialisiert")); return; } if (!ccs.available()) { Serial.println(F("CCS811: noch keine neuen Daten")); return; } if (ccs.readData()) { Serial.println(F("CCS811: Lesefehler")); return; } Serial.print(F("eCO2: ")); Serial.print(ccs.geteCO2()); Serial.print(F(" ppm TVOC: ")); Serial.print(ccs.getTVOC()); Serial.println(F(" ppb")); }