|
1 | 1 | #pragma once |
2 | 2 | // |
3 | 3 | // FILE: Cozir.h |
4 | | -// AUTHOR: DirtGambit & Rob Tillaart |
5 | | -// VERSION: 0.3.3 |
| 4 | +// VERSION: 0.3.4 |
6 | 5 | // PURPOSE: library for COZIR range of sensors for Arduino |
7 | 6 | // Polling Mode |
8 | 7 | // URL: https://github.com/RobTillaart/Cozir |
|
15 | 14 | #include "Arduino.h" |
16 | 15 |
|
17 | 16 |
|
18 | | -#define COZIR_LIB_VERSION (F("0.3.3")) |
| 17 | +#define COZIR_LIB_VERSION (F("0.3.4")) |
19 | 18 |
|
20 | 19 |
|
21 | | -// OUTPUTFIELDS |
| 20 | +// OUTPUT FIELDS |
22 | 21 | // See datasheet for details. |
23 | 22 | // These defines can be OR-ed for the SetOutputFields command |
| 23 | +// |
| 24 | +#define CZR_UNKNOWN_2 0x8000 // returns P 00128 ? |
| 25 | +#define CZR_UNKNOWN_1 0x4000 // returns E 00016 ? |
24 | 26 | #define CZR_LIGHT 0x2000 |
25 | 27 | #define CZR_HUMIDITY 0x1000 |
26 | 28 | #define CZR_FILTLED 0x0800 |
@@ -165,5 +167,78 @@ class COZIR |
165 | 167 | }; |
166 | 168 |
|
167 | 169 |
|
| 170 | + |
| 171 | +//////////////////////////////////////////////////////////////////////////////// |
| 172 | +// |
| 173 | +// C0ZIRParser |
| 174 | +// |
| 175 | +// used to parse the stream from a COZIR CO2 sensor. |
| 176 | +// Note: one can comment fields / code not used to minimize footprint. |
| 177 | +// |
| 178 | +class C0ZIRParser |
| 179 | +{ |
| 180 | +public: |
| 181 | + C0ZIRParser(); |
| 182 | + |
| 183 | + void init(); |
| 184 | + |
| 185 | + // returns field char if a field is completed, 0 otherwise. |
| 186 | + uint8_t nextChar(char c); |
| 187 | + |
| 188 | + // FETCH LAST READ VALUES |
| 189 | + float celsius(); |
| 190 | + float fahrenheit() { return (celsius() * 1.8) + 32; }; |
| 191 | + float kelvin() { return celsius() + 273.15; }; |
| 192 | + float humidity() { return 0.1 * _humidity; }; |
| 193 | + |
| 194 | + uint16_t light() { return _light; }; |
| 195 | + uint16_t ledFilt() { return _LED_FILT; }; |
| 196 | + uint16_t ledRaw() { return _LED_RAW; }; |
| 197 | + uint16_t ledMax() { return _LED_MAX; }; |
| 198 | + uint16_t ledSignalFilt() { return _LED_signal_FILT; }; |
| 199 | + uint16_t ledSignalRaw() { return _LED_signal_RAW; }; |
| 200 | + |
| 201 | + uint16_t zeroPoint() { return _zeroPoint; }; |
| 202 | + uint16_t tempFilt() { return _temperature_FILT; }; |
| 203 | + uint16_t tempRaw() { return _temperature_RAW; }; |
| 204 | + uint16_t tempSensor() { return _temperature_Sensor; }; |
| 205 | + |
| 206 | + uint16_t CO2() { return _CO2_FILT; }; |
| 207 | + uint16_t CO2Raw() { return _CO2_RAW; }; |
| 208 | + |
| 209 | + uint16_t samples() { return _samples; }; |
| 210 | + uint16_t getPPMFactor() { return _PPM; } |
| 211 | + |
| 212 | + |
| 213 | +private: |
| 214 | + // FIELD ID character |
| 215 | + uint16_t _light; // L |
| 216 | + uint16_t _humidity; // H |
| 217 | + uint16_t _LED_FILT; // D |
| 218 | + uint16_t _LED_RAW; // d |
| 219 | + uint16_t _LED_MAX; // l // el not one |
| 220 | + uint16_t _zeroPoint; // h |
| 221 | + uint16_t _temperature_RAW; // V |
| 222 | + uint16_t _temperature_FILT; // T |
| 223 | + uint16_t _LED_signal_FILT; // o // oo not zero |
| 224 | + uint16_t _LED_signal_RAW; // O // oo not zero |
| 225 | + uint16_t _temperature_Sensor; // v |
| 226 | + uint16_t _CO2_FILT; // Z |
| 227 | + uint16_t _CO2_RAW; // z |
| 228 | + |
| 229 | + // not output fields sec but useful. |
| 230 | + uint16_t _samples; // a |
| 231 | + uint16_t _PPM; // . // point |
| 232 | + |
| 233 | + |
| 234 | + // parsing helpers |
| 235 | + uint32_t _value; |
| 236 | + uint8_t _field; |
| 237 | + |
| 238 | + // returns field char if a field is completed, 0 otherwise. |
| 239 | + uint8_t store(); |
| 240 | +}; |
| 241 | + |
| 242 | + |
168 | 243 | // -- END OF FILE -- |
169 | 244 |
|
0 commit comments