
single player mbedKart
(notes)
rgbSensor.h@2:b57d7156830c, 2018-12-09 (annotated)
- 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?
User | Revision | Line number | New 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 | } |