2015_robocon_bteam / Mbed 2 deprecated wadabed_2015robot

Dependencies:   mbed

Committer:
unicore32
Date:
Sun Nov 08 01:13:50 2015 +0000
Revision:
4:6dc95ed88bdd
Parent:
3:eefad14903a4
?????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
unicore32 0:07e8c39ea138 1 #ifndef WADABED_H
unicore32 0:07e8c39ea138 2 #define WADABED_H
unicore32 0:07e8c39ea138 3
unicore32 0:07e8c39ea138 4 // Includes
unicore32 0:07e8c39ea138 5 #include "mbed.h"
unicore32 0:07e8c39ea138 6 #include <stdlib.h>
unicore32 0:07e8c39ea138 7 #include <string.h>
unicore32 0:07e8c39ea138 8
unicore32 0:07e8c39ea138 9 // pin define
unicore32 0:07e8c39ea138 10 DigitalOut STATUS_LED(LED1);
unicore32 0:07e8c39ea138 11 DigitalOut Naoto_LED(LED2);
unicore32 0:07e8c39ea138 12 DigitalOut ESP8266_LED(LED3);
unicore32 0:07e8c39ea138 13 DigitalOut IM920_LED(LED4);
unicore32 2:58143f46fc8c 14 DigitalOut OutSide_LED(p21);
unicore32 4:6dc95ed88bdd 15 DigitalIn BUSY(p26); // IM920 BUSY port
unicore32 0:07e8c39ea138 16
unicore32 0:07e8c39ea138 17 // Serial define
unicore32 0:07e8c39ea138 18 Serial USB(USBTX, USBRX); // USB port
unicore32 0:07e8c39ea138 19 Serial Naoto(p9, p10); // mbed port
unicore32 4:6dc95ed88bdd 20 Serial ESP8266(p13, p14); // ESP8266 port
unicore32 4:6dc95ed88bdd 21 Serial IM920(p28, p27); // IM920 port
unicore32 0:07e8c39ea138 22
unicore32 0:07e8c39ea138 23 // Timer define
unicore32 0:07e8c39ea138 24 Ticker LED;
unicore32 0:07e8c39ea138 25
unicore32 0:07e8c39ea138 26 // Variable define
unicore32 0:07e8c39ea138 27 char rcvBUFF_Naoto[40];
unicore32 0:07e8c39ea138 28 char rcvBUFF_ESP8266[20];
unicore32 0:07e8c39ea138 29 char rcvBUFF_IM920[20];
unicore32 0:07e8c39ea138 30 char outputDATA[20];
unicore32 2:58143f46fc8c 31 int deadCount = 0;
unicore32 1:a0ab7df44d68 32
unicore32 0:07e8c39ea138 33 void printValue(int *ValueBuff) {
unicore32 0:07e8c39ea138 34 /*
unicore32 0:07e8c39ea138 35 int A2, X, Y, Bs, Bt;
unicore32 0:07e8c39ea138 36 A2 = (ValueBuff[0] >> 6) & 1;
unicore32 0:07e8c39ea138 37 X = (ValueBuff[0] >> 3) & 7;
unicore32 0:07e8c39ea138 38 Y = ValueBuff[0] & 7;
unicore32 0:07e8c39ea138 39 Bs = (ValueBuff[1] >> 4) & 7;
unicore32 0:07e8c39ea138 40 Bt = ValueBuff[1] & 15;
unicore32 0:07e8c39ea138 41 USB.printf("A2=%d, X=%d, Y=%d, Bs=%d, Bt=%d\r\n", A2, X, Y, Bs, Bt);
unicore32 0:07e8c39ea138 42 USB.printf("%2X, %2X\r\n", ValueBuff[0], ValueBuff[1]);
unicore32 0:07e8c39ea138 43 */
unicore32 3:eefad14903a4 44 Naoto.putc(ValueBuff[0]);
unicore32 3:eefad14903a4 45 Naoto.putc(ValueBuff[1]);
unicore32 3:eefad14903a4 46 Naoto.putc(0x0A);
unicore32 0:07e8c39ea138 47 }
unicore32 0:07e8c39ea138 48
unicore32 0:07e8c39ea138 49 void ConvrecvDATA(char *buff, int device = 0) {
unicore32 0:07e8c39ea138 50 int sendNaotoBuff[2];
unicore32 0:07e8c39ea138 51 char s1[2], s2[2];//, s3[2], s4[2];
unicore32 0:07e8c39ea138 52 if (device == 1) {
unicore32 0:07e8c39ea138 53 strncpy(s1, buff+5, 2);
unicore32 0:07e8c39ea138 54 strncpy(s2, buff+7, 2);
unicore32 0:07e8c39ea138 55 }
unicore32 0:07e8c39ea138 56 else {
unicore32 0:07e8c39ea138 57 strncpy(s1, buff+11, 2);
unicore32 0:07e8c39ea138 58 strncpy(s2, buff+14, 2);
unicore32 0:07e8c39ea138 59 }
unicore32 0:07e8c39ea138 60 sendNaotoBuff[0] = strtoul(s1, (char **) NULL, 16);
unicore32 0:07e8c39ea138 61 sendNaotoBuff[1] = strtoul(s2, (char **) NULL, 16);
unicore32 0:07e8c39ea138 62 if (sendNaotoBuff[0] != 0 || sendNaotoBuff[1] != 0){
unicore32 0:07e8c39ea138 63 printValue(sendNaotoBuff);
unicore32 0:07e8c39ea138 64 }
unicore32 0:07e8c39ea138 65 }
unicore32 0:07e8c39ea138 66
unicore32 0:07e8c39ea138 67 inline void Naoto_RX() {
unicore32 0:07e8c39ea138 68 Naoto_LED = 1;
unicore32 0:07e8c39ea138 69 char rcvDATA;
unicore32 0:07e8c39ea138 70 static int rcvCOUNT = 0;
unicore32 0:07e8c39ea138 71 rcvDATA = Naoto.getc();
unicore32 0:07e8c39ea138 72 rcvBUFF_Naoto[rcvCOUNT] = rcvDATA;
unicore32 0:07e8c39ea138 73 rcvCOUNT++;
unicore32 0:07e8c39ea138 74 if (rcvDATA == 0x0A) {
unicore32 0:07e8c39ea138 75 rcvCOUNT = 0;
unicore32 0:07e8c39ea138 76 Naoto_LED = 0;
unicore32 0:07e8c39ea138 77 }
unicore32 0:07e8c39ea138 78 else if (rcvCOUNT >= 40) {
unicore32 0:07e8c39ea138 79 rcvCOUNT = 0;
unicore32 0:07e8c39ea138 80 memset(rcvBUFF_Naoto, '\0', 40);
unicore32 0:07e8c39ea138 81 }
unicore32 0:07e8c39ea138 82 }
unicore32 0:07e8c39ea138 83
unicore32 0:07e8c39ea138 84 inline void ESP8266_RX() {
unicore32 0:07e8c39ea138 85 ESP8266_LED = 1;
unicore32 0:07e8c39ea138 86 char rcvDATA;
unicore32 0:07e8c39ea138 87 static int rcvCOUNT = 0;
unicore32 0:07e8c39ea138 88 rcvDATA = ESP8266.getc();
unicore32 0:07e8c39ea138 89 rcvBUFF_ESP8266[rcvCOUNT] = rcvDATA;
unicore32 0:07e8c39ea138 90 rcvCOUNT++;
unicore32 0:07e8c39ea138 91 if (rcvDATA == 0x0A) {
unicore32 0:07e8c39ea138 92 ConvrecvDATA(rcvBUFF_ESP8266, 1);
unicore32 0:07e8c39ea138 93 ESP8266_LED = 0;
unicore32 0:07e8c39ea138 94 rcvCOUNT = 0;
unicore32 2:58143f46fc8c 95 deadCount++;
unicore32 0:07e8c39ea138 96 memset(rcvBUFF_ESP8266, '\0', 20);
unicore32 0:07e8c39ea138 97 }
unicore32 0:07e8c39ea138 98 else if (rcvCOUNT >= 20) {
unicore32 0:07e8c39ea138 99 rcvCOUNT = 0;
unicore32 0:07e8c39ea138 100 memset(rcvBUFF_ESP8266, '\0', 20);
unicore32 0:07e8c39ea138 101 }
unicore32 0:07e8c39ea138 102 }
unicore32 0:07e8c39ea138 103
unicore32 0:07e8c39ea138 104 inline void IM920_RX() {
unicore32 0:07e8c39ea138 105 IM920_LED = 1;
unicore32 0:07e8c39ea138 106 char rcvDATA;
unicore32 0:07e8c39ea138 107 static int rcvCOUNT = 0;
unicore32 0:07e8c39ea138 108 rcvDATA = IM920.getc();
unicore32 0:07e8c39ea138 109 rcvBUFF_IM920[rcvCOUNT] = rcvDATA;
unicore32 0:07e8c39ea138 110 rcvCOUNT++;
unicore32 0:07e8c39ea138 111 if (rcvDATA == 0x0A) {
unicore32 0:07e8c39ea138 112 ConvrecvDATA(rcvBUFF_IM920, 0);
unicore32 0:07e8c39ea138 113 IM920_LED = 0;
unicore32 0:07e8c39ea138 114 rcvCOUNT = 0;
unicore32 2:58143f46fc8c 115 deadCount++;
unicore32 0:07e8c39ea138 116 memset(rcvBUFF_IM920, '\0', 20);
unicore32 0:07e8c39ea138 117 }
unicore32 0:07e8c39ea138 118 else if (rcvCOUNT >= 20) {
unicore32 0:07e8c39ea138 119 rcvCOUNT = 0;
unicore32 0:07e8c39ea138 120 memset(rcvBUFF_IM920, '\0', 20);
unicore32 0:07e8c39ea138 121 }
unicore32 0:07e8c39ea138 122 }
unicore32 0:07e8c39ea138 123
unicore32 2:58143f46fc8c 124 void deadChecker() {
unicore32 2:58143f46fc8c 125 if (deadCount > 10) {
unicore32 2:58143f46fc8c 126 STATUS_LED = 1;
unicore32 2:58143f46fc8c 127 OutSide_LED = 1;
unicore32 2:58143f46fc8c 128 }
unicore32 2:58143f46fc8c 129 else if (deadCount > 2) {
unicore32 2:58143f46fc8c 130 STATUS_LED = !STATUS_LED;
unicore32 2:58143f46fc8c 131 OutSide_LED = !OutSide_LED;
unicore32 2:58143f46fc8c 132 }
unicore32 2:58143f46fc8c 133 else {
unicore32 2:58143f46fc8c 134 STATUS_LED = 0;
unicore32 2:58143f46fc8c 135 OutSide_LED = 0;
unicore32 2:58143f46fc8c 136 }
unicore32 2:58143f46fc8c 137 deadCount = 0;
unicore32 0:07e8c39ea138 138 }
unicore32 0:07e8c39ea138 139
unicore32 0:07e8c39ea138 140 void initializeCom() {
unicore32 0:07e8c39ea138 141 USB.baud(115200);
unicore32 0:07e8c39ea138 142 Naoto.baud(115200);
unicore32 0:07e8c39ea138 143 Naoto.format(8, Serial::Even, 1);
unicore32 0:07e8c39ea138 144 Naoto.attach(Naoto_RX, Serial::RxIrq);
unicore32 0:07e8c39ea138 145 ESP8266.baud(115200);
unicore32 0:07e8c39ea138 146 ESP8266.format(8, Serial::Even, 1);
unicore32 0:07e8c39ea138 147 ESP8266.attach(ESP8266_RX, Serial::RxIrq);
unicore32 0:07e8c39ea138 148 IM920.baud(9600);
unicore32 0:07e8c39ea138 149 IM920.format(8, Serial::None, 1);
unicore32 0:07e8c39ea138 150 IM920.attach(IM920_RX, Serial::RxIrq);
unicore32 2:58143f46fc8c 151 LED.attach(deadChecker, 0.5);
unicore32 0:07e8c39ea138 152 }
unicore32 0:07e8c39ea138 153
unicore32 0:07e8c39ea138 154 #endif