Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
rgbSensor.h
00001 //Class to interface with the RGB color sensor over I2C 00002 class rgbSensor 00003 { 00004 protected: 00005 I2C _i2c; 00006 DigitalOut _led; 00007 int sensor_addr; 00008 int value_C; 00009 int value_R; 00010 int value_G; 00011 int value_B; 00012 public: 00013 rgbSensor(PinName,PinName,PinName); 00014 void update(); 00015 int get_C(); 00016 int get_R(); 00017 int get_G(); 00018 int get_B(); 00019 }; 00020 00021 rgbSensor::rgbSensor(PinName sda, PinName scl, PinName led) : 00022 _i2c(sda, scl), _led(led){ 00023 value_R = 0; 00024 value_G = 0; 00025 value_B = 0; 00026 sensor_addr = 41 << 1; 00027 00028 _i2c.frequency(200000); 00029 00030 char id_regval[1] = {146}; 00031 char data[1] = {0}; 00032 _i2c.write(sensor_addr,id_regval,1, true); 00033 _i2c.read(sensor_addr,data,1,false); 00034 00035 char timing_register[2] = {129,0}; 00036 _i2c.write(sensor_addr,timing_register,2,false); 00037 00038 char control_register[2] = {143,0}; 00039 _i2c.write(sensor_addr,control_register,2,false); 00040 00041 char enable_register[2] = {128,3}; 00042 _i2c.write(sensor_addr,enable_register,2,false); 00043 00044 _led = 1; 00045 } 00046 00047 void rgbSensor::update() 00048 { 00049 char clear_reg[1] = {148}; 00050 char clear_data[2] = {0,0}; 00051 _i2c.write(sensor_addr,clear_reg,1, true); 00052 _i2c.read(sensor_addr,clear_data,2, false); 00053 00054 value_C = ((int)clear_data[1] << 8) | clear_data[0]; 00055 00056 char red_reg[1] = {150}; 00057 char red_data[2] = {0,0}; 00058 _i2c.write(sensor_addr,red_reg,1, true); 00059 _i2c.read(sensor_addr,red_data,2, false); 00060 00061 value_R = ((int)red_data[1] << 8) | red_data[0]; 00062 00063 char green_reg[1] = {152}; 00064 char green_data[2] = {0,0}; 00065 _i2c.write(sensor_addr,green_reg,1, true); 00066 _i2c.read(sensor_addr,green_data,2, false); 00067 00068 value_G = ((int)green_data[1] << 8) | green_data[0]; 00069 00070 char blue_reg[1] = {154}; 00071 char blue_data[2] = {0,0}; 00072 _i2c.write(sensor_addr,blue_reg,1, true); 00073 _i2c.read(sensor_addr,blue_data,2, false); 00074 00075 value_B = ((int)blue_data[1] << 8) | blue_data[0]; 00076 } 00077 00078 int rgbSensor::get_C() 00079 { 00080 return value_C; 00081 } 00082 00083 int rgbSensor::get_R() 00084 { 00085 return value_R; 00086 } 00087 00088 int rgbSensor::get_G() 00089 { 00090 return value_G; 00091 } 00092 00093 int rgbSensor::get_B() 00094 { 00095 return value_B; 00096 }
Generated on Fri Aug 12 2022 03:25:54 by
1.7.2