diff options
author | dakkar <dakkar@thenautilus.net> | 2022-03-27 13:32:52 +0100 |
---|---|---|
committer | dakkar <dakkar@thenautilus.net> | 2022-03-27 13:32:52 +0100 |
commit | 21190f0e08161af62fa620a96582dc085919a071 (patch) | |
tree | fa3ef20545c351b5f47ff31032d5491c80bfd28e | |
parent | don't show negative particle counts (diff) | |
download | env-sensor-21190f0e08161af62fa620a96582dc085919a071.tar.gz env-sensor-21190f0e08161af62fa620a96582dc085919a071.tar.bz2 env-sensor-21190f0e08161af62fa620a96582dc085919a071.zip |
fix pm low power reading
-rw-r--r-- | pm.h | 21 |
1 files changed, 16 insertions, 5 deletions
@@ -19,11 +19,13 @@ private: uint8_t auto_clean_days; unsigned long last_measurment_millis; unsigned long read_interval_millis; + bool awake; public: PM(uint8_t acd=4, unsigned long ri=30000) : auto_clean_days(acd), last_measurment_millis(0), - read_interval_millis(ri) + read_interval_millis(ri), + awake(false) {} void start() { @@ -47,6 +49,8 @@ public: if (ret < 0) { Serial.print("PM starting measurement error\n"); } + + awake=true; } bool dataReady() { @@ -55,13 +59,19 @@ public: // have we read recently? unsigned long now=millis(); - // that first check is in case of overflow & rollover - if (now > last_measurment_millis && (now - last_measurment_millis) < read_interval_millis) { + if ( + last_measurment_millis > 0 && // have we measured once at least? + now > last_measurment_millis && // has there been no overflow & rollover? + (now - last_measurment_millis) < read_interval_millis // is it too soon? + ) { return false; } - sps30_wake_up(); - sps30_start_measurement(); + if (!awake) { + sps30_wake_up(); + sps30_start_measurement(); + awake=true; + } ret = sps30_read_data_ready(&data_ready); if (ret < 0) { @@ -90,5 +100,6 @@ public: last_measurment_millis = millis(); sps30_stop_measurement(); sps30_sleep(); + awake=false; } }; |