Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of TCS3472_I2C by
Revision 1:70d7d9f1af01, committed 2014-03-19
- Comitter:
- karlmaxwell67
- Date:
- Wed Mar 19 17:23:11 2014 +0000
- Parent:
- 0:453a43c8bf2b
- Child:
- 2:38d5187a4e7b
- Commit message:
- Can successfully read data from sensor. No ATIME functionality present.
Changed in this revision
| TCS3472_I2C.cpp | Show annotated file Show diff for this revision Revisions of this file |
| TCS3472_I2C.h | Show annotated file Show diff for this revision Revisions of this file |
--- a/TCS3472_I2C.cpp Tue Mar 18 09:45:04 2014 +0000
+++ b/TCS3472_I2C.cpp Wed Mar 19 17:23:11 2014 +0000
@@ -1,5 +1,77 @@
-#include TCS3472_I2C.h
+#include "TCS3472_I2C.h"
+
+TCS3472_I2C::TCS3472_I2C( PinName sda, PinName scl ) : i2c_( sda, scl ){
+ i2c_.frequency(400000);
+ enableRGBC();
+}
+
+int TCS3472_I2C::writeSingleRegister( char address, char data ){
+ char tx[2] = { address | 160, data }; //0d160 = 0b10100000
+ int ack = i2c_.write( SLAVE_ADDRESS << 1 , tx, 2 );
+ return ack;
+}
+
+char TCS3472_I2C::readSingleRegister( char address ){
+ char output = 255;
+ char command = address | 160; //0d160 = 0b10100000
+ i2c_.write( SLAVE_ADDRESS << 1, &command, 1, true );
+ i2c_.read( SLAVE_ADDRESS << 1, &output, 1 );
+ return output;
+}
+
+int TCS3472_I2C::readMultipleRegisters( char address, char* output, int quantity ){
+ char command = address | 160; //0d160 = 0b10100000
+ i2c_.write( SLAVE_ADDRESS << 1, &command, 1, true );
+ int ack = i2c_.read( SLAVE_ADDRESS << 1, output, quantity );
+ return ack;
+}
+
+int TCS3472_I2C::enableRGBC(){
+ int ack = writeSingleRegister( ENABLE_REGISTER, 3 );
+ return ack;
+}
+
+char TCS3472_I2C::readEnableRegister(){
+ return readSingleRegister( ENABLE_REGISTER );
+}
-TCS3472_I2C::TCS3472_I2C( PinName sda, PinName scl ) : i2c_( sda, scl ){
+int TCS3472_I2C::getAllColours( int* readings ){
+ char buffer[8] = { 0 };
+
+ readMultipleRegisters( CDATA, buffer, 8 );
+
+ readings[0] = (int)buffer[1] << 8 | (int)buffer[0];
+ readings[1] = (int)buffer[3] << 8 | (int)buffer[2];
+ readings[2] = (int)buffer[5] << 8 | (int)buffer[4];
+ readings[3] = (int)buffer[7] << 8 | (int)buffer[6];
+ return 0;
+}
+
+int TCS3472_I2C::getClearData(){
+ char buffer[2] = { 0 };
+ readMultipleRegisters( CDATA, buffer, 2 );
+ int reading = (int)buffer[1] << 8 | (int)buffer[0];
+ return reading;
+}
+
+int TCS3472_I2C::getRedData(){
+ char buffer[2] = { 0 };
+ readMultipleRegisters( RDATA, buffer, 2 );
+ int reading = (int)buffer[1] << 8 | (int)buffer[0];
+ return reading;
+}
+
+int TCS3472_I2C::getGreenData(){
+ char buffer[2] = { 0 };
+ readMultipleRegisters( GDATA, buffer, 2 );
+ int reading = (int)buffer[1] << 8 | (int)buffer[0];
+ return reading;
+}
+
+int TCS3472_I2C::getBlueData(){
+ char buffer[2] = { 0 };
+ readMultipleRegisters( BDATA, buffer, 2 );
+ int reading = (int)buffer[1] << 8 | (int)buffer[0];
+ return reading;
}
\ No newline at end of file
--- a/TCS3472_I2C.h Tue Mar 18 09:45:04 2014 +0000
+++ b/TCS3472_I2C.h Wed Mar 19 17:23:11 2014 +0000
@@ -2,21 +2,33 @@
#define TCS3472_I2C_H
#include "mbed.h"
+//Defines
+#define SLAVE_ADDRESS 0x29
+#define ENABLE_REGISTER 0x00
+#define CDATA 0x14
+#define RDATA 0x16
+#define GDATA 0x18
+#define BDATA 0x1A
+
class TCS3472_I2C {
public:
TCS3472_I2C( PinName sda, PinName scl );
-
-
-
-
+
+ int getAllColours( int* readings );
+ int getClearData();
+ int getRedData();
+ int getGreenData();
+ int getBlueData();
+
+ char readEnableRegister();
private:
I2C i2c_;
-
-
-
-
-
+
+ int enableRGBC();
+ int writeSingleRegister( char address, char data );
+ char readSingleRegister( char address );
+ int readMultipleRegisters( char address, char* output, int quantity );
};
-#endif TCS3472_I2C_H
\ No newline at end of file
+#endif
\ No newline at end of file
