version 2.1
Dependencies: mbed
Fork of Robot_a_cables_v1_0 by
main.cpp@3:86e21a36eecb, 2018-03-27 (annotated)
- Committer:
- protongamer
- Date:
- Tue Mar 27 09:54:04 2018 +0000
- Revision:
- 3:86e21a36eecb
- Parent:
- 2:1e06fd49ea7b
- Child:
- 4:3fd7c53d31c1
1 moteur un bp; probl?me sur la requete pour la demande de postiion
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
LouisReynier | 0:1ab5fdb4fa56 | 1 | #include "mbed.h" |
protongamer | 3:86e21a36eecb | 2 | #include "can_parameters.h" |
protongamer | 3:86e21a36eecb | 3 | /* |
protongamer | 3:86e21a36eecb | 4 | Projet BTS SN - Robot à câbles - Lycée Georges Cabanis |
protongamer | 3:86e21a36eecb | 5 | Enzo Niro - Erwin Sazio |
protongamer | 3:86e21a36eecb | 6 | Transmission par Bus CAN(protocol CANOpen) |
protongamer | 3:86e21a36eecb | 7 | |
protongamer | 3:86e21a36eecb | 8 | */ |
LouisReynier | 0:1ab5fdb4fa56 | 9 | |
protongamer | 1:4d70e593345f | 10 | |
protongamer | 3:86e21a36eecb | 11 | |
protongamer | 3:86e21a36eecb | 12 | |
protongamer | 3:86e21a36eecb | 13 | |
protongamer | 3:86e21a36eecb | 14 | |
protongamer | 3:86e21a36eecb | 15 | DigitalOut MOTOR1_OP(LED1); |
protongamer | 3:86e21a36eecb | 16 | DigitalOut MOTOR2_OP(LED2); |
protongamer | 3:86e21a36eecb | 17 | DigitalOut DEB_MOD_DEG(LED3); |
protongamer | 3:86e21a36eecb | 18 | DigitalOut DEB_MOD_NOR(LED4); |
protongamer | 3:86e21a36eecb | 19 | DigitalOut MOD_DEG(p26); |
protongamer | 3:86e21a36eecb | 20 | DigitalOut MOD_NOR(p25); |
protongamer | 3:86e21a36eecb | 21 | DigitalIn SWH(p5); |
protongamer | 3:86e21a36eecb | 22 | DigitalIn SWV(p6); |
protongamer | 3:86e21a36eecb | 23 | DigitalIn BPO(p7); |
protongamer | 3:86e21a36eecb | 24 | |
LouisReynier | 0:1ab5fdb4fa56 | 25 | CAN can1(p9, p10,1000000);// on definit pin et debit |
LouisReynier | 0:1ab5fdb4fa56 | 26 | CAN can2(p30, p29, 1000000); |
protongamer | 1:4d70e593345f | 27 | Serial pc(USBTX, USBRX); |
protongamer | 1:4d70e593345f | 28 | //AnalogIn pot_1(p19); // potard pour selection |
protongamer | 1:4d70e593345f | 29 | |
protongamer | 1:4d70e593345f | 30 | |
protongamer | 1:4d70e593345f | 31 | |
protongamer | 1:4d70e593345f | 32 | void send(int id, char octet_emis[], char RouD, char longueur ) |
protongamer | 1:4d70e593345f | 33 | { |
protongamer | 1:4d70e593345f | 34 | int emis_ok = 0 ; |
LouisReynier | 0:1ab5fdb4fa56 | 35 | |
protongamer | 1:4d70e593345f | 36 | if (RouD == 'D') |
protongamer | 1:4d70e593345f | 37 | { emis_ok = can2.write(CANMessage(id, octet_emis, longueur, CANData, CANStandard )) ; |
protongamer | 3:86e21a36eecb | 38 | //pc.printf("id: %x, %c L = %d, \nData : %x:%x:%x:%x ... \n", id,RouD,longueur,octet_emis[0],octet_emis[1], octet_emis[2], octet_emis[3] ); |
protongamer | 1:4d70e593345f | 39 | }// c'ets la valeur retournée par la fonction write |
protongamer | 1:4d70e593345f | 40 | else |
protongamer | 1:4d70e593345f | 41 | { emis_ok = can2.write(CANMessage(id, octet_emis, longueur, CANRemote, CANStandard )); |
protongamer | 3:86e21a36eecb | 42 | //pc.printf("id: %x, %c L = %d, \nData : %x:%x:%x:%x ... \n", id,RouD,longueur,octet_emis[0],octet_emis[1], octet_emis[2], octet_emis[3] ); |
protongamer | 1:4d70e593345f | 43 | } |
protongamer | 1:4d70e593345f | 44 | //lcd.locate(0,10); |
protongamer | 1:4d70e593345f | 45 | //lcd.printf("id: %x, %c L = %d, \nData : %x:%x:%x:%x ... \n", id,RouD,longueur,octet_emis[0],octet_emis[1], octet_emis[2], octet_emis[3] ); |
protongamer | 3:86e21a36eecb | 46 | /*if(emis_ok) { |
protongamer | 1:4d70e593345f | 47 | // ici octet emis n'a pas de sens car trame remote ! |
protongamer | 3:86e21a36eecb | 48 | //pc.printf("send \r \n"); |
protongamer | 3:86e21a36eecb | 49 | } */ |
LouisReynier | 0:1ab5fdb4fa56 | 50 | } |
protongamer | 1:4d70e593345f | 51 | |
protongamer | 1:4d70e593345f | 52 | |
protongamer | 1:4d70e593345f | 53 | |
LouisReynier | 0:1ab5fdb4fa56 | 54 | |
LouisReynier | 0:1ab5fdb4fa56 | 55 | int main() { |
protongamer | 1:4d70e593345f | 56 | |
protongamer | 3:86e21a36eecb | 57 | CANMessage msg; |
protongamer | 3:86e21a36eecb | 58 | uint8_t ping = 0; |
protongamer | 3:86e21a36eecb | 59 | char command[8]; //word to send command |
protongamer | 3:86e21a36eecb | 60 | //define Pullup switch |
protongamer | 3:86e21a36eecb | 61 | SWH.mode(PullUp); |
protongamer | 3:86e21a36eecb | 62 | SWV.mode(PullUp); |
protongamer | 3:86e21a36eecb | 63 | BPO.mode(PullUp); |
protongamer | 3:86e21a36eecb | 64 | pc.printf("starting...\r\n"); |
protongamer | 3:86e21a36eecb | 65 | MOD_DEG = 1; |
protongamer | 3:86e21a36eecb | 66 | wait(0.1); |
protongamer | 3:86e21a36eecb | 67 | MOD_DEG = 0; |
protongamer | 3:86e21a36eecb | 68 | wait(0.1); |
protongamer | 3:86e21a36eecb | 69 | MOD_DEG = 1; |
protongamer | 3:86e21a36eecb | 70 | wait(0.1); |
protongamer | 3:86e21a36eecb | 71 | MOD_DEG = 0; |
protongamer | 3:86e21a36eecb | 72 | wait(0.1); |
protongamer | 3:86e21a36eecb | 73 | MOD_DEG = 1; |
protongamer | 3:86e21a36eecb | 74 | wait(0.1); |
protongamer | 3:86e21a36eecb | 75 | MOD_DEG = 0; |
protongamer | 3:86e21a36eecb | 76 | wait(0.1); |
protongamer | 3:86e21a36eecb | 77 | |
protongamer | 3:86e21a36eecb | 78 | command[0] = DRIVER_R1; |
protongamer | 3:86e21a36eecb | 79 | command[1] = DRIVER_R2; |
protongamer | 3:86e21a36eecb | 80 | |
protongamer | 3:86e21a36eecb | 81 | while(ping == 0){ |
protongamer | 3:86e21a36eecb | 82 | pc.printf("ping...\r\n"); |
protongamer | 3:86e21a36eecb | 83 | send(INITOP, command, 'D', 2); //send word to put pluto driver in operational mode |
protongamer | 3:86e21a36eecb | 84 | MOD_NOR = 1; |
protongamer | 3:86e21a36eecb | 85 | if(can2.read(msg)) { |
protongamer | 3:86e21a36eecb | 86 | pc.printf("Done\r\n"); |
protongamer | 3:86e21a36eecb | 87 | ping = 1; |
protongamer | 1:4d70e593345f | 88 | } |
protongamer | 3:86e21a36eecb | 89 | wait(0.1); |
protongamer | 3:86e21a36eecb | 90 | MOD_NOR = 0; |
protongamer | 3:86e21a36eecb | 91 | wait(0.9); |
protongamer | 1:4d70e593345f | 92 | |
protongamer | 3:86e21a36eecb | 93 | } |
protongamer | 1:4d70e593345f | 94 | |
protongamer | 1:4d70e593345f | 95 | |
protongamer | 1:4d70e593345f | 96 | |
protongamer | 3:86e21a36eecb | 97 | while(1){ |
protongamer | 3:86e21a36eecb | 98 | if(SWH == 0){ |
protongamer | 3:86e21a36eecb | 99 | wait(1.0); |
protongamer | 3:86e21a36eecb | 100 | send(0x0195, command, 'R', 0); //send word to put pluto driver in operational mode |
protongamer | 3:86e21a36eecb | 101 | wait(1); |
protongamer | 3:86e21a36eecb | 102 | if(can2.read(msg)) { |
protongamer | 3:86e21a36eecb | 103 | for(int i = 0; i < msg.len; i++){ |
protongamer | 3:86e21a36eecb | 104 | pc.printf("0x%x ",msg.data[i]); |
protongamer | 3:86e21a36eecb | 105 | }//end of for |
protongamer | 3:86e21a36eecb | 106 | pc.printf("\r \n"); |
protongamer | 3:86e21a36eecb | 107 | }//can.read(len) |
protongamer | 3:86e21a36eecb | 108 | }//end of SWH == 0 |
protongamer | 3:86e21a36eecb | 109 | |
protongamer | 3:86e21a36eecb | 110 | switch(BPO){ |
protongamer | 3:86e21a36eecb | 111 | case 0: |
protongamer | 3:86e21a36eecb | 112 | |
protongamer | 3:86e21a36eecb | 113 | switch(SWV){ |
protongamer | 3:86e21a36eecb | 114 | case 0: |
protongamer | 3:86e21a36eecb | 115 | command[0] = 0x00; |
protongamer | 3:86e21a36eecb | 116 | command[1] = 0x00; |
protongamer | 3:86e21a36eecb | 117 | command[2] = 0xBF; |
protongamer | 3:86e21a36eecb | 118 | command[3] = 0x00; |
protongamer | 3:86e21a36eecb | 119 | send(RPDO1_R, command, 'D', 4); //send word to put pluto driver in operational mode |
protongamer | 3:86e21a36eecb | 120 | break; |
protongamer | 3:86e21a36eecb | 121 | |
protongamer | 3:86e21a36eecb | 122 | case 1: |
protongamer | 3:86e21a36eecb | 123 | command[0] = 0xFF; |
protongamer | 3:86e21a36eecb | 124 | command[1] = 0xFF; |
protongamer | 3:86e21a36eecb | 125 | command[2] = 0x40; |
protongamer | 3:86e21a36eecb | 126 | command[3] = 0xFF; |
protongamer | 3:86e21a36eecb | 127 | send(RPDO1_R, command, 'D', 4); //send word to put pluto driver in operational mode |
protongamer | 3:86e21a36eecb | 128 | |
protongamer | 3:86e21a36eecb | 129 | break; |
protongamer | 3:86e21a36eecb | 130 | |
protongamer | 3:86e21a36eecb | 131 | |
protongamer | 3:86e21a36eecb | 132 | |
protongamer | 3:86e21a36eecb | 133 | } |
protongamer | 3:86e21a36eecb | 134 | |
protongamer | 3:86e21a36eecb | 135 | break; |
protongamer | 3:86e21a36eecb | 136 | |
protongamer | 3:86e21a36eecb | 137 | case 1: |
protongamer | 3:86e21a36eecb | 138 | |
protongamer | 3:86e21a36eecb | 139 | command[0] = 0x00; |
protongamer | 3:86e21a36eecb | 140 | command[1] = 0x00; |
protongamer | 3:86e21a36eecb | 141 | command[2] = 0x00; |
protongamer | 3:86e21a36eecb | 142 | command[3] = 0x00; |
protongamer | 3:86e21a36eecb | 143 | send(RPDO1_R, command, 'D', 4); //send word to put pluto driver in operational mode |
protongamer | 3:86e21a36eecb | 144 | break; |
protongamer | 3:86e21a36eecb | 145 | |
protongamer | 3:86e21a36eecb | 146 | } |
protongamer | 1:4d70e593345f | 147 | |
protongamer | 1:4d70e593345f | 148 | |
protongamer | 1:4d70e593345f | 149 | }// fin while(1) |
protongamer | 1:4d70e593345f | 150 | |
protongamer | 1:4d70e593345f | 151 | } // fin main |
protongamer | 1:4d70e593345f | 152 | |
protongamer | 3:86e21a36eecb | 153 |