single player mbedKart

Dependencies:   Motor

(notes)

Committer:
sli425
Date:
Tue Dec 11 02:27:20 2018 +0000
Revision:
20:bd09cc476987
Parent:
2:b57d7156830c
Fixed the rgbSensor class (added DigitalOut led and other missing initialization things)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DerekW2015 2:b57d7156830c 1 //Class to interface with the RGB color sensor over I2C
DerekW2015 0:a9a4c0fd5f8a 2 class rgbSensor
DerekW2015 0:a9a4c0fd5f8a 3 {
DerekW2015 0:a9a4c0fd5f8a 4 protected:
DerekW2015 0:a9a4c0fd5f8a 5 I2C _i2c;
sli425 20:bd09cc476987 6 DigitalOut _led;
DerekW2015 0:a9a4c0fd5f8a 7 int sensor_addr;
DerekW2015 0:a9a4c0fd5f8a 8 int value_C;
DerekW2015 0:a9a4c0fd5f8a 9 int value_R;
DerekW2015 0:a9a4c0fd5f8a 10 int value_G;
DerekW2015 0:a9a4c0fd5f8a 11 int value_B;
DerekW2015 0:a9a4c0fd5f8a 12 public:
sli425 20:bd09cc476987 13 rgbSensor(PinName,PinName,PinName);
DerekW2015 0:a9a4c0fd5f8a 14 void update();
DerekW2015 0:a9a4c0fd5f8a 15 int get_C();
DerekW2015 0:a9a4c0fd5f8a 16 int get_R();
DerekW2015 0:a9a4c0fd5f8a 17 int get_G();
DerekW2015 0:a9a4c0fd5f8a 18 int get_B();
DerekW2015 0:a9a4c0fd5f8a 19 };
DerekW2015 2:b57d7156830c 20
sli425 20:bd09cc476987 21 rgbSensor::rgbSensor(PinName sda, PinName scl, PinName led) :
sli425 20:bd09cc476987 22 _i2c(sda, scl), _led(led){
DerekW2015 2:b57d7156830c 23 value_R = 0;
DerekW2015 2:b57d7156830c 24 value_G = 0;
DerekW2015 2:b57d7156830c 25 value_B = 0;
DerekW2015 2:b57d7156830c 26 sensor_addr = 41 << 1;
DerekW2015 2:b57d7156830c 27
DerekW2015 2:b57d7156830c 28 _i2c.frequency(200000);
DerekW2015 0:a9a4c0fd5f8a 29
DerekW2015 2:b57d7156830c 30 char id_regval[1] = {146};
DerekW2015 2:b57d7156830c 31 char data[1] = {0};
DerekW2015 2:b57d7156830c 32 _i2c.write(sensor_addr,id_regval,1, true);
DerekW2015 2:b57d7156830c 33 _i2c.read(sensor_addr,data,1,false);
sli425 20:bd09cc476987 34
sli425 20:bd09cc476987 35 char timing_register[2] = {129,0};
sli425 20:bd09cc476987 36 _i2c.write(sensor_addr,timing_register,2,false);
sli425 20:bd09cc476987 37
sli425 20:bd09cc476987 38 char control_register[2] = {143,0};
sli425 20:bd09cc476987 39 _i2c.write(sensor_addr,control_register,2,false);
sli425 20:bd09cc476987 40
sli425 20:bd09cc476987 41 char enable_register[2] = {128,3};
sli425 20:bd09cc476987 42 _i2c.write(sensor_addr,enable_register,2,false);
sli425 20:bd09cc476987 43
sli425 20:bd09cc476987 44 _led = 1;
DerekW2015 2:b57d7156830c 45 }
DerekW2015 2:b57d7156830c 46
DerekW2015 2:b57d7156830c 47 void rgbSensor::update()
DerekW2015 2:b57d7156830c 48 {
DerekW2015 2:b57d7156830c 49 char clear_reg[1] = {148};
DerekW2015 2:b57d7156830c 50 char clear_data[2] = {0,0};
DerekW2015 2:b57d7156830c 51 _i2c.write(sensor_addr,clear_reg,1, true);
DerekW2015 2:b57d7156830c 52 _i2c.read(sensor_addr,clear_data,2, false);
DerekW2015 2:b57d7156830c 53
DerekW2015 2:b57d7156830c 54 value_C = ((int)clear_data[1] << 8) | clear_data[0];
DerekW2015 2:b57d7156830c 55
DerekW2015 2:b57d7156830c 56 char red_reg[1] = {150};
DerekW2015 2:b57d7156830c 57 char red_data[2] = {0,0};
DerekW2015 2:b57d7156830c 58 _i2c.write(sensor_addr,red_reg,1, true);
DerekW2015 2:b57d7156830c 59 _i2c.read(sensor_addr,red_data,2, false);
DerekW2015 2:b57d7156830c 60
DerekW2015 2:b57d7156830c 61 value_R = ((int)red_data[1] << 8) | red_data[0];
DerekW2015 2:b57d7156830c 62
DerekW2015 2:b57d7156830c 63 char green_reg[1] = {152};
DerekW2015 2:b57d7156830c 64 char green_data[2] = {0,0};
DerekW2015 2:b57d7156830c 65 _i2c.write(sensor_addr,green_reg,1, true);
DerekW2015 2:b57d7156830c 66 _i2c.read(sensor_addr,green_data,2, false);
DerekW2015 2:b57d7156830c 67
DerekW2015 2:b57d7156830c 68 value_G = ((int)green_data[1] << 8) | green_data[0];
DerekW2015 2:b57d7156830c 69
DerekW2015 2:b57d7156830c 70 char blue_reg[1] = {154};
DerekW2015 2:b57d7156830c 71 char blue_data[2] = {0,0};
DerekW2015 2:b57d7156830c 72 _i2c.write(sensor_addr,blue_reg,1, true);
DerekW2015 2:b57d7156830c 73 _i2c.read(sensor_addr,blue_data,2, false);
DerekW2015 2:b57d7156830c 74
DerekW2015 2:b57d7156830c 75 value_B = ((int)blue_data[1] << 8) | blue_data[0];
DerekW2015 2:b57d7156830c 76 }
DerekW2015 2:b57d7156830c 77
DerekW2015 2:b57d7156830c 78 int rgbSensor::get_C()
DerekW2015 2:b57d7156830c 79 {
DerekW2015 2:b57d7156830c 80 return value_C;
DerekW2015 2:b57d7156830c 81 }
DerekW2015 2:b57d7156830c 82
DerekW2015 2:b57d7156830c 83 int rgbSensor::get_R()
DerekW2015 2:b57d7156830c 84 {
DerekW2015 2:b57d7156830c 85 return value_R;
DerekW2015 2:b57d7156830c 86 }
DerekW2015 2:b57d7156830c 87
DerekW2015 2:b57d7156830c 88 int rgbSensor::get_G()
DerekW2015 2:b57d7156830c 89 {
DerekW2015 2:b57d7156830c 90 return value_G;
DerekW2015 2:b57d7156830c 91 }
DerekW2015 2:b57d7156830c 92
DerekW2015 2:b57d7156830c 93 int rgbSensor::get_B()
DerekW2015 2:b57d7156830c 94 {
DerekW2015 2:b57d7156830c 95 return value_B;
DerekW2015 2:b57d7156830c 96 }