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@2:58143f46fc8c, 2015-11-03 (annotated)
- Committer:
 - unicore32
 - Date:
 - Tue Nov 03 03:54:21 2015 +0000
 - Revision:
 - 2:58143f46fc8c
 - Parent:
 - 1:a0ab7df44d68
 - Child:
 - 3:eefad14903a4
 
deadCount??
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 | 0:07e8c39ea138 | 15 | DigitalIn BUSY(p15); // 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 | 0:07e8c39ea138 | 20 | Serial ESP8266(p28, p27); // ESP8266 port | 
| unicore32 | 0:07e8c39ea138 | 21 | Serial IM920(p13, p14); // 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 | 0:07e8c39ea138 | 44 | USB.putc(ValueBuff[0]); | 
| unicore32 | 0:07e8c39ea138 | 45 | USB.putc(ValueBuff[1]); | 
| unicore32 | 0:07e8c39ea138 | 46 | USB.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 |