Silvan Li / Mbed OS mbedKart_sp

Dependencies:   Motor

Revision:
0:a9a4c0fd5f8a
diff -r 000000000000 -r a9a4c0fd5f8a rgbSensor.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rgbSensor.cpp	Tue Nov 27 18:01:29 2018 +0000
@@ -0,0 +1,68 @@
+#include "mbed.h"
+#include "rgbSensor.h"
+
+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;
+}