
single player mbedKart
(notes)
rgbSensor.h
- Committer:
- DerekW2015
- Date:
- 2018-12-09
- Revision:
- 2:b57d7156830c
- Parent:
- 0:a9a4c0fd5f8a
- Child:
- 20:bd09cc476987
File content as of revision 2:b57d7156830c:
//Class to interface with the RGB color sensor over I2C class rgbSensor { protected: I2C _i2c; int sensor_addr; int value_C; int value_R; int value_G; int value_B; public: rgbSensor(PinName,PinName); void update(); int get_C(); int get_R(); 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; }