#include // printf #include #include #include "scd4x_i2c.h" #include "sensirion_common.h" #include "sensirion_i2c_hal.h" /** * TO USE CONSOLE OUTPUT (PRINTF) IF NOT PRESENT ON YOUR PLATFORM */ //#define printf(...) int main(void) { int16_t error = 0; sensirion_i2c_hal_init(); wiringPiSetup(); // Clean up potential SCD40 states scd4x_wake_up(); scd4x_stop_periodic_measurement(); scd4x_reinit(); uint16_t serial_0; uint16_t serial_1; uint16_t serial_2; error = scd4x_get_serial_number(&serial_0, &serial_1, &serial_2); if (error) { printf("Error executing scd4x_get_serial_number(): %i\n", error); } else { printf("serial: 0x%04x%04x%04x\n", serial_0, serial_1, serial_2); } // Start Measurement error = scd4x_start_periodic_measurement(); if (error) { printf("Error executing scd4x_start_periodic_measurement(): %i\n", error); } printf("Waiting for first measurement... (5 sec)\n"); for (;;) { // Read Measurement sensirion_i2c_hal_sleep_usec(5000000); uint16_t co2; float temperature; float humidity; error = scd4x_read_measurement(&co2, &temperature, &humidity); if (error) { printf("Error executing scd4x_read_measurement(): %i\n", error); } else if (co2 == 0) { printf("Invalid sample detected, skipping.\n"); } else { printf("CO2: %u ppm\n", co2); printf("Temperature: %.2f °C\n", temperature); printf("Humidity: %.2f RH\n", humidity); } } return 0; }