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);
}
|