aboutsummaryrefslogtreecommitdiff
path: root/test_fw/src/main.cpp
blob: 5f8e1d45fbf23e9900ac3641d928684e7a1aec93 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <Arduino.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>

#include <Adafruit_BME680.h>

#include <hardware/pio.h>

#include "i2c_scan.h"
#include "veml.h"
#include "board.h"
#include "bringup.h"

using namespace ocularium;


static Adafruit_BME680 bme(&Wire1);
static VEML lux(Wire1);

#define SCAN_I2C 0

#define SDCARD_SPI SD_SPI
static SDClass sd;

static bringup::init_check STARTUP_CHECKS[] = {
    {
        .name = String("bme680"),
        .f = [] { return bme.begin(BME_ADDR); },
        .succeeded = false,
    },
    {
        .name = String("veml7700"),
        .f = []{ return lux.init(veml::Config {
            .gain = veml::AmbientLightGain::Quarter,
        }); },
        .succeeded = false,
    }
};

void setup() {
    Serial.begin(115200);
    Serial.println("boot");

    bringup::init_buses();
    bringup::init_pins();

#if SCAN_I2C
    Serial.println("scanning...");
    scan(Wire1);
#endif
    
    bringup::startup_checks(STARTUP_CHECKS);

    Serial.println("sensors initialized");

    bringup::boot_animation();
    delay(100);

    digitalWrite(LED_CAPTURING, HIGH);
}

void loop() {
    static uint32_t bme_target_millis = 0;

    if (millis() >= bme_target_millis)
    {
        if (bme_target_millis != 0 && !bme.endReading())
        {
            Serial.println("bme read error!");
        }
        
        bme_target_millis = bme.beginReading();
    }
    
    Serial.print("lux: " + String(lux.lux()));
    Serial.print(", temp: " + String(bme.temperature));
    Serial.print(", hum: " + String(bme.humidity));
    Serial.print(", pres: " + String(bme.pressure));
    Serial.print(", gas: " + String(bme.gas_resistance));
    Serial.println();

    delay(100);
}