From 0b0bcc80bf689592dcb3236eed3e166d82cd7802 Mon Sep 17 00:00:00 2001 From: Daniel Friesel Date: Sun, 26 Dec 2021 16:05:02 +0100 Subject: add basic MAX44006 driver --- include/driver/max44006.h | 80 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 include/driver/max44006.h (limited to 'include/driver') diff --git a/include/driver/max44006.h b/include/driver/max44006.h new file mode 100644 index 0000000..ae5ad12 --- /dev/null +++ b/include/driver/max44006.h @@ -0,0 +1,80 @@ +/* + * Copyright 2021 Daniel Friesel + * + * SPDX-License-Identifier: BSD-2-Clause + */ +#ifndef MAX44006_H +#define MAX44006_H + +#include + +/** + * Driver for MAX44006 RGB, IR, and Temperature Sensor. + * Does not support interrupts. + */ +class MAX44006 { + public: + + enum registers { + interruptStatusReg = 0x00, + mainConfigReg = 0x01, + ambientConfigReg = 0x02, + }; + + enum interruptStatus { + AMBINTS = 0b00000001, + PWRON = 0b00000010, + SHDN = 0b00001000, + RESET = 0b00010000, + }; + + enum mainConfig { + AMBINTE = 0b00000001, + AMBSEL_00 = 0b00000000, + AMBSEL_01 = 0b00000100, + AMBSEL_10 = 0b00001000, + AMBSEL_11 = 0b00001100, + MODE_00 = 0b00000000, + MODE_01 = 0b00010000, + MODE_10 = 0b00100000, + }; + + enum ambientConfig { + AMBPGA_00 = 0b00000000, + AMBPGA_01 = 0b00000001, + AMBPGA_10 = 0b00000010, + AMBPGA_11 = 0b00000011, + AMBTIM_000 = 0b00000000, + AMBTIM_001 = 0b00000100, + AMBTIM_010 = 0b00001000, + AMBTIM_011 = 0b00001100, + AMBTIM_100 = 0b00010000, + TEMPEN = 0b00100000, + COMPPEN = 0b01000000, + TRIm = 0b10000000, + }; + + private: + MAX44006(const MAX44006 ©); + unsigned char const address; + unsigned char txbuf[2]; + unsigned char rxbuf[10]; + + unsigned char ambtim; + unsigned char ambpga; + + uint16_t clear, red, green, blue, ir; + + public: + + MAX44006(unsigned char const addr = 0x45) : address(addr) {} + + uint8_t init(); + + uint16_t getTemperature(); + bool getLight(float *red, float *green, float *blue, float *clear, float *ir); +}; + +extern MAX44006 max44006; + +#endif -- cgit v1.2.3