![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
3rd year group project. Electronic and Electrical Engineering. Heriot-Watt University. This is the code for the mbed for the Automatic Little Object Organiser (ALOO).
Dependencies: MCP23017 TCS3472_I2C WattBob_TextLCD mbed
Diff: main.cpp
- Revision:
- 1:92a2a5ef65a8
- Parent:
- 0:fe5cb0a8fc5a
- Child:
- 2:7a55cb10259f
--- a/main.cpp Sun Oct 18 16:34:27 2015 +0000 +++ b/main.cpp Thu Oct 29 15:19:24 2015 +0000 @@ -3,6 +3,7 @@ #include "TCS3472_I2C.h" #include "MCP23017.h" #include <string> +#include <time.h> #define BACKLIGHT_ON(INTERFACE) INTERFACE->write_bit(1, 4); #define BACKLIGHT_OFF(INTERFACE) INTERFACE->write_bit(0, 4); @@ -18,111 +19,15 @@ MCP23017 *i2cport; WattBob_TextLCD *lcd; -TCS3472_I2C rgb_sensor(p9, p10); + TCS3472_I2C rgb_sensor(p28, p27); + Serial pc(USBTX, USBRX); int main(){ i2cport = new MCP23017(p9, p10, 0x40); lcd = new WattBob_TextLCD(i2cport); BACKLIGHT_ON(i2cport); int rgb_results[4]; - - CLEAR_LCD(); - LCDFL(); - PRINT_LCD("Colour Sensor"); - LCDSL(); - PRINT_LCD("Stay in school!"); - - wait(2.0); - CLEAR_LCD(); - - i2cport->config(0x0F00, 0x0F00, 0x0F00); - - rgb_sensor.enablePowerAndRGBC(); - rgb_sensor.setIntegrationTime(100); - i2cport->write_bit(1, 15); - - myled = 1; - - Serial pc(USBTX, USBRX); + pc.baud(19200); + srand((unsigned)time(NULL)); - while (1){ - rgb_sensor.getAllColors(rgb_results); - CLEAR_LCD(); - - LCDFL(); - lcd->printf("R:%d, G:%d", rgb_results[0], rgb_results[1]); - LCDSL(); - lcd->printf("B:%d, A:%d", rgb_results[2], rgb_results[3]); - - if (i2cport->read_bit(8)){ - rgb_sensor.setIntegrationTime(50); - - CLEAR_LCD(); - CLEAR_LEDS(); - LCDFL(); - - PRINT_LCD("I-Time:50"); - pc.printf("Integration Time set to %dms\r\n", 50); - pc.printf("R,G,B,A,IT\r\n"); - - i2cport->write_bit(1, 12); - wait(1.0); - } else if (i2cport->read_bit(9)){ - rgb_sensor.setIntegrationTime(200); - - CLEAR_LCD(); - CLEAR_LEDS(); - LCDFL(); - - PRINT_LCD("I-Time:200"); - pc.printf("Integration Time set to %dms\r\n", 200); - pc.printf("R,G,B,A,IT\r\n"); - - i2cport->write_bit(1, 13); - wait(1); - } else if (i2cport->read_bit(11)){ - rgb_sensor.setIntegrationTime(100); - - CLEAR_LCD(); - CLEAR_LEDS(); - LCDFL(); - - PRINT_LCD("I-Time:100"); - pc.printf("Integration Time set to %dms\r\n", 100); - pc.printf("R,G,B,A,IT\r\n"); - - i2cport->write_bit(1, 15); - wait(1.0); - } else if (i2cport->read_bit(10)){ - char bufferIT[6]; - float fBufferIT; - char *ITQ = "I"; - - LCDFL(); - PRINT_LCD("Reading stdin"); - LCDSL(); - PRINT_LCD("\'I\' for I-Time"); - pc.printf("Reading stdin\r\n"); - pc.scanf("%5s", bufferIT); - - if (bufferIT[0] == *ITQ){ - pc.printf("I-Time:%d\r\n", rgb_sensor.readIntegrationTime()); - }else{ - CLEAR_LEDS(); - - fBufferIT = atof(bufferIT); - rgb_sensor.setIntegrationTime(fBufferIT); - - pc.printf("Integration Time set to %fms\r\n", fBufferIT); - lcd->printf("I-Time:%d\r\n", fBufferIT); - pc.printf("R,G,B,A,IT\r\n"); - - i2cport->write_bit(1, 14); - } - - } - //pc.printf("R:%d, G:%d, B:%d, A:%d. Integration Time:%d\r\n", rgb_results[0], rgb_results[1], rgb_results[2], rgb_results[3], rgb_sensor.readIntegrationTime()); - pc.printf("%d,%d,%d,%d,%d\r\n", rgb_results[0], rgb_results[1], rgb_results[2], rgb_results[3], rgb_sensor.readIntegrationTime()); - wait(2.0); - } } \ No newline at end of file