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: HTTPClient SDFileSystemA SeeedStudioTFTv2 TFT_fonts WIZnet_Library mbed
Fork of Seeed_TFT_Touch_Shield by
Revision 6:12f28bac9400, committed 2015-08-15
- Comitter:
- bangbh
- Date:
- Sat Aug 15 21:14:53 2015 +0000
- Parent:
- 5:9fc620b1378a
- Commit message:
- A
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MySeeedStudioTFTv2.cpp Sat Aug 15 21:14:53 2015 +0000
@@ -0,0 +1,141 @@
+/* mbed library for resistive touch pads
+ * uses 4 pins - 2 IO and 2 Analog
+
+ * c 2011 Peter Drescher - DC2PD
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+
+#include "mbed.h"
+#include "MySeeedStudioTFTv2.h"
+
+//#define TFT_DEBUG
+
+#ifdef TFT_DEBUG
+extern Serial pc;
+#endif
+
+
+MySeeedStudioTFTv2::MySeeedStudioTFTv2(PinName xp, PinName xm, PinName yp, PinName ym,
+ PinName mosi, PinName miso, PinName sclk,
+ PinName csTft, PinName dcTft, PinName blTft,
+ PinName csSd) : SeeedStudioTFTv2(xp,xm,yp,ym,mosi,miso,sclk,csTft,dcTft,blTft,csSd)
+{
+ SeeedStudioTFTv2::SPI_TFT_ILI9341::_spi.frequency(24000000);
+ SeeedStudioTFTv2::SDFileSystem::_spi.frequency(24000000);
+}
+
+int MySeeedStudioTFTv2::DrawBitmapFile(unsigned char x, unsigned char y, FILE * fp)
+{
+
+ char img[3*240];
+ uint32_t imgsize = 0;
+ uint32_t offset = 0;
+ uint32_t imgw = 0;
+ uint32_t imgh = 0;
+ char colbits = 0;
+ char compress = 0;
+ uint16_t col;
+
+ int i, j;
+
+ if(fp == NULL) return -1;
+ if(fgetc(fp) != 0x42) return -2;
+ if(fgetc(fp) != 0x4D) return -2;
+
+ for(i = 0; i < 4; i++)
+ {
+ imgsize += (((uint32_t)fgetc(fp)) << i*8);
+ }
+#ifdef TFT_DEBUG
+ pc.printf("BMP SIZE:%d\r\n",imgsize);
+#endif
+ fseek(fp,4,SEEK_CUR);
+ for(i = 0; i < 4; i++)
+ {
+ offset += (((uint32_t)fgetc(fp)) << i*8);
+ }
+#ifdef TFT_DEBUG
+ pc.printf("BMP OFFSET:%d\r\n",offset);
+#endif
+ fseek(fp,4,SEEK_CUR);
+ for(i = 0; i < 4; i++)
+ {
+ imgw += (((uint32_t)fgetc(fp)) << i*8);
+ }
+ if(imgw > 240) return -3;
+
+ for(i = 0; i < 4; i++)
+ {
+ imgh += (((uint32_t)fgetc(fp)) << i*8);
+ }
+ if(imgh > 320) return -3;
+
+ fseek(fp,2,SEEK_CUR);
+ colbits = fgetc(fp);
+ //if(colbits != 16 || colbits != 24) return -4;
+ fgetc(fp);
+ if((compress=fgetc(fp)) != 0)
+ {
+ #ifdef TFT_DEBUG
+ pc.printf("Not supported compress : %d\r\n",compress);
+ #endif
+ return -4;
+ }
+
+
+#ifdef TFT_DEBUG
+ pc.printf("RESOL : %d col, %d X %d",colbits,imgw,imgh);
+#endif
+
+ fseek(fp, offset, SEEK_SET);
+ for (j = imgh-1; j >= 0; j--) //Lines bottoms up
+ {
+ fread(img,sizeof(char),imgw*3,fp);
+ window(x, j+y, imgw, 1);
+ window(x, j+y, imgw, 1);
+ wr_cmd(0x2C); // send pixel
+ #ifndef TARGET_KL25Z // 16 Bit SPI
+ SeeedStudioTFTv2::SPI_TFT_ILI9341::_spi.format(16,3);
+ #endif // switch to 16 bit Mode 3
+
+ for(i = 0; i < imgw; i++)
+ {
+/* if(colbits == 16)
+ {
+ col = (uint16_t)img[2*i+1];
+ col <<= 8;
+ col += (uint16_t)img[2*i];
+ }
+ else if(colbits == 24) */
+ {
+ col = RGB((uint16_t)img[3*i+2],(uint16_t)img[3*i+1], (uint16_t)img[3*i]);
+ }
+ #ifdef TFT_DEBUG
+ //pc.printf("RGB(%d): (%d,%d,%d) -> %04X\r\n ",i,img[3*i+2],img[3*i+1],img[3*i],col);
+ #endif
+
+ #ifdef TAGET_KL25Z
+ SeeedStudioTFTv2::SPI_TFT_ILI9341::_spi.write((char)(col>>8));
+ SeeedStudioTFTv2::SPI_TFT_ILI9341::_spi.write((char)col);
+ #else
+ SeeedStudioTFTv2::SPI_TFT_ILI9341::_spi.write(col);
+ #endif
+ }
+ SeeedStudioTFTv2::SPI_TFT_ILI9341::_cs = 1;
+ #ifndef TARGET_KL25Z // 16 Bit SPI
+ SeeedStudioTFTv2::SPI_TFT_ILI9341::_spi.format(8,3);
+ #endif
+
+ }
+ WindowMax();
+
+ return 0;
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/MySeeedStudioTFTv2.h Sat Aug 15 21:14:53 2015 +0000
@@ -0,0 +1,47 @@
+/* mbed library for touchscreen connected to 4 mbed pins
+ * derive from SPI_TFT lib
+ * Copyright (c) 2011 Peter Drescher - DC2PD
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef MYMBED_TOUCH_H
+#define MYMBED_TOUCH_H
+
+#include "mbed.h"
+
+#include "SeeedStudioTFTv2.h"
+#ifndef USE_SDCARD
+#error "Shoud be defined USE_SDCARD in SeeedStudioTFTv2.0.h
+#endif
+
+
+class MySeeedStudioTFTv2 : public SeeedStudioTFTv2
+{
+public:
+ /** create a TFT with touch object connected to the pins:
+ *
+ * @param pin xp resistiv touch x+
+ * @param pin xm resistiv touch x-
+ * @param pin yp resistiv touch y+
+ * @param pin ym resistiv touch y-
+ * @param mosi,miso,sclk SPI connection to TFT
+ * @param cs pin connected to CS of display
+ * @param reset pin connected to RESET of display
+ * based on my SPI_TFT lib
+ */
+ MySeeedStudioTFTv2(PinName xp, PinName xm, PinName yp, PinName ym,
+ PinName mosi, PinName miso, PinName sclk,
+ PinName csTft, PinName dcTft, PinName blTft,
+ PinName csSd);
+
+ int DrawBitmapFile(unsigned char x, unsigned char y, FILE * fp);
+};
+
+#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SDFileSystem.lib Sat Aug 15 21:14:53 2015 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/users/bangbh/code/SDFileSystemA/#ae027b79c156
--- a/SeeedStudioTFTv2.lib Sat Aug 15 05:12:06 2015 +0000 +++ b/SeeedStudioTFTv2.lib Sat Aug 15 21:14:53 2015 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/users/bangbh/code/SeeedStudioTFTv2/#2b2929d22714 +https://developer.mbed.org/users/MidnightCow/code/SeeedStudioTFTv2/#1ed8ed0c17cd
--- a/main.cpp Sat Aug 15 05:12:06 2015 +0000
+++ b/main.cpp Sat Aug 15 21:14:53 2015 +0000
@@ -29,10 +29,6 @@
//HW Touch lcd library
#include "SeeedStudioTFTv2.h"
-//HW&SW SDFilsystem library
-#include "SDFileSystem.h"
-SDFileSystem sd(D11,D12,D13,D4, "sd");
-
//SW Font library
#include "Arial12x12.h"
#include "Arial24x23.h"
@@ -41,13 +37,17 @@
//SW HTTPClient library
#include "HTTPClient.h"
+//
+#include "SDFileSystem.h"
+//SDFileSystem sd(D11,D12,D13,D4, "sdc");
/*Port define and initialize*/
//Define W5500 port and initialization
SPI spi(D11,D12,D13);
-WIZnetInterface ethernet(&spi,D10,D0);
+WIZnetInterface ethernet(&spi,D10,D15);
+#include "MySeeedStudioTFTv2.h"
//Define TFT LCD port and initialization
#define PIN_XP A3
@@ -61,22 +61,30 @@
#define PIN_DC_TFT D6
#define PIN_BL_TFT D7
#define PIN_CS_SD D4
-SeeedStudioTFTv2 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);
+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);
+
+#include "typedefinition.h"
//UART to USB initialization for debug message
Serial pc(USBTX, USBRX);
+Serial sound(PA_11,PA_12);
+
//Ethernet information pre definition
const char * IP_Addr = "222.98.173.249";
const char * IP_Subnet = "255.255.255.192";
const char * IP_Gateway = "222.98.173.254";
unsigned char MAC_Addr[6] = {0x00,0x08,0xDC,0x12,0x34,0x56};
+void SndPlay(int TrackNumber);
+void Sndvol(unsigned char updn);
+void basicDisplay(void);
+void weatherDisplay(void);
+
int main()
{
//Set baudrate of "U2U"
pc.baud(115200);
-
//Configure the display driver
TFT.background(Black);
TFT.foreground(White);
@@ -88,7 +96,7 @@
TFT.printf(" Application Start.\n");
//Ethernet configuration
mbed_mac_address((char *)MAC_Addr);
- int ret = ethernet.init(MAC_Addr,IP_Addr,IP_Subnet,IP_Gateway);
+ int ret = ethernet.init(MAC_Addr);
if (!ret) {
TFT.printf(" Ethernet Initialized\n MAC: %s\n", ethernet.getMACAddress());
ret = ethernet.connect();
@@ -103,48 +111,15 @@
TFT.printf(" Error ethernet.init() - ret = %d\r\n", ret);
exit(0);
}
- wait(0.5);
-
- //HTTPClient http;
-//
-// char str[8192];
-// char get_msg[256]= "";
-//
-// sprintf(get_msg,"http://www.kma.go.kr/wid/queryDFS.jsp?gridx=59&gridy=127");
-//
-// ret = http.get(get_msg, str, sizeof(str),0);
-//
-// if(ret == HTTP_OK)
-// {
-// TFT.printf(" HTTP_OK\r\n");
-// }
-// else
-// {
-// TFT.printf("error code: %d\r\n",ret);
-// }
-// char *startAddr;
-// startAddr = strstr(str,"<tm>");
-// if(startAddr == 0)
-// {
-// TFT.printf("There is no data.\r\n");
-// }
-// else
-// {
-// strncpy(get_msg,startAddr+4,12);
-// *(get_msg+12) = 0;
-// TFT.printf("%s",get_msg);
-// }
TFT.cls();
- FILE *fp;
- fp = fopen("/sd/Weather_Icons_02.bmp","r");
- fseek(fp, 0, SEEK_SET);
- TFT.BMP_16(100,100,fp);
- printf("1234567890");
+ basicDisplay();
+ wait(20);
+ weatherDisplay();
while(1)
{
}
//point p;
-//
+// d
// while(1)
// {
// TFT.getPixel(p);
@@ -165,3 +140,104 @@
// }
}
+
+void SndPlay(int TrackNumber)
+{
+ char tempBuffer[50];
+ sprintf(tempBuffer,"play,%04d,$",TrackNumber);
+ sound.printf("%s",tempBuffer);
+ pc.printf("%s",tempBuffer);
+}
+
+void SndVol(unsigned char updn)
+{
+ if(updn)
+ sound.printf("vol+$");
+ else
+ sound.printf("vol-$");
+}
+
+void basicDisplay(void)
+{
+ TFT.locate(0,80);
+ TFT.set_font((unsigned char*) Neu42x35);
+ TFT.printf(" 15.08.09\n");
+ TFT.printf(" 21:08\n\n");
+ TFT.set_font((unsigned char*) Arial28x28);
+ TFT.printf(" 29'C 57/100");
+}
+
+void weatherDisplay(void)
+{
+ TFT.background(White);
+ TFT.foreground(Black);
+ TFT.cls();
+ int ret=0;
+ char str[8192];
+ char get_msg[256]= "";
+ char *CurrentAddr=0;
+ kmaWid kwid[5];
+
+ HTTPClient http;
+ sprintf(get_msg,"http://www.kma.go.kr/wid/queryDFS.jsp?gridx=60&gridy=127");
+ ret = http.get(get_msg, str, sizeof(str),0);
+ char tempBufferForParser[50];
+
+ for(int i = 0 ; i < 5 ; i++)
+ {
+ sprintf(tempBufferForParser,"<data seq=\"%d\">",i);
+ CurrentAddr = strstr(str,tempBufferForParser);
+ CurrentAddr = strstr(CurrentAddr,"<hour>");
+ if((*(CurrentAddr+7)) == '<'){
+ kwid[i].hour[0] = *(CurrentAddr+6);
+ kwid[i].hour[1] = 0;
+ kwid[i].hour[2] = 0;
+ }
+ else{
+ kwid[i].hour[0] = *(CurrentAddr+6);
+ kwid[i].hour[1] = *(CurrentAddr+7);
+ kwid[i].hour[2] = 0;
+ }
+ pc.printf("hour:%s \r\n",kwid[i].hour);
+ CurrentAddr = strstr(CurrentAddr,"<temp>");
+ memcpy(kwid[i].temperature,(CurrentAddr+6),4);
+ kwid[i].temperature[4]=0;
+ pc.printf("temp:%s \r\n",kwid[i].temperature);
+ CurrentAddr = strstr(CurrentAddr,"<sky>");
+ kwid[i].sky = *(CurrentAddr+5);
+ pc.printf("sky:%c \r\n",kwid[i].sky);
+ }
+ char tempBuffer[50];
+ sprintf(tempBuffer,"/sdc/%c.bmp",kwid[0].sky);
+ FILE *fp;
+ fp = fopen(tempBuffer,"r");
+ TFT.cls();
+ TFT.DrawBitmapFile(20,40,fp);
+ fclose(fp);
+ TFT.locate(0,0);
+ TFT.set_font((unsigned char*) Arial24x23);
+ TFT.printf("Seoul");
+ TFT.set_font((unsigned char*) Neu42x35);
+ TFT.locate(0,240);
+ TFT.printf(" %s'C",kwid[0].temperature);
+ switch(kwid[0].sky)
+ {
+ case '1':
+ SndPlay(1);
+ break;
+ case '2':
+ case '3':
+ case '4':
+ SndPlay(2);
+ break;
+ case '5':
+ SndPlay(3);
+ break;
+ case '6':
+ case '7':
+ SndPlay(4);
+ break;
+ default:
+ break;
+ }
+}
\ No newline at end of file
--- a/mbed.bld Sat Aug 15 05:12:06 2015 +0000 +++ b/mbed.bld Sat Aug 15 21:14:53 2015 +0000 @@ -1,1 +1,1 @@ -http://mbed.org/users/mbed_official/code/mbed/builds/e188a91d3eaa \ No newline at end of file +http://mbed.org/users/mbed_official/code/mbed/builds/bad568076d81 \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/typedefinition.h Sat Aug 15 21:14:53 2015 +0000
@@ -0,0 +1,6 @@
+typedef struct
+{
+ char temperature[5];
+ char sky;
+ char hour[3];
+}kmaWid;
