Battlebot

Dependencies:   BLE_API mbed nRF51822 X_NUCLEO_IDB0XA1

Committer:
trungng282
Date:
Sat Aug 26 14:52:20 2017 +0000
Revision:
0:f2130c18e719
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
trungng282 0:f2130c18e719 1 /* mbed Microcontroller Library
trungng282 0:f2130c18e719 2 * Copyright (c) 2006-2013 ARM Limited
trungng282 0:f2130c18e719 3 *
trungng282 0:f2130c18e719 4 * Licensed under the Apache License, Version 2.0 (the "License");
trungng282 0:f2130c18e719 5 * you may not use this file except in compliance with the License.
trungng282 0:f2130c18e719 6 * You may obtain a copy of the License at
trungng282 0:f2130c18e719 7 *
trungng282 0:f2130c18e719 8 * http://www.apache.org/licenses/LICENSE-2.0
trungng282 0:f2130c18e719 9 *
trungng282 0:f2130c18e719 10 * Unless required by applicable law or agreed to in writing, software
trungng282 0:f2130c18e719 11 * distributed under the License is distributed on an "AS IS" BASIS,
trungng282 0:f2130c18e719 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
trungng282 0:f2130c18e719 13 * See the License for the specific language governing permissions and
trungng282 0:f2130c18e719 14 * limitations under the License.
trungng282 0:f2130c18e719 15 */
trungng282 0:f2130c18e719 16
trungng282 0:f2130c18e719 17 #include "mbed.h"
trungng282 0:f2130c18e719 18 #include "ble/BLE.h"
trungng282 0:f2130c18e719 19 #include "ble/services/UARTService.h"
trungng282 0:f2130c18e719 20
trungng282 0:f2130c18e719 21
trungng282 0:f2130c18e719 22
trungng282 0:f2130c18e719 23 DigitalOut led1(p7);
trungng282 0:f2130c18e719 24 DigitalOut Relay_1A(p28);
trungng282 0:f2130c18e719 25 DigitalOut Relay_1B(p25);
trungng282 0:f2130c18e719 26 DigitalOut Relay_2A(p24);
trungng282 0:f2130c18e719 27 DigitalOut Relay_2B(p23);
trungng282 0:f2130c18e719 28 DigitalOut Relay_3A(p22);
trungng282 0:f2130c18e719 29 DigitalOut Relay_3B(p21);
trungng282 0:f2130c18e719 30 DigitalOut Relay_4A(p9);
trungng282 0:f2130c18e719 31 DigitalOut Relay_4B(p16);
trungng282 0:f2130c18e719 32 DigitalOut Relay_1(p17);
trungng282 0:f2130c18e719 33 DigitalOut Relay_2(p18);
trungng282 0:f2130c18e719 34 DigitalOut Relay_3(p19);
trungng282 0:f2130c18e719 35 DigitalOut Relay_4(p20);
trungng282 0:f2130c18e719 36
trungng282 0:f2130c18e719 37 Serial pc(p10, p11);
trungng282 0:f2130c18e719 38 BLEDevice ble;
trungng282 0:f2130c18e719 39 UARTService *uartServicePtr;
trungng282 0:f2130c18e719 40
trungng282 0:f2130c18e719 41 //// Other
trungng282 0:f2130c18e719 42 #define ON 0
trungng282 0:f2130c18e719 43 #define OFF 1
trungng282 0:f2130c18e719 44 uint8_t g_cmd;
trungng282 0:f2130c18e719 45 ////////////////////////////////////////////////////////////////////
trungng282 0:f2130c18e719 46 void right(void);
trungng282 0:f2130c18e719 47 void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params)
trungng282 0:f2130c18e719 48 {
trungng282 0:f2130c18e719 49 ble.startAdvertising();
trungng282 0:f2130c18e719 50 }
trungng282 0:f2130c18e719 51
trungng282 0:f2130c18e719 52 void onDataWritten(const GattWriteCallbackParams *params)
trungng282 0:f2130c18e719 53 {
trungng282 0:f2130c18e719 54 if ((uartServicePtr != NULL) && (params->handle == uartServicePtr->getTXCharacteristicHandle())) {
trungng282 0:f2130c18e719 55 uint16_t bytesRead = params->len;
trungng282 0:f2130c18e719 56 g_cmd = params->data[0];
trungng282 0:f2130c18e719 57 ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), params->data, bytesRead);
trungng282 0:f2130c18e719 58 }
trungng282 0:f2130c18e719 59 }
trungng282 0:f2130c18e719 60
trungng282 0:f2130c18e719 61 /////////////////////////////////////////////////////////////////////
trungng282 0:f2130c18e719 62 void periodicCallback(void)
trungng282 0:f2130c18e719 63 {
trungng282 0:f2130c18e719 64 led1 = !led1;
trungng282 0:f2130c18e719 65 }
trungng282 0:f2130c18e719 66 //////////////////////////////////////////////////////////////////////
trungng282 0:f2130c18e719 67 void right(void) //su dung motor 1 & 2
trungng282 0:f2130c18e719 68 {
trungng282 0:f2130c18e719 69 Relay_1A = 0;
trungng282 0:f2130c18e719 70 Relay_1B = 1;
trungng282 0:f2130c18e719 71 Relay_2A = 0;
trungng282 0:f2130c18e719 72 Relay_2B = 1;
trungng282 0:f2130c18e719 73 Relay_3A = 0;
trungng282 0:f2130c18e719 74 Relay_3B = 1;
trungng282 0:f2130c18e719 75 Relay_4A = 0;
trungng282 0:f2130c18e719 76 Relay_4B = 1;
trungng282 0:f2130c18e719 77 }
trungng282 0:f2130c18e719 78 void left(void) //su dung motor 1 & 2
trungng282 0:f2130c18e719 79 {
trungng282 0:f2130c18e719 80 Relay_1A = 1;
trungng282 0:f2130c18e719 81 Relay_1B = 0;
trungng282 0:f2130c18e719 82 Relay_2A = 1;
trungng282 0:f2130c18e719 83 Relay_2B = 0;
trungng282 0:f2130c18e719 84 Relay_3A = 1;
trungng282 0:f2130c18e719 85 Relay_3B = 0;
trungng282 0:f2130c18e719 86 Relay_4A = 1;
trungng282 0:f2130c18e719 87 Relay_4B = 0;
trungng282 0:f2130c18e719 88 }
trungng282 0:f2130c18e719 89 void down(void) //su dung motor 1 & 2
trungng282 0:f2130c18e719 90 {
trungng282 0:f2130c18e719 91 Relay_1A = 1; // motor a ben trai, b ben phai
trungng282 0:f2130c18e719 92 Relay_1B = 0;
trungng282 0:f2130c18e719 93 Relay_2A = 1; // Motor 1,4 same side. Motor 2,3 sameside
trungng282 0:f2130c18e719 94 Relay_2B = 0;
trungng282 0:f2130c18e719 95 Relay_3A = 0;
trungng282 0:f2130c18e719 96 Relay_3B = 1;
trungng282 0:f2130c18e719 97 Relay_4A = 0;
trungng282 0:f2130c18e719 98 Relay_4B = 1;
trungng282 0:f2130c18e719 99 }
trungng282 0:f2130c18e719 100 void up(void) //su dung motor 1 & 2
trungng282 0:f2130c18e719 101 {
trungng282 0:f2130c18e719 102 Relay_1A = 0;
trungng282 0:f2130c18e719 103 Relay_1B = 1;
trungng282 0:f2130c18e719 104 Relay_2A = 0;
trungng282 0:f2130c18e719 105 Relay_2B = 1;
trungng282 0:f2130c18e719 106 Relay_3A = 1;
trungng282 0:f2130c18e719 107 Relay_3B = 0;
trungng282 0:f2130c18e719 108 Relay_4A = 1;
trungng282 0:f2130c18e719 109 Relay_4B = 0;
trungng282 0:f2130c18e719 110 }
trungng282 0:f2130c18e719 111 void stop(void) //su dung motor 1 & 2
trungng282 0:f2130c18e719 112 {
trungng282 0:f2130c18e719 113 Relay_1A = 1;
trungng282 0:f2130c18e719 114 Relay_1B = 1;
trungng282 0:f2130c18e719 115 Relay_2A = 1;
trungng282 0:f2130c18e719 116 Relay_2B = 1;
trungng282 0:f2130c18e719 117 Relay_3A = 1;
trungng282 0:f2130c18e719 118 Relay_3B = 1;
trungng282 0:f2130c18e719 119 Relay_4A = 1;
trungng282 0:f2130c18e719 120 Relay_4B = 1;
trungng282 0:f2130c18e719 121 }
trungng282 0:f2130c18e719 122 /////////////////////////////////////////
trungng282 0:f2130c18e719 123 void motor3_up(void)
trungng282 0:f2130c18e719 124 {
trungng282 0:f2130c18e719 125 Relay_3A = 0;
trungng282 0:f2130c18e719 126 Relay_3B = 1;
trungng282 0:f2130c18e719 127 }
trungng282 0:f2130c18e719 128 void motor3_down(void)
trungng282 0:f2130c18e719 129 {
trungng282 0:f2130c18e719 130 Relay_3A = 1;
trungng282 0:f2130c18e719 131 Relay_3B = 0;
trungng282 0:f2130c18e719 132 }
trungng282 0:f2130c18e719 133 void motor3_stop(void)
trungng282 0:f2130c18e719 134 {
trungng282 0:f2130c18e719 135 Relay_3A = 1;
trungng282 0:f2130c18e719 136 Relay_3B = 1;
trungng282 0:f2130c18e719 137 }
trungng282 0:f2130c18e719 138 /////////////////////////////////////////
trungng282 0:f2130c18e719 139 void motor4_up(void)
trungng282 0:f2130c18e719 140 {
trungng282 0:f2130c18e719 141 Relay_4A = 0;
trungng282 0:f2130c18e719 142 Relay_4B = 1;
trungng282 0:f2130c18e719 143 }
trungng282 0:f2130c18e719 144 void motor4_down(void)
trungng282 0:f2130c18e719 145 {
trungng282 0:f2130c18e719 146 Relay_4A = 1;
trungng282 0:f2130c18e719 147 Relay_4B = 0;
trungng282 0:f2130c18e719 148 }
trungng282 0:f2130c18e719 149 void motor4_stop(void)
trungng282 0:f2130c18e719 150 {
trungng282 0:f2130c18e719 151 Relay_4A = 1;
trungng282 0:f2130c18e719 152 Relay_4B = 1;
trungng282 0:f2130c18e719 153 }
trungng282 0:f2130c18e719 154 //////////////////////////////////////////////////////////////////////
trungng282 0:f2130c18e719 155 void test_relay(void)
trungng282 0:f2130c18e719 156 {
trungng282 0:f2130c18e719 157 Relay_1A = 0; wait(1); Relay_1A = 1; wait(2);
trungng282 0:f2130c18e719 158 Relay_1B = 0; wait(1); Relay_1B = 1; wait(2);
trungng282 0:f2130c18e719 159 Relay_2A = 0; wait(1); Relay_2A = 1; wait(2);
trungng282 0:f2130c18e719 160 Relay_2B = 0; wait(1); Relay_2B = 1; wait(2);
trungng282 0:f2130c18e719 161 Relay_3A = 0; wait(1); Relay_3A = 1; wait(2);
trungng282 0:f2130c18e719 162 Relay_3B = 0; wait(1); Relay_3B = 1; wait(2);
trungng282 0:f2130c18e719 163 Relay_4A = 0; wait(1); Relay_4A = 1; wait(2);
trungng282 0:f2130c18e719 164 Relay_4B = 0; wait(1); Relay_4B = 1; wait(2);
trungng282 0:f2130c18e719 165 Relay_1 = 0; wait(1); Relay_1 = 1; wait(2);
trungng282 0:f2130c18e719 166 Relay_2 = 0; wait(1); Relay_2 = 1; wait(2);
trungng282 0:f2130c18e719 167 Relay_3 = 0; wait(1); Relay_3 = 1; wait(2);
trungng282 0:f2130c18e719 168 Relay_4 = 0; wait(1); Relay_4 = 1; wait(2);
trungng282 0:f2130c18e719 169
trungng282 0:f2130c18e719 170 Relay_1 = 0;
trungng282 0:f2130c18e719 171 Relay_2 = 0;
trungng282 0:f2130c18e719 172 Relay_3 = 0;
trungng282 0:f2130c18e719 173 Relay_4 = 0;
trungng282 0:f2130c18e719 174 Relay_1A = 1; Relay_1B = 0;
trungng282 0:f2130c18e719 175 Relay_2A = 1; Relay_2B = 0;
trungng282 0:f2130c18e719 176 Relay_3A = 1; Relay_3B = 0;
trungng282 0:f2130c18e719 177 Relay_4A = 1; Relay_4B = 0;
trungng282 0:f2130c18e719 178 wait(0.5);
trungng282 0:f2130c18e719 179 Relay_1 = 1;
trungng282 0:f2130c18e719 180 Relay_2 = 1;
trungng282 0:f2130c18e719 181 Relay_3 = 1;
trungng282 0:f2130c18e719 182 Relay_4 = 1;
trungng282 0:f2130c18e719 183 Relay_1A = 0; Relay_1B = 1;
trungng282 0:f2130c18e719 184 Relay_2A = 0; Relay_2B = 1;
trungng282 0:f2130c18e719 185 Relay_3A = 0; Relay_3B = 1;
trungng282 0:f2130c18e719 186 Relay_4A = 0; Relay_4B = 1;
trungng282 0:f2130c18e719 187 wait(2);
trungng282 0:f2130c18e719 188 }
trungng282 0:f2130c18e719 189
trungng282 0:f2130c18e719 190 //////////////////////////////////////////////////////////////////////
trungng282 0:f2130c18e719 191 int main(void)
trungng282 0:f2130c18e719 192 {
trungng282 0:f2130c18e719 193 //Init hardware
trungng282 0:f2130c18e719 194 led1 = OFF;
trungng282 0:f2130c18e719 195 Relay_1A = 1;
trungng282 0:f2130c18e719 196 Relay_1B = 1;
trungng282 0:f2130c18e719 197 Relay_2A = 1;
trungng282 0:f2130c18e719 198 Relay_2B = 1;
trungng282 0:f2130c18e719 199 Relay_3A = 1;
trungng282 0:f2130c18e719 200 Relay_3B = 1;
trungng282 0:f2130c18e719 201 Relay_4A = 1;
trungng282 0:f2130c18e719 202 Relay_4B = 1;
trungng282 0:f2130c18e719 203 Relay_1 = 1;
trungng282 0:f2130c18e719 204 Relay_2 = 1;
trungng282 0:f2130c18e719 205 Relay_3 = 1;
trungng282 0:f2130c18e719 206 Relay_4 = 1;
trungng282 0:f2130c18e719 207 //Init UART
trungng282 0:f2130c18e719 208 pc.baud(115200);
trungng282 0:f2130c18e719 209 pc.printf("\n\r# tisomitru\n\r");
trungng282 0:f2130c18e719 210 //Init timer
trungng282 0:f2130c18e719 211 Ticker ticker;
trungng282 0:f2130c18e719 212 ticker.attach(periodicCallback, 0.03); //sec
trungng282 0:f2130c18e719 213 //Init BLE
trungng282 0:f2130c18e719 214 ble.init();
trungng282 0:f2130c18e719 215 ble.onDisconnection(disconnectionCallback);
trungng282 0:f2130c18e719 216 ble.onDataWritten(onDataWritten);
trungng282 0:f2130c18e719 217 /* setup advertising */
trungng282 0:f2130c18e719 218 ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED);
trungng282 0:f2130c18e719 219 ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
trungng282 0:f2130c18e719 220 ble.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME,
trungng282 0:f2130c18e719 221 (const uint8_t *)"tisomitru", sizeof("tisomitru") - 1);
trungng282 0:f2130c18e719 222 ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_128BIT_SERVICE_IDS,
trungng282 0:f2130c18e719 223 (const uint8_t *)UARTServiceUUID_reversed, sizeof(UARTServiceUUID_reversed));
trungng282 0:f2130c18e719 224 ble.setAdvertisingInterval(200); /* 1000ms; in multiples of 0.625ms. */
trungng282 0:f2130c18e719 225 ble.startAdvertising();
trungng282 0:f2130c18e719 226 UARTService uartService(ble);
trungng282 0:f2130c18e719 227 uartServicePtr = &uartService;
trungng282 0:f2130c18e719 228
trungng282 0:f2130c18e719 229 while (true) {
trungng282 0:f2130c18e719 230 ble.waitForEvent();
trungng282 0:f2130c18e719 231 //test_relay();
trungng282 0:f2130c18e719 232
trungng282 0:f2130c18e719 233 if (g_cmd == 1) {up(); }
trungng282 0:f2130c18e719 234 else if(g_cmd == 2) {left(); }
trungng282 0:f2130c18e719 235 else if(g_cmd == 3) {down(); }
trungng282 0:f2130c18e719 236 else if(g_cmd == 4) {right(); }
trungng282 0:f2130c18e719 237 else if(g_cmd == 5) {stop(); }
trungng282 0:f2130c18e719 238
trungng282 0:f2130c18e719 239 else if(g_cmd == 6) {
trungng282 0:f2130c18e719 240 Relay_4 = ON;
trungng282 0:f2130c18e719 241
trungng282 0:f2130c18e719 242 }
trungng282 0:f2130c18e719 243 else if(g_cmd == 7) {
trungng282 0:f2130c18e719 244 Relay_4 = OFF;
trungng282 0:f2130c18e719 245 }
trungng282 0:f2130c18e719 246 else if(g_cmd == 8) {motor3_stop(); }
trungng282 0:f2130c18e719 247 else if(g_cmd == 9) {motor4_up(); }
trungng282 0:f2130c18e719 248 else if(g_cmd == 10) {motor4_down(); }
trungng282 0:f2130c18e719 249 else if(g_cmd == 11) {motor4_stop(); }
trungng282 0:f2130c18e719 250
trungng282 0:f2130c18e719 251 else if(g_cmd == 12) {Relay_1 = ON; }
trungng282 0:f2130c18e719 252 else if(g_cmd == 13) {Relay_1 = OFF; }
trungng282 0:f2130c18e719 253 else if(g_cmd == 14) {Relay_2 = ON; }
trungng282 0:f2130c18e719 254 else if(g_cmd == 15) {Relay_2 = OFF; }
trungng282 0:f2130c18e719 255 else if(g_cmd == 16) {Relay_3 = ON; }
trungng282 0:f2130c18e719 256 else if(g_cmd == 17) {Relay_3 = OFF; }
trungng282 0:f2130c18e719 257 else if(g_cmd == 18) {Relay_4 = ON; }
trungng282 0:f2130c18e719 258 else if(g_cmd == 19) {Relay_4 = OFF; }
trungng282 0:f2130c18e719 259
trungng282 0:f2130c18e719 260 g_cmd = 0;
trungng282 0:f2130c18e719 261 }
trungng282 0:f2130c18e719 262 }/* mbed Microcontroller Library
trungng282 0:f2130c18e719 263 * Copyright (c) 2006-2013 ARM Limited
trungng282 0:f2130c18e719 264 *
trungng282 0:f2130c18e719 265 * Licensed under the Apache License, Version 2.0 (the "License");
trungng282 0:f2130c18e719 266 * you may not use this file except in compliance with the License.
trungng282 0:f2130c18e719 267 * You may obtain a copy of the License at
trungng282 0:f2130c18e719 268 *
trungng282 0:f2130c18e719 269 * http://www.apache.org/licenses/LICENSE-2.0
trungng282 0:f2130c18e719 270 *
trungng282 0:f2130c18e719 271 * Unless required by applicable law or agreed to in writing, software
trungng282 0:f2130c18e719 272 * distributed under the License is distributed on an "AS IS" BASIS,
trungng282 0:f2130c18e719 273 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
trungng282 0:f2130c18e719 274 * See the License for the specific language governing permissions and
trungng282 0:f2130c18e719 275 * limitations under the License.
trungng282 0:f2130c18e719 276 */
trungng282 0:f2130c18e719 277
trungng282 0:f2130c18e719 278 #include "mbed.h"
trungng282 0:f2130c18e719 279 #include "ble/BLE.h"
trungng282 0:f2130c18e719 280 #include "ble/services/UARTService.h"
trungng282 0:f2130c18e719 281
trungng282 0:f2130c18e719 282
trungng282 0:f2130c18e719 283
trungng282 0:f2130c18e719 284 DigitalOut led1(p7);
trungng282 0:f2130c18e719 285 DigitalOut Relay_1A(p28);
trungng282 0:f2130c18e719 286 DigitalOut Relay_1B(p25);
trungng282 0:f2130c18e719 287 DigitalOut Relay_2A(p24);
trungng282 0:f2130c18e719 288 DigitalOut Relay_2B(p23);
trungng282 0:f2130c18e719 289 DigitalOut Relay_3A(p22);
trungng282 0:f2130c18e719 290 DigitalOut Relay_3B(p21);
trungng282 0:f2130c18e719 291 DigitalOut Relay_4A(p9);
trungng282 0:f2130c18e719 292 DigitalOut Relay_4B(p16);
trungng282 0:f2130c18e719 293 DigitalOut Relay_1(p17);
trungng282 0:f2130c18e719 294 DigitalOut Relay_2(p18);
trungng282 0:f2130c18e719 295 DigitalOut Relay_3(p19);
trungng282 0:f2130c18e719 296 DigitalOut Relay_4(p20);
trungng282 0:f2130c18e719 297
trungng282 0:f2130c18e719 298 Serial pc(p10, p11);
trungng282 0:f2130c18e719 299 BLEDevice ble;
trungng282 0:f2130c18e719 300 UARTService *uartServicePtr;
trungng282 0:f2130c18e719 301
trungng282 0:f2130c18e719 302 //// Other
trungng282 0:f2130c18e719 303 #define ON 0
trungng282 0:f2130c18e719 304 #define OFF 1
trungng282 0:f2130c18e719 305 uint8_t g_cmd;
trungng282 0:f2130c18e719 306 ////////////////////////////////////////////////////////////////////
trungng282 0:f2130c18e719 307 void right(void);
trungng282 0:f2130c18e719 308 void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params)
trungng282 0:f2130c18e719 309 {
trungng282 0:f2130c18e719 310 ble.startAdvertising();
trungng282 0:f2130c18e719 311 }
trungng282 0:f2130c18e719 312
trungng282 0:f2130c18e719 313 void onDataWritten(const GattWriteCallbackParams *params)
trungng282 0:f2130c18e719 314 {
trungng282 0:f2130c18e719 315 if ((uartServicePtr != NULL) && (params->handle == uartServicePtr->getTXCharacteristicHandle())) {
trungng282 0:f2130c18e719 316 uint16_t bytesRead = params->len;
trungng282 0:f2130c18e719 317 g_cmd = params->data[0];
trungng282 0:f2130c18e719 318 ble.updateCharacteristicValue(uartServicePtr->getRXCharacteristicHandle(), params->data, bytesRead);
trungng282 0:f2130c18e719 319 }
trungng282 0:f2130c18e719 320 }
trungng282 0:f2130c18e719 321
trungng282 0:f2130c18e719 322 /////////////////////////////////////////////////////////////////////
trungng282 0:f2130c18e719 323 void periodicCallback(void)
trungng282 0:f2130c18e719 324 {
trungng282 0:f2130c18e719 325 led1 = !led1;
trungng282 0:f2130c18e719 326 }
trungng282 0:f2130c18e719 327 //////////////////////////////////////////////////////////////////////
trungng282 0:f2130c18e719 328 void right(void) //su dung motor 1 & 2
trungng282 0:f2130c18e719 329 {
trungng282 0:f2130c18e719 330 Relay_1A = 0;
trungng282 0:f2130c18e719 331 Relay_1B = 1;
trungng282 0:f2130c18e719 332 Relay_2A = 0;
trungng282 0:f2130c18e719 333 Relay_2B = 1;
trungng282 0:f2130c18e719 334 Relay_3A = 0;
trungng282 0:f2130c18e719 335 Relay_3B = 1;
trungng282 0:f2130c18e719 336 Relay_4A = 0;
trungng282 0:f2130c18e719 337 Relay_4B = 1;
trungng282 0:f2130c18e719 338 }
trungng282 0:f2130c18e719 339 void left(void) //su dung motor 1 & 2
trungng282 0:f2130c18e719 340 {
trungng282 0:f2130c18e719 341 Relay_1A = 1;
trungng282 0:f2130c18e719 342 Relay_1B = 0;
trungng282 0:f2130c18e719 343 Relay_2A = 1;
trungng282 0:f2130c18e719 344 Relay_2B = 0;
trungng282 0:f2130c18e719 345 Relay_3A = 1;
trungng282 0:f2130c18e719 346 Relay_3B = 0;
trungng282 0:f2130c18e719 347 Relay_4A = 1;
trungng282 0:f2130c18e719 348 Relay_4B = 0;
trungng282 0:f2130c18e719 349 }
trungng282 0:f2130c18e719 350 void down(void) //su dung motor 1 & 2
trungng282 0:f2130c18e719 351 {
trungng282 0:f2130c18e719 352 Relay_1A = 1; // motor a ben trai, b ben phai
trungng282 0:f2130c18e719 353 Relay_1B = 0;
trungng282 0:f2130c18e719 354 Relay_2A = 1; // Motor 1,4 same side. Motor 2,3 sameside
trungng282 0:f2130c18e719 355 Relay_2B = 0;
trungng282 0:f2130c18e719 356 Relay_3A = 0;
trungng282 0:f2130c18e719 357 Relay_3B = 1;
trungng282 0:f2130c18e719 358 Relay_4A = 0;
trungng282 0:f2130c18e719 359 Relay_4B = 1;
trungng282 0:f2130c18e719 360 }
trungng282 0:f2130c18e719 361 void up(void) //su dung motor 1 & 2
trungng282 0:f2130c18e719 362 {
trungng282 0:f2130c18e719 363 Relay_1A = 0;
trungng282 0:f2130c18e719 364 Relay_1B = 1;
trungng282 0:f2130c18e719 365 Relay_2A = 0;
trungng282 0:f2130c18e719 366 Relay_2B = 1;
trungng282 0:f2130c18e719 367 Relay_3A = 1;
trungng282 0:f2130c18e719 368 Relay_3B = 0;
trungng282 0:f2130c18e719 369 Relay_4A = 1;
trungng282 0:f2130c18e719 370 Relay_4B = 0;
trungng282 0:f2130c18e719 371 }
trungng282 0:f2130c18e719 372 void stop(void) //su dung motor 1 & 2
trungng282 0:f2130c18e719 373 {
trungng282 0:f2130c18e719 374 Relay_1A = 1;
trungng282 0:f2130c18e719 375 Relay_1B = 1;
trungng282 0:f2130c18e719 376 Relay_2A = 1;
trungng282 0:f2130c18e719 377 Relay_2B = 1;
trungng282 0:f2130c18e719 378 Relay_3A = 1;
trungng282 0:f2130c18e719 379 Relay_3B = 1;
trungng282 0:f2130c18e719 380 Relay_4A = 1;
trungng282 0:f2130c18e719 381 Relay_4B = 1;
trungng282 0:f2130c18e719 382 }
trungng282 0:f2130c18e719 383 /////////////////////////////////////////
trungng282 0:f2130c18e719 384 void motor3_up(void)
trungng282 0:f2130c18e719 385 {
trungng282 0:f2130c18e719 386 Relay_3A = 0;
trungng282 0:f2130c18e719 387 Relay_3B = 1;
trungng282 0:f2130c18e719 388 }
trungng282 0:f2130c18e719 389 void motor3_down(void)
trungng282 0:f2130c18e719 390 {
trungng282 0:f2130c18e719 391 Relay_3A = 1;
trungng282 0:f2130c18e719 392 Relay_3B = 0;
trungng282 0:f2130c18e719 393 }
trungng282 0:f2130c18e719 394 void motor3_stop(void)
trungng282 0:f2130c18e719 395 {
trungng282 0:f2130c18e719 396 Relay_3A = 1;
trungng282 0:f2130c18e719 397 Relay_3B = 1;
trungng282 0:f2130c18e719 398 }
trungng282 0:f2130c18e719 399 /////////////////////////////////////////
trungng282 0:f2130c18e719 400 void motor4_up(void)
trungng282 0:f2130c18e719 401 {
trungng282 0:f2130c18e719 402 Relay_4A = 0;
trungng282 0:f2130c18e719 403 Relay_4B = 1;
trungng282 0:f2130c18e719 404 }
trungng282 0:f2130c18e719 405 void motor4_down(void)
trungng282 0:f2130c18e719 406 {
trungng282 0:f2130c18e719 407 Relay_4A = 1;
trungng282 0:f2130c18e719 408 Relay_4B = 0;
trungng282 0:f2130c18e719 409 }
trungng282 0:f2130c18e719 410 void motor4_stop(void)
trungng282 0:f2130c18e719 411 {
trungng282 0:f2130c18e719 412 Relay_4A = 1;
trungng282 0:f2130c18e719 413 Relay_4B = 1;
trungng282 0:f2130c18e719 414 }
trungng282 0:f2130c18e719 415 //////////////////////////////////////////////////////////////////////
trungng282 0:f2130c18e719 416 void test_relay(void)
trungng282 0:f2130c18e719 417 {
trungng282 0:f2130c18e719 418 Relay_1A = 0; wait(1); Relay_1A = 1; wait(2);
trungng282 0:f2130c18e719 419 Relay_1B = 0; wait(1); Relay_1B = 1; wait(2);
trungng282 0:f2130c18e719 420 Relay_2A = 0; wait(1); Relay_2A = 1; wait(2);
trungng282 0:f2130c18e719 421 Relay_2B = 0; wait(1); Relay_2B = 1; wait(2);
trungng282 0:f2130c18e719 422 Relay_3A = 0; wait(1); Relay_3A = 1; wait(2);
trungng282 0:f2130c18e719 423 Relay_3B = 0; wait(1); Relay_3B = 1; wait(2);
trungng282 0:f2130c18e719 424 Relay_4A = 0; wait(1); Relay_4A = 1; wait(2);
trungng282 0:f2130c18e719 425 Relay_4B = 0; wait(1); Relay_4B = 1; wait(2);
trungng282 0:f2130c18e719 426 Relay_1 = 0; wait(1); Relay_1 = 1; wait(2);
trungng282 0:f2130c18e719 427 Relay_2 = 0; wait(1); Relay_2 = 1; wait(2);
trungng282 0:f2130c18e719 428 Relay_3 = 0; wait(1); Relay_3 = 1; wait(2);
trungng282 0:f2130c18e719 429 Relay_4 = 0; wait(1); Relay_4 = 1; wait(2);
trungng282 0:f2130c18e719 430
trungng282 0:f2130c18e719 431 Relay_1 = 0;
trungng282 0:f2130c18e719 432 Relay_2 = 0;
trungng282 0:f2130c18e719 433 Relay_3 = 0;
trungng282 0:f2130c18e719 434 Relay_4 = 0;
trungng282 0:f2130c18e719 435 Relay_1A = 1; Relay_1B = 0;
trungng282 0:f2130c18e719 436 Relay_2A = 1; Relay_2B = 0;
trungng282 0:f2130c18e719 437 Relay_3A = 1; Relay_3B = 0;
trungng282 0:f2130c18e719 438 Relay_4A = 1; Relay_4B = 0;
trungng282 0:f2130c18e719 439 wait(0.5);
trungng282 0:f2130c18e719 440 Relay_1 = 1;
trungng282 0:f2130c18e719 441 Relay_2 = 1;
trungng282 0:f2130c18e719 442 Relay_3 = 1;
trungng282 0:f2130c18e719 443 Relay_4 = 1;
trungng282 0:f2130c18e719 444 Relay_1A = 0; Relay_1B = 1;
trungng282 0:f2130c18e719 445 Relay_2A = 0; Relay_2B = 1;
trungng282 0:f2130c18e719 446 Relay_3A = 0; Relay_3B = 1;
trungng282 0:f2130c18e719 447 Relay_4A = 0; Relay_4B = 1;
trungng282 0:f2130c18e719 448 wait(2);
trungng282 0:f2130c18e719 449 }
trungng282 0:f2130c18e719 450
trungng282 0:f2130c18e719 451 //////////////////////////////////////////////////////////////////////
trungng282 0:f2130c18e719 452 int main(void)
trungng282 0:f2130c18e719 453 {
trungng282 0:f2130c18e719 454 //Init hardware
trungng282 0:f2130c18e719 455 led1 = OFF;
trungng282 0:f2130c18e719 456 Relay_1A = 1;
trungng282 0:f2130c18e719 457 Relay_1B = 1;
trungng282 0:f2130c18e719 458 Relay_2A = 1;
trungng282 0:f2130c18e719 459 Relay_2B = 1;
trungng282 0:f2130c18e719 460 Relay_3A = 1;
trungng282 0:f2130c18e719 461 Relay_3B = 1;
trungng282 0:f2130c18e719 462 Relay_4A = 1;
trungng282 0:f2130c18e719 463 Relay_4B = 1;
trungng282 0:f2130c18e719 464 Relay_1 = 1;
trungng282 0:f2130c18e719 465 Relay_2 = 1;
trungng282 0:f2130c18e719 466 Relay_3 = 1;
trungng282 0:f2130c18e719 467 Relay_4 = 1;
trungng282 0:f2130c18e719 468 //Init UART
trungng282 0:f2130c18e719 469 pc.baud(115200);
trungng282 0:f2130c18e719 470 pc.printf("\n\r# tisomitru\n\r");
trungng282 0:f2130c18e719 471 //Init timer
trungng282 0:f2130c18e719 472 Ticker ticker;
trungng282 0:f2130c18e719 473 ticker.attach(periodicCallback, 0.03); //sec
trungng282 0:f2130c18e719 474 //Init BLE
trungng282 0:f2130c18e719 475 ble.init();
trungng282 0:f2130c18e719 476 ble.onDisconnection(disconnectionCallback);
trungng282 0:f2130c18e719 477 ble.onDataWritten(onDataWritten);
trungng282 0:f2130c18e719 478 /* setup advertising */
trungng282 0:f2130c18e719 479 ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED);
trungng282 0:f2130c18e719 480 ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
trungng282 0:f2130c18e719 481 ble.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME,
trungng282 0:f2130c18e719 482 (const uint8_t *)"tisomitru", sizeof("tisomitru") - 1);
trungng282 0:f2130c18e719 483 ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_128BIT_SERVICE_IDS,
trungng282 0:f2130c18e719 484 (const uint8_t *)UARTServiceUUID_reversed, sizeof(UARTServiceUUID_reversed));
trungng282 0:f2130c18e719 485 ble.setAdvertisingInterval(200); /* 1000ms; in multiples of 0.625ms. */
trungng282 0:f2130c18e719 486 ble.startAdvertising();
trungng282 0:f2130c18e719 487 UARTService uartService(ble);
trungng282 0:f2130c18e719 488 uartServicePtr = &uartService;
trungng282 0:f2130c18e719 489
trungng282 0:f2130c18e719 490 while (true) {
trungng282 0:f2130c18e719 491 ble.waitForEvent();
trungng282 0:f2130c18e719 492 //test_relay();
trungng282 0:f2130c18e719 493
trungng282 0:f2130c18e719 494 if (g_cmd == 1) {up(); }
trungng282 0:f2130c18e719 495 else if(g_cmd == 2) {left(); }
trungng282 0:f2130c18e719 496 else if(g_cmd == 3) {down(); }
trungng282 0:f2130c18e719 497 else if(g_cmd == 4) {right(); }
trungng282 0:f2130c18e719 498 else if(g_cmd == 5) {stop(); }
trungng282 0:f2130c18e719 499
trungng282 0:f2130c18e719 500 else if(g_cmd == 6) {
trungng282 0:f2130c18e719 501 Relay_4 = ON;
trungng282 0:f2130c18e719 502
trungng282 0:f2130c18e719 503 }
trungng282 0:f2130c18e719 504 else if(g_cmd == 7) {
trungng282 0:f2130c18e719 505 Relay_4 = OFF;
trungng282 0:f2130c18e719 506 }
trungng282 0:f2130c18e719 507 else if(g_cmd == 8) {motor3_stop(); }
trungng282 0:f2130c18e719 508 else if(g_cmd == 9) {motor4_up(); }
trungng282 0:f2130c18e719 509 else if(g_cmd == 10) {motor4_down(); }
trungng282 0:f2130c18e719 510 else if(g_cmd == 11) {motor4_stop(); }
trungng282 0:f2130c18e719 511
trungng282 0:f2130c18e719 512 else if(g_cmd == 12) {Relay_1 = ON; }
trungng282 0:f2130c18e719 513 else if(g_cmd == 13) {Relay_1 = OFF; }
trungng282 0:f2130c18e719 514 else if(g_cmd == 14) {Relay_2 = ON; }
trungng282 0:f2130c18e719 515 else if(g_cmd == 15) {Relay_2 = OFF; }
trungng282 0:f2130c18e719 516 else if(g_cmd == 16) {Relay_3 = ON; }
trungng282 0:f2130c18e719 517 else if(g_cmd == 17) {Relay_3 = OFF; }
trungng282 0:f2130c18e719 518 else if(g_cmd == 18) {Relay_4 = ON; }
trungng282 0:f2130c18e719 519 else if(g_cmd == 19) {Relay_4 = OFF; }
trungng282 0:f2130c18e719 520
trungng282 0:f2130c18e719 521 g_cmd = 0;
trungng282 0:f2130c18e719 522 }
trungng282 0:f2130c18e719 523 }