From 36963daac6951be23df4479ce4d2714997af98e9 Mon Sep 17 00:00:00 2001 From: Stefan Brand Date: Tue, 6 Apr 2021 16:09:08 +0200 Subject: [PATCH] Enable Calibration on Sensair S8 --- lib/MHZ19C/MHZ19C.cpp | 2 +- lib/SENSAIRS8/SENSAIRS8.cpp | 16 ++++++++++++++++ lib/SENSAIRS8/SENSAIRS8.h | 5 +++-- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/lib/MHZ19C/MHZ19C.cpp b/lib/MHZ19C/MHZ19C.cpp index 50d15b6..7f385aa 100644 --- a/lib/MHZ19C/MHZ19C.cpp +++ b/lib/MHZ19C/MHZ19C.cpp @@ -53,7 +53,7 @@ void MHZ19C::calibrate(void) { digitalWrite(calpin, LOW); delay(7500); digitalWrite(calpin, HIGH); - pinMode(PIN_PB4, INPUT_PULLUP); + pinMode(calpin, INPUT_PULLUP); } uint8_t MHZ19C::getSensorData(char * payload, uint8_t startbyte) { diff --git a/lib/SENSAIRS8/SENSAIRS8.cpp b/lib/SENSAIRS8/SENSAIRS8.cpp index 03e739a..db8cb26 100644 --- a/lib/SENSAIRS8/SENSAIRS8.cpp +++ b/lib/SENSAIRS8/SENSAIRS8.cpp @@ -49,6 +49,22 @@ uint8_t SENSAIRS8::getSensorData(char *payload, uint8_t startbyte) { return startbyte+2; } +void SENSAIRS8::calibrate(void) { + pinMode(calpin, OUTPUT); + digitalWrite(calpin, LOW); + delay(5000); + digitalWrite(calpin, HIGH); + pinMode(calpin, INPUT_PULLUP); +} + +void SENSAIRS8::initialize(void) { + // Disable Auto Background Calibration + uint8_t _cmd[8] = {0xFE, 0x06, 0x00, 0x01F, 0x00, 0x00, 0xAC, 0x03}; + while (Serial.available() > 0) Serial.read(); + Serial.write(_cmd, 8); + Serial.flush(); +} + // Read a Sensor Response uint8_t SENSAIRS8::read() { // Number of returned Bytes diff --git a/lib/SENSAIRS8/SENSAIRS8.h b/lib/SENSAIRS8/SENSAIRS8.h index 2a8c0e9..a365821 100644 --- a/lib/SENSAIRS8/SENSAIRS8.h +++ b/lib/SENSAIRS8/SENSAIRS8.h @@ -35,6 +35,7 @@ class SENSAIRS8 : public AttSensor { private: uint8_t buffer[SER_BUF_LEN]; + pin_size_t calpin = PIN_PB4; // PB4 is the Calibration Pin on the Addon PCB uint8_t read(); void zeroBuffer(void); @@ -43,8 +44,8 @@ class SENSAIRS8 : public AttSensor { public: SENSAIRS8(void); uint8_t getSensorData(char *payload, uint8_t startbyte); - void calibrate(void) {}; - void initialize(void) {}; + void calibrate(void); + void initialize(void); uint8_t numBytes(void) {return 2;}; };