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.
main.cpp
- Committer:
- guilhemMBED
- Date:
- 2019-12-20
- Revision:
- 7:278339a9eeba
- Parent:
- 6:9aeb18bebe85
- Child:
- 8:190a86f06a07
File content as of revision 7:278339a9eeba:
#include "mbed.h" #include "glibr.h" // Adress #define adress_color_sensor 0x4B0 #define data_adress_general 0xFE #define data_adress_sensor 0x00 #define data_adress_return 0xFF // setup commands #define setup_LED 0x10 #define setup_PROXIMITY_THRESHOLD 0x11 // Requests #define send_RGB_value 0x00 #define send_RED 0x01 #define send_GREEN 0x02 #define send_BLUE 0x03 #define send_PROXIMITY 0x04 #define send_COLOR 0x08 Serial USB_link(USBTX, USBRX); // USB initialization //PwmOut LED(A2); // LED initialization glibr capt1(D4,D5); // I²C initialization : D4 = SDA ; D5 = SCL CAN can1(PA_11, PA_12); // CAN initialization : PA_11 = CANMessage msg; bool initialization(void) { // USB initialization USB_link.baud(115200); USB_link.printf("Debut prog\r\n"); // CAN init can1.frequency(1000000); // LED initialization // LED.period_ms(10); // LED.write(0.5); // Sensor initalization if( (capt1.ginit()) && (capt1.enableLightSensor(true)) && (capt1.enableProximitySensor(true)) ) { return true; } else { return false; } } int main (void) { uint16_t r,g,b ; uint8_t a ; char proximity_tresh = 200, color, state, message[8]; message[0] = data_adress_return; message[1] = data_adress_sensor; if (initialization()) USB_link.printf("Initialization complete \r\n"); else USB_link.printf("Error during initialization\r\n"); while(1) { capt1.readRedLight(r); capt1.readGreenLight(g); capt1.readBlueLight(b); capt1.readProximity(a); if (a<proximity_tresh) { color = 0 ; // 0 means no object being measured } else if (r > g ) { color = 1 ; // 1 means red } else { color = 2 ; // 2 means green } //display of red, green and proximty variables //USB_link.printf("r: %hu g : %hu prox : %hu \r\n ",r,g,a); //diplay of color value //USB_link.printf("color : %hu \r\n", color); // reading of the CAN bus if (can1.read(msg)) { //verification of the ID ( 0x4B0 ) and soft ID if ((msg.id==adress_color_sensor)&((msg.data[0]==data_adress_general)|(msg.data[0]==data_adress_sensor))) { state=msg.data[1]; switch (state) { case send_RGB_value: // send_RGB_value message[2]= (char)((r & 0xFF00)>>8); message[3]= (char) (r & 0x00FF); message[4]= (char)((g & 0xFF00)>>8); message[5]= (char) (g & 0x00FF); message[6]= (char)a ; can1.write(CANMessage(adress_color_sensor,message,7)); break; case send_RED: message[2]= (char)((r & 0xFF00)>>8); message[3]= (char) (r & 0x00FF); can1.write(CANMessage(adress_color_sensor,message,4)); break; case send_GREEN: message[2]= (char)((g & 0xFF00)>>8); message[3]= (char) (g & 0x00FF); can1.write(CANMessage(adress_color_sensor,message,4)); break; case send_BLUE: message[2]= (char)((b & 0xFF00)>>8); message[3]= (char) (b & 0x00FF); can1.write(CANMessage(adress_color_sensor,message,4)); break; case send_PROXIMITY: message[2] = a ; can1.write(CANMessage(adress_color_sensor,message,3)); break; case send_COLOR: message[2]=color; can1.write(CANMessage(adress_color_sensor,message,3)); break; case setup_LED: //LED.write(msg.data[2]/258); break; case setup_PROXIMITY_THRESHOLD : proximity_tresh = msg.data[2]; break; } } } } }