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.
Diff: main.cpp
- Revision:
- 7:278339a9eeba
- Parent:
- 6:9aeb18bebe85
- Child:
- 8:190a86f06a07
--- a/main.cpp Fri Dec 13 16:06:03 2019 +0000 +++ b/main.cpp Fri Dec 20 15:50:46 2019 +0000 @@ -1,16 +1,36 @@ #include "mbed.h" #include "glibr.h" -Serial USB_link(USBTX, USBRX); // USB initialization +// 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 -//PwmOut LED(A2); // LED initialization +// 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 +CAN can1(PA_11, PA_12); // CAN initialization : PA_11 = CANMessage msg; + + bool initialization(void) { // USB initialization @@ -24,7 +44,7 @@ // LED.period_ms(10); // LED.write(0.5); - // sensor initalization + // Sensor initalization if( (capt1.ginit()) && (capt1.enableLightSensor(true)) && (capt1.enableProximitySensor(true)) ) { return true; } else { @@ -34,10 +54,11 @@ int main (void) { - uint16_t r,g,b; + uint16_t r,g,b ; uint8_t a ; - char color; - + 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"); @@ -47,26 +68,72 @@ capt1.readBlueLight(b); capt1.readProximity(a); - //display of red, green and proximty variables - //USB_link.printf("r: %hu g : %hu prox : %hu \r\n ",r,g,a); + - if (a<200) { + 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); - - // read of the CAN - if (can1.read(msg)) { - // verification of the ID ( 0x4B0 ) - if (msg.id==1200) { - can1.write(CANMessage(1200,&color,1)); // writing of the color value on the CAN bus + + // 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; + } } } - } - } \ No newline at end of file