CRAC Team / Mbed 2 deprecated Capt_couleur_CAN

Dependencies:   mbed APDS_9960

Committer:
guilhemMBED
Date:
Fri Dec 20 15:50:46 2019 +0000
Revision:
7:278339a9eeba
Parent:
6:9aeb18bebe85
Child:
8:190a86f06a07
Prog avec plusieurs requests CAN possible

Who changed what in which revision?

UserRevisionLine numberNew contents of line
guilhemMBED 0:eace82fb39de 1 #include "mbed.h"
guilhemMBED 0:eace82fb39de 2 #include "glibr.h"
guilhemMBED 1:7cd9426abb58 3
guilhemMBED 7:278339a9eeba 4 // Adress
guilhemMBED 7:278339a9eeba 5 #define adress_color_sensor 0x4B0
guilhemMBED 7:278339a9eeba 6 #define data_adress_general 0xFE
guilhemMBED 7:278339a9eeba 7 #define data_adress_sensor 0x00
guilhemMBED 7:278339a9eeba 8 #define data_adress_return 0xFF
guilhemMBED 7:278339a9eeba 9
guilhemMBED 7:278339a9eeba 10 // setup commands
guilhemMBED 7:278339a9eeba 11 #define setup_LED 0x10
guilhemMBED 7:278339a9eeba 12 #define setup_PROXIMITY_THRESHOLD 0x11
guilhemMBED 3:f41f244de0b3 13
guilhemMBED 7:278339a9eeba 14 // Requests
guilhemMBED 7:278339a9eeba 15 #define send_RGB_value 0x00
guilhemMBED 7:278339a9eeba 16 #define send_RED 0x01
guilhemMBED 7:278339a9eeba 17 #define send_GREEN 0x02
guilhemMBED 7:278339a9eeba 18 #define send_BLUE 0x03
guilhemMBED 7:278339a9eeba 19 #define send_PROXIMITY 0x04
guilhemMBED 7:278339a9eeba 20 #define send_COLOR 0x08
guilhemMBED 7:278339a9eeba 21
guilhemMBED 7:278339a9eeba 22 Serial USB_link(USBTX, USBRX); // USB initialization
guilhemMBED 7:278339a9eeba 23
guilhemMBED 7:278339a9eeba 24 //PwmOut LED(A2); // LED initialization
guilhemMBED 5:7a63cb7ec666 25
guilhemMBED 3:f41f244de0b3 26 glibr capt1(D4,D5); // I²C initialization : D4 = SDA ; D5 = SCL
guilhemMBED 5:7a63cb7ec666 27
guilhemMBED 7:278339a9eeba 28 CAN can1(PA_11, PA_12); // CAN initialization : PA_11 =
guilhemMBED 6:9aeb18bebe85 29
guilhemMBED 6:9aeb18bebe85 30 CANMessage msg;
guilhemMBED 0:eace82fb39de 31
guilhemMBED 7:278339a9eeba 32
guilhemMBED 7:278339a9eeba 33
guilhemMBED 3:f41f244de0b3 34 bool initialization(void)
guilhemMBED 3:f41f244de0b3 35 {
guilhemMBED 3:f41f244de0b3 36 // USB initialization
guilhemMBED 3:f41f244de0b3 37 USB_link.baud(115200);
guilhemMBED 6:9aeb18bebe85 38 USB_link.printf("Debut prog\r\n");
guilhemMBED 6:9aeb18bebe85 39
guilhemMBED 6:9aeb18bebe85 40 // CAN init
guilhemMBED 6:9aeb18bebe85 41 can1.frequency(1000000);
guilhemMBED 3:f41f244de0b3 42
guilhemMBED 5:7a63cb7ec666 43 // LED initialization
guilhemMBED 6:9aeb18bebe85 44 // LED.period_ms(10);
guilhemMBED 6:9aeb18bebe85 45 // LED.write(0.5);
guilhemMBED 5:7a63cb7ec666 46
guilhemMBED 7:278339a9eeba 47 // Sensor initalization
guilhemMBED 5:7a63cb7ec666 48 if( (capt1.ginit()) && (capt1.enableLightSensor(true)) && (capt1.enableProximitySensor(true)) ) {
guilhemMBED 3:f41f244de0b3 49 return true;
guilhemMBED 3:f41f244de0b3 50 } else {
guilhemMBED 3:f41f244de0b3 51 return false;
guilhemMBED 3:f41f244de0b3 52 }
guilhemMBED 3:f41f244de0b3 53 }
guilhemMBED 0:eace82fb39de 54
guilhemMBED 1:7cd9426abb58 55 int main (void)
guilhemMBED 1:7cd9426abb58 56 {
guilhemMBED 7:278339a9eeba 57 uint16_t r,g,b ;
guilhemMBED 6:9aeb18bebe85 58 uint8_t a ;
guilhemMBED 7:278339a9eeba 59 char proximity_tresh = 200, color, state, message[8];
guilhemMBED 7:278339a9eeba 60 message[0] = data_adress_return;
guilhemMBED 7:278339a9eeba 61 message[1] = data_adress_sensor;
guilhemMBED 5:7a63cb7ec666 62 if (initialization()) USB_link.printf("Initialization complete \r\n");
guilhemMBED 5:7a63cb7ec666 63 else USB_link.printf("Error during initialization\r\n");
guilhemMBED 6:9aeb18bebe85 64
guilhemMBED 0:eace82fb39de 65 while(1) {
guilhemMBED 5:7a63cb7ec666 66 capt1.readRedLight(r);
guilhemMBED 5:7a63cb7ec666 67 capt1.readGreenLight(g);
guilhemMBED 5:7a63cb7ec666 68 capt1.readBlueLight(b);
guilhemMBED 5:7a63cb7ec666 69 capt1.readProximity(a);
guilhemMBED 6:9aeb18bebe85 70
guilhemMBED 7:278339a9eeba 71
guilhemMBED 3:f41f244de0b3 72
guilhemMBED 7:278339a9eeba 73 if (a<proximity_tresh) {
guilhemMBED 5:7a63cb7ec666 74 color = 0 ; // 0 means no object being measured
guilhemMBED 5:7a63cb7ec666 75 } else if (r > g ) {
guilhemMBED 5:7a63cb7ec666 76 color = 1 ; // 1 means red
guilhemMBED 6:9aeb18bebe85 77 } else {
guilhemMBED 5:7a63cb7ec666 78 color = 2 ; // 2 means green
guilhemMBED 5:7a63cb7ec666 79 }
guilhemMBED 7:278339a9eeba 80 //display of red, green and proximty variables
guilhemMBED 7:278339a9eeba 81 //USB_link.printf("r: %hu g : %hu prox : %hu \r\n ",r,g,a);
guilhemMBED 7:278339a9eeba 82
guilhemMBED 7:278339a9eeba 83 //diplay of color value
guilhemMBED 6:9aeb18bebe85 84 //USB_link.printf("color : %hu \r\n", color);
guilhemMBED 7:278339a9eeba 85
guilhemMBED 7:278339a9eeba 86 // reading of the CAN bus
guilhemMBED 7:278339a9eeba 87 if (can1.read(msg)) {
guilhemMBED 7:278339a9eeba 88 //verification of the ID ( 0x4B0 ) and soft ID
guilhemMBED 7:278339a9eeba 89 if ((msg.id==adress_color_sensor)&((msg.data[0]==data_adress_general)|(msg.data[0]==data_adress_sensor))) {
guilhemMBED 7:278339a9eeba 90 state=msg.data[1];
guilhemMBED 7:278339a9eeba 91 switch (state) {
guilhemMBED 7:278339a9eeba 92 case send_RGB_value: // send_RGB_value
guilhemMBED 7:278339a9eeba 93 message[2]= (char)((r & 0xFF00)>>8);
guilhemMBED 7:278339a9eeba 94 message[3]= (char) (r & 0x00FF);
guilhemMBED 7:278339a9eeba 95 message[4]= (char)((g & 0xFF00)>>8);
guilhemMBED 7:278339a9eeba 96 message[5]= (char) (g & 0x00FF);
guilhemMBED 7:278339a9eeba 97 message[6]= (char)a ;
guilhemMBED 7:278339a9eeba 98 can1.write(CANMessage(adress_color_sensor,message,7));
guilhemMBED 7:278339a9eeba 99 break;
guilhemMBED 7:278339a9eeba 100
guilhemMBED 7:278339a9eeba 101 case send_RED:
guilhemMBED 7:278339a9eeba 102 message[2]= (char)((r & 0xFF00)>>8);
guilhemMBED 7:278339a9eeba 103 message[3]= (char) (r & 0x00FF);
guilhemMBED 7:278339a9eeba 104 can1.write(CANMessage(adress_color_sensor,message,4));
guilhemMBED 7:278339a9eeba 105 break;
guilhemMBED 7:278339a9eeba 106
guilhemMBED 7:278339a9eeba 107 case send_GREEN:
guilhemMBED 7:278339a9eeba 108 message[2]= (char)((g & 0xFF00)>>8);
guilhemMBED 7:278339a9eeba 109 message[3]= (char) (g & 0x00FF);
guilhemMBED 7:278339a9eeba 110 can1.write(CANMessage(adress_color_sensor,message,4));
guilhemMBED 7:278339a9eeba 111 break;
guilhemMBED 7:278339a9eeba 112
guilhemMBED 7:278339a9eeba 113 case send_BLUE:
guilhemMBED 7:278339a9eeba 114 message[2]= (char)((b & 0xFF00)>>8);
guilhemMBED 7:278339a9eeba 115 message[3]= (char) (b & 0x00FF);
guilhemMBED 7:278339a9eeba 116 can1.write(CANMessage(adress_color_sensor,message,4));
guilhemMBED 7:278339a9eeba 117 break;
guilhemMBED 7:278339a9eeba 118
guilhemMBED 7:278339a9eeba 119 case send_PROXIMITY:
guilhemMBED 7:278339a9eeba 120 message[2] = a ;
guilhemMBED 7:278339a9eeba 121 can1.write(CANMessage(adress_color_sensor,message,3));
guilhemMBED 7:278339a9eeba 122 break;
guilhemMBED 7:278339a9eeba 123
guilhemMBED 7:278339a9eeba 124 case send_COLOR:
guilhemMBED 7:278339a9eeba 125 message[2]=color;
guilhemMBED 7:278339a9eeba 126 can1.write(CANMessage(adress_color_sensor,message,3));
guilhemMBED 7:278339a9eeba 127 break;
guilhemMBED 7:278339a9eeba 128
guilhemMBED 7:278339a9eeba 129 case setup_LED:
guilhemMBED 7:278339a9eeba 130 //LED.write(msg.data[2]/258);
guilhemMBED 7:278339a9eeba 131 break;
guilhemMBED 7:278339a9eeba 132 case setup_PROXIMITY_THRESHOLD :
guilhemMBED 7:278339a9eeba 133 proximity_tresh = msg.data[2];
guilhemMBED 7:278339a9eeba 134 break;
guilhemMBED 7:278339a9eeba 135 }
guilhemMBED 6:9aeb18bebe85 136 }
guilhemMBED 6:9aeb18bebe85 137 }
guilhemMBED 5:7a63cb7ec666 138 }
guilhemMBED 1:7cd9426abb58 139 }