single player mbedKart

Dependencies:   Motor

(notes)

Committer:
DerekW2015
Date:
Sun Dec 09 21:40:31 2018 +0000
Revision:
2:b57d7156830c
Parent:
0:a9a4c0fd5f8a
Child:
20:bd09cc476987
Moved rgbsensor.cpp into rgbsensor.h to match the behavior of rgbled.h. Now to mix and match libraries.

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;
DerekW2015 0:a9a4c0fd5f8a 6 int sensor_addr;
DerekW2015 0:a9a4c0fd5f8a 7 int value_C;
DerekW2015 0:a9a4c0fd5f8a 8 int value_R;
DerekW2015 0:a9a4c0fd5f8a 9 int value_G;
DerekW2015 0:a9a4c0fd5f8a 10 int value_B;
DerekW2015 0:a9a4c0fd5f8a 11 public:
DerekW2015 0:a9a4c0fd5f8a 12 rgbSensor(PinName,PinName);
DerekW2015 0:a9a4c0fd5f8a 13 void update();
DerekW2015 0:a9a4c0fd5f8a 14 int get_C();
DerekW2015 0:a9a4c0fd5f8a 15 int get_R();
DerekW2015 0:a9a4c0fd5f8a 16 int get_G();
DerekW2015 0:a9a4c0fd5f8a 17 int get_B();
DerekW2015 0:a9a4c0fd5f8a 18 };
DerekW2015 2:b57d7156830c 19
DerekW2015 2:b57d7156830c 20 rgbSensor::rgbSensor(PinName sda, PinName scl) :
DerekW2015 2:b57d7156830c 21 _i2c(sda, scl){
DerekW2015 2:b57d7156830c 22 value_R = 0;
DerekW2015 2:b57d7156830c 23 value_G = 0;
DerekW2015 2:b57d7156830c 24 value_B = 0;
DerekW2015 2:b57d7156830c 25 sensor_addr = 41 << 1;
DerekW2015 2:b57d7156830c 26
DerekW2015 2:b57d7156830c 27 _i2c.frequency(200000);
DerekW2015 0:a9a4c0fd5f8a 28
DerekW2015 2:b57d7156830c 29 char id_regval[1] = {146};
DerekW2015 2:b57d7156830c 30 char data[1] = {0};
DerekW2015 2:b57d7156830c 31 _i2c.write(sensor_addr,id_regval,1, true);
DerekW2015 2:b57d7156830c 32 _i2c.read(sensor_addr,data,1,false);
DerekW2015 2:b57d7156830c 33 }
DerekW2015 2:b57d7156830c 34
DerekW2015 2:b57d7156830c 35 void rgbSensor::update()
DerekW2015 2:b57d7156830c 36 {
DerekW2015 2:b57d7156830c 37 char clear_reg[1] = {148};
DerekW2015 2:b57d7156830c 38 char clear_data[2] = {0,0};
DerekW2015 2:b57d7156830c 39 _i2c.write(sensor_addr,clear_reg,1, true);
DerekW2015 2:b57d7156830c 40 _i2c.read(sensor_addr,clear_data,2, false);
DerekW2015 2:b57d7156830c 41
DerekW2015 2:b57d7156830c 42 value_C = ((int)clear_data[1] << 8) | clear_data[0];
DerekW2015 2:b57d7156830c 43
DerekW2015 2:b57d7156830c 44 char red_reg[1] = {150};
DerekW2015 2:b57d7156830c 45 char red_data[2] = {0,0};
DerekW2015 2:b57d7156830c 46 _i2c.write(sensor_addr,red_reg,1, true);
DerekW2015 2:b57d7156830c 47 _i2c.read(sensor_addr,red_data,2, false);
DerekW2015 2:b57d7156830c 48
DerekW2015 2:b57d7156830c 49 value_R = ((int)red_data[1] << 8) | red_data[0];
DerekW2015 2:b57d7156830c 50
DerekW2015 2:b57d7156830c 51 char green_reg[1] = {152};
DerekW2015 2:b57d7156830c 52 char green_data[2] = {0,0};
DerekW2015 2:b57d7156830c 53 _i2c.write(sensor_addr,green_reg,1, true);
DerekW2015 2:b57d7156830c 54 _i2c.read(sensor_addr,green_data,2, false);
DerekW2015 2:b57d7156830c 55
DerekW2015 2:b57d7156830c 56 value_G = ((int)green_data[1] << 8) | green_data[0];
DerekW2015 2:b57d7156830c 57
DerekW2015 2:b57d7156830c 58 char blue_reg[1] = {154};
DerekW2015 2:b57d7156830c 59 char blue_data[2] = {0,0};
DerekW2015 2:b57d7156830c 60 _i2c.write(sensor_addr,blue_reg,1, true);
DerekW2015 2:b57d7156830c 61 _i2c.read(sensor_addr,blue_data,2, false);
DerekW2015 2:b57d7156830c 62
DerekW2015 2:b57d7156830c 63 value_B = ((int)blue_data[1] << 8) | blue_data[0];
DerekW2015 2:b57d7156830c 64 }
DerekW2015 2:b57d7156830c 65
DerekW2015 2:b57d7156830c 66 int rgbSensor::get_C()
DerekW2015 2:b57d7156830c 67 {
DerekW2015 2:b57d7156830c 68 return value_C;
DerekW2015 2:b57d7156830c 69 }
DerekW2015 2:b57d7156830c 70
DerekW2015 2:b57d7156830c 71 int rgbSensor::get_R()
DerekW2015 2:b57d7156830c 72 {
DerekW2015 2:b57d7156830c 73 return value_R;
DerekW2015 2:b57d7156830c 74 }
DerekW2015 2:b57d7156830c 75
DerekW2015 2:b57d7156830c 76 int rgbSensor::get_G()
DerekW2015 2:b57d7156830c 77 {
DerekW2015 2:b57d7156830c 78 return value_G;
DerekW2015 2:b57d7156830c 79 }
DerekW2015 2:b57d7156830c 80
DerekW2015 2:b57d7156830c 81 int rgbSensor::get_B()
DerekW2015 2:b57d7156830c 82 {
DerekW2015 2:b57d7156830c 83 return value_B;
DerekW2015 2:b57d7156830c 84 }