Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
wadabed.h@4:6dc95ed88bdd, 2015-11-08 (annotated)
- Committer:
- unicore32
- Date:
- Sun Nov 08 01:13:50 2015 +0000
- Revision:
- 4:6dc95ed88bdd
- Parent:
- 3:eefad14903a4
?????????????
Who changed what in which revision?
| User | Revision | Line number | New 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 |