diff --git a/src/grove/grove.cxx b/src/grove/grove.cxx index 72be7072..4cb211f2 100644 --- a/src/grove/grove.cxx +++ b/src/grove/grove.cxx @@ -88,3 +88,30 @@ float GroveTemp::raw_value() { return (float) maa_aio_read_u16(m_aio); } + +//// GroveLight //// + +GroveLight::GroveLight(unsigned int pin) +{ + maa_init(); + m_aio = maa_aio_init(pin); + m_name = "Light Sensor"; +} + +GroveLight::~GroveLight() +{ + maa_aio_close(m_aio); +} + +int GroveLight::value () +{ + // rough conversion to Lux + int a = maa_aio_read_u16(m_aio); + a = 10000/(((1023-a)*10/a)*15)^(4/3); + return a; +} + +float GroveLight::raw_value() +{ + return (float) maa_aio_read_u16(m_aio); +} diff --git a/src/grove/grove.h b/src/grove/grove.h index d573787b..2a2a103e 100644 --- a/src/grove/grove.h +++ b/src/grove/grove.h @@ -61,4 +61,14 @@ class GroveTemp: public Grove { maa_aio_context* m_aio; }; +class GroveLight: public Grove { + public: + GroveLight(unsigned int pin); + ~GroveLight(); + float raw_value(); + int value(); + private: + maa_aio_context* m_aio; +}; + }