Joystick commands can publisher

Committer:
stebonicelli
Date:
Tue Apr 16 09:00:35 2019 +0000
Revision:
6:7afa4c3c74ca
Parent:
5:1fa56bf23f8a
button combinations

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gidiana 0:0da0fd430e20 1 #include "mbed.h" //5.4.7 (144)
gidiana 0:0da0fd430e20 2
gidiana 0:0da0fd430e20 3 const PinName can1rxPins[] = {PA_11};
gidiana 0:0da0fd430e20 4 const PinName can1txPins[] = {PA_12};
stebonicelli 1:1dc44ef7308a 5 const PinName can2rxPins[] = {PB_5};
stebonicelli 1:1dc44ef7308a 6 const PinName can2txPins[] = {PB_6};
gidiana 0:0da0fd430e20 7
gidiana 0:0da0fd430e20 8 //CAN1
gidiana 0:0da0fd430e20 9 //0,0=OK 0,1=OK 0,2=OK 1,0=OK 1,1=OK 1,2=OK 2,0=OK 2,1=OK 2,2=OK
gidiana 0:0da0fd430e20 10 //CAN2
gidiana 0:0da0fd430e20 11 //0,0=RX_OK 0,1=OK 1,0=RX_OK 1,1=OK
gidiana 0:0da0fd430e20 12
stebonicelli 1:1dc44ef7308a 13 CAN can(can1rxPins[0], can1txPins[0]);
stebonicelli 1:1dc44ef7308a 14 CAN can1(can2rxPins[0], can2txPins[0]);
gidiana 0:0da0fd430e20 15
gidiana 0:0da0fd430e20 16 //UART1, Tx, Rx (Debug)
gidiana 0:0da0fd430e20 17 DigitalOut led1(LED1);
stebonicelli 1:1dc44ef7308a 18 DigitalIn button(USER_BUTTON);
gidiana 0:0da0fd430e20 19
gidiana 0:0da0fd430e20 20
gidiana 0:0da0fd430e20 21 Thread sendThread(osPriorityAboveNormal, 2048);
gidiana 0:0da0fd430e20 22 Thread canrx;
gidiana 0:0da0fd430e20 23 CANMessage messageIn;
gidiana 0:0da0fd430e20 24 CANMessage messageOut;
gidiana 0:0da0fd430e20 25
gidiana 4:48199bc5065f 26 AnalogIn xin(A1);
gidiana 4:48199bc5065f 27 AnalogIn yin(A0);
stebonicelli 1:1dc44ef7308a 28
gidiana 5:1fa56bf23f8a 29 DigitalIn b1(D12);
gidiana 5:1fa56bf23f8a 30 DigitalIn b2(D11);
gidiana 5:1fa56bf23f8a 31 DigitalIn b3(D10);
gidiana 5:1fa56bf23f8a 32 DigitalIn b4(D9);
gidiana 5:1fa56bf23f8a 33 DigitalIn b5(D8);
gidiana 5:1fa56bf23f8a 34 DigitalIn b6(D7);
gidiana 5:1fa56bf23f8a 35 DigitalIn b7(D6);
gidiana 5:1fa56bf23f8a 36 DigitalIn b8(D5);
gidiana 5:1fa56bf23f8a 37
stebonicelli 1:1dc44ef7308a 38 char payload[] = {0,0,0,0};
stebonicelli 1:1dc44ef7308a 39 int id = 0x020;
stebonicelli 1:1dc44ef7308a 40
gidiana 0:0da0fd430e20 41 void sendMessage()
gidiana 0:0da0fd430e20 42 {
stebonicelli 2:8dbcdac69f61 43 if(xin < 0.2f)
stebonicelli 2:8dbcdac69f61 44 payload[0] = 1;
stebonicelli 2:8dbcdac69f61 45 else if(xin > 0.8f)
stebonicelli 2:8dbcdac69f61 46 payload[0] = 2;
stebonicelli 2:8dbcdac69f61 47 else
stebonicelli 2:8dbcdac69f61 48 payload[0] = 0;
stebonicelli 2:8dbcdac69f61 49
stebonicelli 2:8dbcdac69f61 50 id = 0x020;
stebonicelli 2:8dbcdac69f61 51
stebonicelli 1:1dc44ef7308a 52 int status = can.write(CANMessage(id, payload, 4));
gidiana 4:48199bc5065f 53 wait(0.01);
gidiana 4:48199bc5065f 54 printf("Send status X: %d\r\n", status);
stebonicelli 2:8dbcdac69f61 55
stebonicelli 2:8dbcdac69f61 56 if(yin < 0.2f)
stebonicelli 6:7afa4c3c74ca 57 payload[0] = 2;
stebonicelli 2:8dbcdac69f61 58 else if(yin > 0.8f)
stebonicelli 6:7afa4c3c74ca 59 payload[0] = 1;
stebonicelli 2:8dbcdac69f61 60 else
stebonicelli 2:8dbcdac69f61 61 payload[0] = 0;
stebonicelli 2:8dbcdac69f61 62
stebonicelli 2:8dbcdac69f61 63 id = 0x010;
stebonicelli 2:8dbcdac69f61 64
gidiana 4:48199bc5065f 65 status = can.write(CANMessage(id, payload, 4));
gidiana 4:48199bc5065f 66 wait(0.01);
gidiana 4:48199bc5065f 67 printf("Send status Y: %d\r\n\n", status);
gidiana 5:1fa56bf23f8a 68
gidiana 5:1fa56bf23f8a 69 if(b5==0)
gidiana 5:1fa56bf23f8a 70 {
gidiana 5:1fa56bf23f8a 71 payload[0]=1;
stebonicelli 6:7afa4c3c74ca 72 if(b8)
stebonicelli 6:7afa4c3c74ca 73 id = 0x030;
stebonicelli 6:7afa4c3c74ca 74 else
stebonicelli 6:7afa4c3c74ca 75 id=0x070;
gidiana 5:1fa56bf23f8a 76 status = can.write(CANMessage(id, payload, 4));
gidiana 5:1fa56bf23f8a 77 printf("Send status linup: %d\r\n\n", status);
gidiana 5:1fa56bf23f8a 78 wait(0.01);
gidiana 5:1fa56bf23f8a 79 }
gidiana 5:1fa56bf23f8a 80 else if(b7==0)
gidiana 5:1fa56bf23f8a 81 {
gidiana 5:1fa56bf23f8a 82 payload[0]=2;
stebonicelli 6:7afa4c3c74ca 83 if(b8)
stebonicelli 6:7afa4c3c74ca 84 id = 0x030;
stebonicelli 6:7afa4c3c74ca 85 else
stebonicelli 6:7afa4c3c74ca 86 id=0x070;
gidiana 5:1fa56bf23f8a 87 status = can.write(CANMessage(id, payload, 4));
gidiana 5:1fa56bf23f8a 88 printf("Send status linDown: %d\r\n\n", status);
gidiana 5:1fa56bf23f8a 89 wait(0.01);
gidiana 5:1fa56bf23f8a 90 }
gidiana 5:1fa56bf23f8a 91 else if (b5==1 && b7==1)
gidiana 5:1fa56bf23f8a 92 {
gidiana 5:1fa56bf23f8a 93 payload[0]=0;
stebonicelli 6:7afa4c3c74ca 94 if(b8)
stebonicelli 6:7afa4c3c74ca 95 id = 0x030;
stebonicelli 6:7afa4c3c74ca 96 else
stebonicelli 6:7afa4c3c74ca 97 id=0x070;
stebonicelli 6:7afa4c3c74ca 98 status = can.write(CANMessage(id, payload, 4));
stebonicelli 6:7afa4c3c74ca 99 printf("Send status linStop: %d\r\n\n", status);
stebonicelli 6:7afa4c3c74ca 100 wait(0.01);
stebonicelli 6:7afa4c3c74ca 101 }
stebonicelli 6:7afa4c3c74ca 102
stebonicelli 6:7afa4c3c74ca 103 // ----------------------------------------------
stebonicelli 6:7afa4c3c74ca 104 if(b4==0)
stebonicelli 6:7afa4c3c74ca 105 {
stebonicelli 6:7afa4c3c74ca 106 payload[0]=1;
stebonicelli 6:7afa4c3c74ca 107 id = 0x050;
stebonicelli 6:7afa4c3c74ca 108 status = can.write(CANMessage(id, payload, 4));
stebonicelli 6:7afa4c3c74ca 109 printf("Send status linup: %d\r\n\n", status);
stebonicelli 6:7afa4c3c74ca 110 wait(0.01);
stebonicelli 6:7afa4c3c74ca 111 }
stebonicelli 6:7afa4c3c74ca 112 else if(b3==0)
stebonicelli 6:7afa4c3c74ca 113 {
stebonicelli 6:7afa4c3c74ca 114 payload[0]=2;
stebonicelli 6:7afa4c3c74ca 115 id = 0x050;
stebonicelli 6:7afa4c3c74ca 116 status = can.write(CANMessage(id, payload, 4));
stebonicelli 6:7afa4c3c74ca 117 printf("Send status linDown: %d\r\n\n", status);
stebonicelli 6:7afa4c3c74ca 118 wait(0.01);
stebonicelli 6:7afa4c3c74ca 119 }
stebonicelli 6:7afa4c3c74ca 120 else if (b4==1 && b3==1)
stebonicelli 6:7afa4c3c74ca 121 {
stebonicelli 6:7afa4c3c74ca 122 payload[0]=0;
stebonicelli 6:7afa4c3c74ca 123 id = 0x050;
gidiana 5:1fa56bf23f8a 124 status = can.write(CANMessage(id, payload, 4));
gidiana 5:1fa56bf23f8a 125 printf("Send status linStop: %d\r\n\n", status);
gidiana 5:1fa56bf23f8a 126 wait(0.01);
gidiana 5:1fa56bf23f8a 127 }
gidiana 5:1fa56bf23f8a 128
stebonicelli 6:7afa4c3c74ca 129 // ----------------------------------------------
stebonicelli 6:7afa4c3c74ca 130 if(b1==0)
stebonicelli 6:7afa4c3c74ca 131 {
stebonicelli 6:7afa4c3c74ca 132 payload[0]=1;
stebonicelli 6:7afa4c3c74ca 133 id = 0x040;
stebonicelli 6:7afa4c3c74ca 134 status = can.write(CANMessage(id, payload, 4));
stebonicelli 6:7afa4c3c74ca 135 printf("Send status linup: %d\r\n\n", status);
stebonicelli 6:7afa4c3c74ca 136 wait(0.01);
stebonicelli 6:7afa4c3c74ca 137 }
stebonicelli 6:7afa4c3c74ca 138 else if(b2==0)
stebonicelli 6:7afa4c3c74ca 139 {
stebonicelli 6:7afa4c3c74ca 140 payload[0]=2;
stebonicelli 6:7afa4c3c74ca 141 id = 0x040;
stebonicelli 6:7afa4c3c74ca 142 status = can.write(CANMessage(id, payload, 4));
stebonicelli 6:7afa4c3c74ca 143 printf("Send status linDown: %d\r\n\n", status);
stebonicelli 6:7afa4c3c74ca 144 wait(0.01);
stebonicelli 6:7afa4c3c74ca 145 }
stebonicelli 6:7afa4c3c74ca 146 else if (b1==1 && b2==1)
stebonicelli 6:7afa4c3c74ca 147 {
stebonicelli 6:7afa4c3c74ca 148 payload[0]=0;
stebonicelli 6:7afa4c3c74ca 149 id = 0x040;
stebonicelli 6:7afa4c3c74ca 150 status = can.write(CANMessage(id, payload, 4));
stebonicelli 6:7afa4c3c74ca 151 printf("Send status linStop: %d\r\n\n", status);
stebonicelli 6:7afa4c3c74ca 152 wait(0.01);
stebonicelli 6:7afa4c3c74ca 153 }
stebonicelli 6:7afa4c3c74ca 154
stebonicelli 6:7afa4c3c74ca 155 //----------------------------------------------
stebonicelli 6:7afa4c3c74ca 156 if(b6==0 && b8==1)
stebonicelli 6:7afa4c3c74ca 157 {
stebonicelli 6:7afa4c3c74ca 158 payload[0]=1;
stebonicelli 6:7afa4c3c74ca 159 id = 0x060;
stebonicelli 6:7afa4c3c74ca 160 status = can.write(CANMessage(id, payload, 4));
stebonicelli 6:7afa4c3c74ca 161 printf("Send status linup: %d\r\n\n", status);
stebonicelli 6:7afa4c3c74ca 162 wait(0.01);
stebonicelli 6:7afa4c3c74ca 163 }
stebonicelli 6:7afa4c3c74ca 164 else if(b6==0 && b8==0)
stebonicelli 6:7afa4c3c74ca 165 {
stebonicelli 6:7afa4c3c74ca 166 payload[0]=2;
stebonicelli 6:7afa4c3c74ca 167 id = 0x060;
stebonicelli 6:7afa4c3c74ca 168 status = can.write(CANMessage(id, payload, 4));
stebonicelli 6:7afa4c3c74ca 169 printf("Send status linDown: %d\r\n\n", status);
stebonicelli 6:7afa4c3c74ca 170 wait(0.01);
stebonicelli 6:7afa4c3c74ca 171 }
stebonicelli 6:7afa4c3c74ca 172 else if (b6==1 && b8==0)
stebonicelli 6:7afa4c3c74ca 173 {
stebonicelli 6:7afa4c3c74ca 174 payload[0]=0;
stebonicelli 6:7afa4c3c74ca 175 id = 0x060;
stebonicelli 6:7afa4c3c74ca 176 status = can.write(CANMessage(id, payload, 4));
stebonicelli 6:7afa4c3c74ca 177 printf("Send status linStop: %d\r\n\n", status);
stebonicelli 6:7afa4c3c74ca 178 wait(0.01);
stebonicelli 6:7afa4c3c74ca 179 }
gidiana 0:0da0fd430e20 180 }
gidiana 0:0da0fd430e20 181
gidiana 0:0da0fd430e20 182
gidiana 0:0da0fd430e20 183 int main()
gidiana 0:0da0fd430e20 184 {
gidiana 5:1fa56bf23f8a 185 b1.mode(PullUp);
gidiana 5:1fa56bf23f8a 186 b2.mode(PullUp);
gidiana 5:1fa56bf23f8a 187 b3.mode(PullUp);
gidiana 5:1fa56bf23f8a 188 b4.mode(PullUp);
gidiana 5:1fa56bf23f8a 189 b5.mode(PullUp);
gidiana 5:1fa56bf23f8a 190 b6.mode(PullUp);
gidiana 5:1fa56bf23f8a 191 b7.mode(PullUp);
gidiana 5:1fa56bf23f8a 192 b8.mode(PullUp);
gidiana 5:1fa56bf23f8a 193
gidiana 0:0da0fd430e20 194 printf("CAN receive / transmit test.\r\n");
stebonicelli 1:1dc44ef7308a 195 can.frequency(125000);
stebonicelli 1:1dc44ef7308a 196 can1.frequency(125000);
stebonicelli 1:1dc44ef7308a 197 printf("Running! \r\n");
gidiana 0:0da0fd430e20 198
stebonicelli 1:1dc44ef7308a 199 while(true)
stebonicelli 3:5e10299983ae 200 {
stebonicelli 1:1dc44ef7308a 201 sendMessage();
gidiana 0:0da0fd430e20 202
stebonicelli 1:1dc44ef7308a 203 printf("%f\t%f\n\r", float(xin), float(yin));
gidiana 5:1fa56bf23f8a 204 printf("b1: %d\tb2: %d\tb3: %d\tb4: %d\tb5: %d\tb6: %d\tb7: %d\tb8: %d\n\r", b1.read(), b2.read(), b3.read(), b4.read(), b5.read(), b6.read(), b7.read(), b8.read());
stebonicelli 1:1dc44ef7308a 205
stebonicelli 1:1dc44ef7308a 206 osDelay(100);
gidiana 0:0da0fd430e20 207 }
stebonicelli 1:1dc44ef7308a 208 }