GeekTrack/2.Firmware/GeekTrack_BMP280_Test/main/app_main.c

66 lines
1.6 KiB
C

#include <stdio.h>
#include <freertos/FreeRTOS.h>
#include <freertos/task.h>
#include <esp_system.h>
#include <bmp280.h>
#define SDA_GPIO 32
#define SCL_GPIO 33
void bmp280_test(void *pvParamters)
{
bmp280_params_t params;
bmp280_init_default_params(&params);
bmp280_t dev;
esp_err_t res;
printf("i2cdev_init\n");
while (i2cdev_init() != ESP_OK)
{
printf("Could not init I2Cdev library\n");
vTaskDelay(250 / portTICK_PERIOD_MS);
}
printf("bmp280_init_desc\n");
while (bmp280_init_desc(&dev, BMP280_I2C_ADDRESS_0, 0, SDA_GPIO, SCL_GPIO) != ESP_OK)
{
printf("Could not init device descriptor\n");
vTaskDelay(250 / portTICK_PERIOD_MS);
}
printf("bmp280_init\n");
while ((res = bmp280_init(&dev, &params)) != ESP_OK)
{
printf("Could not init BMP280, err: %d\n", res);
vTaskDelay(250 / portTICK_PERIOD_MS);
}
bool bme280p = dev.id == BME280_CHIP_ID;
printf("BMP280: found %s\n", bme280p ? "BME280" : "BMP280");
float pressure, temperature, humidity;
while (1)
{
vTaskDelay(500 / portTICK_PERIOD_MS);
if (bmp280_read_float(&dev, &temperature, &pressure, &humidity) != ESP_OK)
{
printf("Temperature/pressure reading failed\n");
continue;
}
printf("Pressure: %.2f Pa, Temperature: %.2f C", pressure, temperature);
if (bme280p)
printf(", Humidity: %.2f\n", humidity);
else
printf("\n");
}
}
void app_main(void)
{
xTaskCreatePinnedToCore(bmp280_test, "bmp280_test", configMINIMAL_STACK_SIZE * 8, NULL, 5, NULL, APP_CPU_NUM);
}