Silvan Li
/
mbedKart_sp
(notes)
Diff: rgbSensor.h
- Revision:
- 2:b57d7156830c
- Parent:
- 0:a9a4c0fd5f8a
- Child:
- 20:bd09cc476987
--- a/rgbSensor.h Tue Nov 27 18:08:29 2018 +0000 +++ b/rgbSensor.h Sun Dec 09 21:40:31 2018 +0000 @@ -1,3 +1,4 @@ +//Class to interface with the RGB color sensor over I2C class rgbSensor { protected: @@ -15,4 +16,69 @@ int get_G(); int get_B(); }; + +rgbSensor::rgbSensor(PinName sda, PinName scl) : + _i2c(sda, scl){ + value_R = 0; + value_G = 0; + value_B = 0; + sensor_addr = 41 << 1; + + _i2c.frequency(200000); + char id_regval[1] = {146}; + char data[1] = {0}; + _i2c.write(sensor_addr,id_regval,1, true); + _i2c.read(sensor_addr,data,1,false); +} + +void rgbSensor::update() +{ + char clear_reg[1] = {148}; + char clear_data[2] = {0,0}; + _i2c.write(sensor_addr,clear_reg,1, true); + _i2c.read(sensor_addr,clear_data,2, false); + + value_C = ((int)clear_data[1] << 8) | clear_data[0]; + + char red_reg[1] = {150}; + char red_data[2] = {0,0}; + _i2c.write(sensor_addr,red_reg,1, true); + _i2c.read(sensor_addr,red_data,2, false); + + value_R = ((int)red_data[1] << 8) | red_data[0]; + + char green_reg[1] = {152}; + char green_data[2] = {0,0}; + _i2c.write(sensor_addr,green_reg,1, true); + _i2c.read(sensor_addr,green_data,2, false); + + value_G = ((int)green_data[1] << 8) | green_data[0]; + + char blue_reg[1] = {154}; + char blue_data[2] = {0,0}; + _i2c.write(sensor_addr,blue_reg,1, true); + _i2c.read(sensor_addr,blue_data,2, false); + + value_B = ((int)blue_data[1] << 8) | blue_data[0]; +} + +int rgbSensor::get_C() +{ + return value_C; +} + +int rgbSensor::get_R() +{ + return value_R; +} + +int rgbSensor::get_G() +{ + return value_G; +} + +int rgbSensor::get_B() +{ + return value_B; +} \ No newline at end of file