a
Dependencies: HTTPClient SDFileSystemA SeeedStudioTFTv2 TFT_fonts WIZnet_Library mbed
Fork of Seeed_TFT_Touch_Shield by
main.cpp@6:12f28bac9400, 2015-08-15 (annotated)
- Committer:
- bangbh
- Date:
- Sat Aug 15 21:14:53 2015 +0000
- Revision:
- 6:12f28bac9400
- Parent:
- 5:9fc620b1378a
A
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lawliet | 1:b2794eb7c940 | 1 | /* |
lawliet | 1:b2794eb7c940 | 2 | main.cpp |
lawliet | 1:b2794eb7c940 | 3 | 2014 Copyright (c) Seeed Technology Inc. All right reserved. |
lawliet | 1:b2794eb7c940 | 4 | |
lawliet | 1:b2794eb7c940 | 5 | Author:lawliet zou(lawliet.zou@gmail.com) |
lawliet | 1:b2794eb7c940 | 6 | 2014-02-17 |
lawliet | 1:b2794eb7c940 | 7 | |
lawliet | 1:b2794eb7c940 | 8 | This library is free software; you can redistribute it and/or |
lawliet | 1:b2794eb7c940 | 9 | modify it under the terms of the GNU Lesser General Public |
lawliet | 1:b2794eb7c940 | 10 | License as published by the Free Software Foundation; either |
lawliet | 1:b2794eb7c940 | 11 | version 2.1 of the License, or (at your option) any later version. |
lawliet | 1:b2794eb7c940 | 12 | |
lawliet | 1:b2794eb7c940 | 13 | This library is distributed in the hope that it will be useful, |
lawliet | 1:b2794eb7c940 | 14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
lawliet | 1:b2794eb7c940 | 15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
lawliet | 1:b2794eb7c940 | 16 | Lesser General Public License for more details. |
lawliet | 1:b2794eb7c940 | 17 | |
lawliet | 1:b2794eb7c940 | 18 | You should have received a copy of the GNU Lesser General Public |
lawliet | 1:b2794eb7c940 | 19 | License along with this library; if not, write to the Free Software |
lawliet | 1:b2794eb7c940 | 20 | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
lawliet | 1:b2794eb7c940 | 21 | */ |
bangbh | 5:9fc620b1378a | 22 | /*include library*/ |
bangbh | 5:9fc620b1378a | 23 | //mbed library |
neilt6 | 0:407dafce805d | 24 | #include "mbed.h" |
bangbh | 5:9fc620b1378a | 25 | |
bangbh | 5:9fc620b1378a | 26 | //HW W5500 library |
bangbh | 5:9fc620b1378a | 27 | #include "WIZnetInterface.h" |
bangbh | 5:9fc620b1378a | 28 | |
bangbh | 5:9fc620b1378a | 29 | //HW Touch lcd library |
neilt6 | 0:407dafce805d | 30 | #include "SeeedStudioTFTv2.h" |
bangbh | 5:9fc620b1378a | 31 | |
bangbh | 5:9fc620b1378a | 32 | //SW Font library |
neilt6 | 0:407dafce805d | 33 | #include "Arial12x12.h" |
neilt6 | 0:407dafce805d | 34 | #include "Arial24x23.h" |
neilt6 | 0:407dafce805d | 35 | #include "Arial28x28.h" |
neilt6 | 0:407dafce805d | 36 | #include "font_big.h" |
neilt6 | 0:407dafce805d | 37 | |
bangbh | 5:9fc620b1378a | 38 | //SW HTTPClient library |
bangbh | 5:9fc620b1378a | 39 | #include "HTTPClient.h" |
bangbh | 6:12f28bac9400 | 40 | // |
bangbh | 6:12f28bac9400 | 41 | #include "SDFileSystem.h" |
bangbh | 6:12f28bac9400 | 42 | //SDFileSystem sd(D11,D12,D13,D4, "sdc"); |
bangbh | 5:9fc620b1378a | 43 | |
bangbh | 5:9fc620b1378a | 44 | /*Port define and initialize*/ |
bangbh | 5:9fc620b1378a | 45 | |
bangbh | 5:9fc620b1378a | 46 | //Define W5500 port and initialization |
bangbh | 5:9fc620b1378a | 47 | SPI spi(D11,D12,D13); |
bangbh | 6:12f28bac9400 | 48 | WIZnetInterface ethernet(&spi,D10,D15); |
bangbh | 5:9fc620b1378a | 49 | |
bangbh | 6:12f28bac9400 | 50 | #include "MySeeedStudioTFTv2.h" |
bangbh | 5:9fc620b1378a | 51 | |
bangbh | 5:9fc620b1378a | 52 | //Define TFT LCD port and initialization |
screamer | 2:5c2f6ff36ff1 | 53 | #define PIN_XP A3 |
screamer | 2:5c2f6ff36ff1 | 54 | #define PIN_XM A1 |
screamer | 2:5c2f6ff36ff1 | 55 | #define PIN_YP A2 |
screamer | 2:5c2f6ff36ff1 | 56 | #define PIN_YM A0 |
screamer | 2:5c2f6ff36ff1 | 57 | #define PIN_MOSI D11 |
screamer | 2:5c2f6ff36ff1 | 58 | #define PIN_MISO D12 |
screamer | 2:5c2f6ff36ff1 | 59 | #define PIN_SCLK D13 |
screamer | 2:5c2f6ff36ff1 | 60 | #define PIN_CS_TFT D5 |
screamer | 2:5c2f6ff36ff1 | 61 | #define PIN_DC_TFT D6 |
screamer | 2:5c2f6ff36ff1 | 62 | #define PIN_BL_TFT D7 |
screamer | 2:5c2f6ff36ff1 | 63 | #define PIN_CS_SD D4 |
bangbh | 6:12f28bac9400 | 64 | MySeeedStudioTFTv2 TFT(PIN_XP, PIN_XM, PIN_YP, PIN_YM, PIN_MOSI, PIN_MISO, PIN_SCLK, PIN_CS_TFT, PIN_DC_TFT, PIN_BL_TFT, PIN_CS_SD); |
lawliet | 1:b2794eb7c940 | 65 | |
bangbh | 6:12f28bac9400 | 66 | |
bangbh | 6:12f28bac9400 | 67 | #include "typedefinition.h" |
bangbh | 5:9fc620b1378a | 68 | //UART to USB initialization for debug message |
bangbh | 5:9fc620b1378a | 69 | Serial pc(USBTX, USBRX); |
bangbh | 5:9fc620b1378a | 70 | |
bangbh | 6:12f28bac9400 | 71 | Serial sound(PA_11,PA_12); |
bangbh | 6:12f28bac9400 | 72 | |
bangbh | 5:9fc620b1378a | 73 | //Ethernet information pre definition |
bangbh | 5:9fc620b1378a | 74 | const char * IP_Addr = "222.98.173.249"; |
bangbh | 5:9fc620b1378a | 75 | const char * IP_Subnet = "255.255.255.192"; |
bangbh | 5:9fc620b1378a | 76 | const char * IP_Gateway = "222.98.173.254"; |
bangbh | 5:9fc620b1378a | 77 | unsigned char MAC_Addr[6] = {0x00,0x08,0xDC,0x12,0x34,0x56}; |
neilt6 | 0:407dafce805d | 78 | |
bangbh | 6:12f28bac9400 | 79 | void SndPlay(int TrackNumber); |
bangbh | 6:12f28bac9400 | 80 | void Sndvol(unsigned char updn); |
bangbh | 6:12f28bac9400 | 81 | void basicDisplay(void); |
bangbh | 6:12f28bac9400 | 82 | void weatherDisplay(void); |
bangbh | 6:12f28bac9400 | 83 | |
neilt6 | 0:407dafce805d | 84 | int main() |
neilt6 | 0:407dafce805d | 85 | { |
bangbh | 5:9fc620b1378a | 86 | //Set baudrate of "U2U" |
bangbh | 5:9fc620b1378a | 87 | pc.baud(115200); |
neilt6 | 0:407dafce805d | 88 | //Configure the display driver |
neilt6 | 0:407dafce805d | 89 | TFT.background(Black); |
neilt6 | 0:407dafce805d | 90 | TFT.foreground(White); |
neilt6 | 0:407dafce805d | 91 | TFT.cls(); |
bangbh | 5:9fc620b1378a | 92 | |
bangbh | 5:9fc620b1378a | 93 | //Application Start message |
neilt6 | 0:407dafce805d | 94 | TFT.set_font((unsigned char*) Arial12x12); |
neilt6 | 0:407dafce805d | 95 | TFT.locate(0,0); |
bangbh | 5:9fc620b1378a | 96 | TFT.printf(" Application Start.\n"); |
bangbh | 5:9fc620b1378a | 97 | //Ethernet configuration |
bangbh | 5:9fc620b1378a | 98 | mbed_mac_address((char *)MAC_Addr); |
bangbh | 6:12f28bac9400 | 99 | int ret = ethernet.init(MAC_Addr); |
bangbh | 5:9fc620b1378a | 100 | if (!ret) { |
bangbh | 5:9fc620b1378a | 101 | TFT.printf(" Ethernet Initialized\n MAC: %s\n", ethernet.getMACAddress()); |
bangbh | 5:9fc620b1378a | 102 | ret = ethernet.connect(); |
bangbh | 5:9fc620b1378a | 103 | if (!ret) { |
bangbh | 5:9fc620b1378a | 104 | TFT.printf(" IP: %s\r\n MASK: %s\r\n GW: %s\r\n", |
bangbh | 5:9fc620b1378a | 105 | ethernet.getIPAddress(), ethernet.getNetworkMask(), ethernet.getGateway()); |
bangbh | 5:9fc620b1378a | 106 | } else { |
bangbh | 5:9fc620b1378a | 107 | TFT.printf(" Error ethernet.connect() - ret = %d\r\n", ret); |
bangbh | 5:9fc620b1378a | 108 | exit(0); |
bangbh | 5:9fc620b1378a | 109 | } |
bangbh | 5:9fc620b1378a | 110 | } else { |
bangbh | 5:9fc620b1378a | 111 | TFT.printf(" Error ethernet.init() - ret = %d\r\n", ret); |
bangbh | 5:9fc620b1378a | 112 | exit(0); |
bangbh | 5:9fc620b1378a | 113 | } |
neilt6 | 0:407dafce805d | 114 | TFT.cls(); |
bangbh | 6:12f28bac9400 | 115 | basicDisplay(); |
bangbh | 6:12f28bac9400 | 116 | wait(20); |
bangbh | 6:12f28bac9400 | 117 | weatherDisplay(); |
bangbh | 5:9fc620b1378a | 118 | while(1) |
bangbh | 5:9fc620b1378a | 119 | { |
bangbh | 5:9fc620b1378a | 120 | } |
bangbh | 5:9fc620b1378a | 121 | //point p; |
bangbh | 6:12f28bac9400 | 122 | // d |
bangbh | 5:9fc620b1378a | 123 | // while(1) |
bangbh | 5:9fc620b1378a | 124 | // { |
bangbh | 5:9fc620b1378a | 125 | // TFT.getPixel(p); |
bangbh | 5:9fc620b1378a | 126 | // TFT.locate(0,100); |
bangbh | 5:9fc620b1378a | 127 | // TFT.printf("X: %6d, Y: %6d",p.x,p.y); |
bangbh | 5:9fc620b1378a | 128 | // } |
bangbh | 5:9fc620b1378a | 129 | // TFT.printf("msg : %s\r\n",get_msg); |
bangbh | 5:9fc620b1378a | 130 | // if(!ret) |
bangbh | 5:9fc620b1378a | 131 | // { |
bangbh | 5:9fc620b1378a | 132 | // TFT.printf("\r\nPage fetched successfully - read %d characters\r\n", strlen(str)); |
bangbh | 5:9fc620b1378a | 133 | // TFT.printf("Result: %s\r\n", str); |
bangbh | 5:9fc620b1378a | 134 | // } |
bangbh | 5:9fc620b1378a | 135 | // else |
bangbh | 5:9fc620b1378a | 136 | // { |
bangbh | 5:9fc620b1378a | 137 | // TFT.printf("Error - ret = %d - HTTP return code = %d\n", ret, http.getHTTPResponseCode()); |
bangbh | 5:9fc620b1378a | 138 | // } |
bangbh | 5:9fc620b1378a | 139 | // wait(20); |
bangbh | 5:9fc620b1378a | 140 | // } |
bangbh | 5:9fc620b1378a | 141 | |
neilt6 | 0:407dafce805d | 142 | } |
bangbh | 6:12f28bac9400 | 143 | |
bangbh | 6:12f28bac9400 | 144 | void SndPlay(int TrackNumber) |
bangbh | 6:12f28bac9400 | 145 | { |
bangbh | 6:12f28bac9400 | 146 | char tempBuffer[50]; |
bangbh | 6:12f28bac9400 | 147 | sprintf(tempBuffer,"play,%04d,$",TrackNumber); |
bangbh | 6:12f28bac9400 | 148 | sound.printf("%s",tempBuffer); |
bangbh | 6:12f28bac9400 | 149 | pc.printf("%s",tempBuffer); |
bangbh | 6:12f28bac9400 | 150 | } |
bangbh | 6:12f28bac9400 | 151 | |
bangbh | 6:12f28bac9400 | 152 | void SndVol(unsigned char updn) |
bangbh | 6:12f28bac9400 | 153 | { |
bangbh | 6:12f28bac9400 | 154 | if(updn) |
bangbh | 6:12f28bac9400 | 155 | sound.printf("vol+$"); |
bangbh | 6:12f28bac9400 | 156 | else |
bangbh | 6:12f28bac9400 | 157 | sound.printf("vol-$"); |
bangbh | 6:12f28bac9400 | 158 | } |
bangbh | 6:12f28bac9400 | 159 | |
bangbh | 6:12f28bac9400 | 160 | void basicDisplay(void) |
bangbh | 6:12f28bac9400 | 161 | { |
bangbh | 6:12f28bac9400 | 162 | TFT.locate(0,80); |
bangbh | 6:12f28bac9400 | 163 | TFT.set_font((unsigned char*) Neu42x35); |
bangbh | 6:12f28bac9400 | 164 | TFT.printf(" 15.08.09\n"); |
bangbh | 6:12f28bac9400 | 165 | TFT.printf(" 21:08\n\n"); |
bangbh | 6:12f28bac9400 | 166 | TFT.set_font((unsigned char*) Arial28x28); |
bangbh | 6:12f28bac9400 | 167 | TFT.printf(" 29'C 57/100"); |
bangbh | 6:12f28bac9400 | 168 | } |
bangbh | 6:12f28bac9400 | 169 | |
bangbh | 6:12f28bac9400 | 170 | void weatherDisplay(void) |
bangbh | 6:12f28bac9400 | 171 | { |
bangbh | 6:12f28bac9400 | 172 | TFT.background(White); |
bangbh | 6:12f28bac9400 | 173 | TFT.foreground(Black); |
bangbh | 6:12f28bac9400 | 174 | TFT.cls(); |
bangbh | 6:12f28bac9400 | 175 | int ret=0; |
bangbh | 6:12f28bac9400 | 176 | char str[8192]; |
bangbh | 6:12f28bac9400 | 177 | char get_msg[256]= ""; |
bangbh | 6:12f28bac9400 | 178 | char *CurrentAddr=0; |
bangbh | 6:12f28bac9400 | 179 | kmaWid kwid[5]; |
bangbh | 6:12f28bac9400 | 180 | |
bangbh | 6:12f28bac9400 | 181 | HTTPClient http; |
bangbh | 6:12f28bac9400 | 182 | sprintf(get_msg,"http://www.kma.go.kr/wid/queryDFS.jsp?gridx=60&gridy=127"); |
bangbh | 6:12f28bac9400 | 183 | ret = http.get(get_msg, str, sizeof(str),0); |
bangbh | 6:12f28bac9400 | 184 | char tempBufferForParser[50]; |
bangbh | 6:12f28bac9400 | 185 | |
bangbh | 6:12f28bac9400 | 186 | for(int i = 0 ; i < 5 ; i++) |
bangbh | 6:12f28bac9400 | 187 | { |
bangbh | 6:12f28bac9400 | 188 | sprintf(tempBufferForParser,"<data seq=\"%d\">",i); |
bangbh | 6:12f28bac9400 | 189 | CurrentAddr = strstr(str,tempBufferForParser); |
bangbh | 6:12f28bac9400 | 190 | CurrentAddr = strstr(CurrentAddr,"<hour>"); |
bangbh | 6:12f28bac9400 | 191 | if((*(CurrentAddr+7)) == '<'){ |
bangbh | 6:12f28bac9400 | 192 | kwid[i].hour[0] = *(CurrentAddr+6); |
bangbh | 6:12f28bac9400 | 193 | kwid[i].hour[1] = 0; |
bangbh | 6:12f28bac9400 | 194 | kwid[i].hour[2] = 0; |
bangbh | 6:12f28bac9400 | 195 | } |
bangbh | 6:12f28bac9400 | 196 | else{ |
bangbh | 6:12f28bac9400 | 197 | kwid[i].hour[0] = *(CurrentAddr+6); |
bangbh | 6:12f28bac9400 | 198 | kwid[i].hour[1] = *(CurrentAddr+7); |
bangbh | 6:12f28bac9400 | 199 | kwid[i].hour[2] = 0; |
bangbh | 6:12f28bac9400 | 200 | } |
bangbh | 6:12f28bac9400 | 201 | pc.printf("hour:%s \r\n",kwid[i].hour); |
bangbh | 6:12f28bac9400 | 202 | CurrentAddr = strstr(CurrentAddr,"<temp>"); |
bangbh | 6:12f28bac9400 | 203 | memcpy(kwid[i].temperature,(CurrentAddr+6),4); |
bangbh | 6:12f28bac9400 | 204 | kwid[i].temperature[4]=0; |
bangbh | 6:12f28bac9400 | 205 | pc.printf("temp:%s \r\n",kwid[i].temperature); |
bangbh | 6:12f28bac9400 | 206 | CurrentAddr = strstr(CurrentAddr,"<sky>"); |
bangbh | 6:12f28bac9400 | 207 | kwid[i].sky = *(CurrentAddr+5); |
bangbh | 6:12f28bac9400 | 208 | pc.printf("sky:%c \r\n",kwid[i].sky); |
bangbh | 6:12f28bac9400 | 209 | } |
bangbh | 6:12f28bac9400 | 210 | char tempBuffer[50]; |
bangbh | 6:12f28bac9400 | 211 | sprintf(tempBuffer,"/sdc/%c.bmp",kwid[0].sky); |
bangbh | 6:12f28bac9400 | 212 | FILE *fp; |
bangbh | 6:12f28bac9400 | 213 | fp = fopen(tempBuffer,"r"); |
bangbh | 6:12f28bac9400 | 214 | TFT.cls(); |
bangbh | 6:12f28bac9400 | 215 | TFT.DrawBitmapFile(20,40,fp); |
bangbh | 6:12f28bac9400 | 216 | fclose(fp); |
bangbh | 6:12f28bac9400 | 217 | TFT.locate(0,0); |
bangbh | 6:12f28bac9400 | 218 | TFT.set_font((unsigned char*) Arial24x23); |
bangbh | 6:12f28bac9400 | 219 | TFT.printf("Seoul"); |
bangbh | 6:12f28bac9400 | 220 | TFT.set_font((unsigned char*) Neu42x35); |
bangbh | 6:12f28bac9400 | 221 | TFT.locate(0,240); |
bangbh | 6:12f28bac9400 | 222 | TFT.printf(" %s'C",kwid[0].temperature); |
bangbh | 6:12f28bac9400 | 223 | switch(kwid[0].sky) |
bangbh | 6:12f28bac9400 | 224 | { |
bangbh | 6:12f28bac9400 | 225 | case '1': |
bangbh | 6:12f28bac9400 | 226 | SndPlay(1); |
bangbh | 6:12f28bac9400 | 227 | break; |
bangbh | 6:12f28bac9400 | 228 | case '2': |
bangbh | 6:12f28bac9400 | 229 | case '3': |
bangbh | 6:12f28bac9400 | 230 | case '4': |
bangbh | 6:12f28bac9400 | 231 | SndPlay(2); |
bangbh | 6:12f28bac9400 | 232 | break; |
bangbh | 6:12f28bac9400 | 233 | case '5': |
bangbh | 6:12f28bac9400 | 234 | SndPlay(3); |
bangbh | 6:12f28bac9400 | 235 | break; |
bangbh | 6:12f28bac9400 | 236 | case '6': |
bangbh | 6:12f28bac9400 | 237 | case '7': |
bangbh | 6:12f28bac9400 | 238 | SndPlay(4); |
bangbh | 6:12f28bac9400 | 239 | break; |
bangbh | 6:12f28bac9400 | 240 | default: |
bangbh | 6:12f28bac9400 | 241 | break; |
bangbh | 6:12f28bac9400 | 242 | } |
bangbh | 6:12f28bac9400 | 243 | } |