Dependencies:   Motor

(notes)

Revision:
2:b57d7156830c
Parent:
0:a9a4c0fd5f8a
Child:
20:bd09cc476987
--- a/rgbSensor.h	Tue Nov 27 18:08:29 2018 +0000
+++ b/rgbSensor.h	Sun Dec 09 21:40:31 2018 +0000
@@ -1,3 +1,4 @@
+//Class to interface with the RGB color sensor over I2C
 class rgbSensor
 {
 protected:
@@ -15,4 +16,69 @@
     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;
+}
\ No newline at end of file