a

Dependencies:   HTTPClient SDFileSystemA SeeedStudioTFTv2 TFT_fonts WIZnet_Library mbed

Fork of Seeed_TFT_Touch_Shield by Bohyun Bang

Committer:
bangbh
Date:
Sat Aug 15 21:14:53 2015 +0000
Revision:
6:12f28bac9400
Parent:
5:9fc620b1378a
A

Who changed what in which revision?

UserRevisionLine numberNew 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 }