66 lines
1.6 KiB
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(¶ms);
|
|
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, ¶ms)) != 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);
|
|
}
|
|
|