W7500 OLED
Dependencies: mbed WIZ_TCC_W7500OLED WIZnetInterface
Diff: main.cpp
- Revision:
- 2:19f4e538d1cd
- Parent:
- 1:feb9f603f054
diff -r feb9f603f054 -r 19f4e538d1cd main.cpp --- a/main.cpp Tue Oct 31 01:11:54 2017 +0000 +++ b/main.cpp Tue Nov 20 06:27:41 2018 +0000 @@ -1,167 +1,60 @@ #include "mbed.h" -#include "EthernetInterface.h" #include "Adafruit_SSD1306.h" // W7500 onboard LED & Init DigitalOut gled(LED2,0); - // I2C Class I2C i2c(PA_10,PA_9); // OLED Class Adafruit_SSD1306_I2c gOled(i2c,NC,0x78,64,128); -// Declare Ethernet Class -EthernetInterface eth; - -// Declare TCP Connection Class -TCPSocketConnection sock; - - - int main() { - int phy_link; - printf("Wait a second...\r\n"); - - //--------- Have to modify the mac address------------- - uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0xff, 0xff, 0x25}; - - eth.init(mac_addr); //Use DHCP - - // phy link - do{ - phy_link = eth.ethernet_link(); - printf("..."); - wait(2); - }while(!phy_link); - printf("\r\n"); - - eth.connect(); - - printf("IP Address is %s\r\n\r\n", eth.getIPAddress()); - printf("MASK Address is %s\r\n\r\n", eth.getNetworkMask()); - printf("GATEWAY Address is %s\r\n\r\n", eth.getGateway()); - printf("MAC Address is %s\r\n\r\n", eth.getMACAddress()); + + uint16_t cnt=0; + uint16_t time =0, minute =58, second =0; - while(1){ - // TCP socket connect to openweather server - //TCPSocketConnection sock; - char http_addr[]="api.openweathermap.org"; - int port=80; - - //connect - /////////////////////////////////////////////////////////// - sock.connect(http_addr, port); - //////////////////////////////////////////////////////////// - - // GET method, to request weather forecast - char http_cmd[] = "GET /data/2.5/weather?q=London,uk&appid=a0ca47dd7f6066404629b3e1ad728981 HTTP/1.0\n\n"; - - - //send data - /////////////////////////////////////////////////////// - sock.send(http_cmd, sizeof(http_cmd)-1); - /////////////////////////////////////////////////////// - - // get data into buffer - char buffer[2048]; - int ret; - while (true) { - // break the while(), when don't received tha data - // save the data to buffer - // save the return value to ret - //receive data - ////////////////////////////////////////////////////// - ret = sock.receive(buffer, sizeof(buffer)-1); - if (ret <= 0) - break; - //////////////////////////////////////////////////// - buffer[ret] = '\0'; - printf("Received %d chars from server: %s\n", ret, buffer); - } - printf("\r\n\r\n"); - - // parsing current date, weather, city, tempurature - char *date; - char *weather; - char *city; - char *temper; - - char cur_date[17] = {0}; - char weather_con[15] = {0}; - char city_name[10] = {0}; - char temper_data[3] = {0}; - - int temp; - int num100, num10, num1; - - //parding date - date = strstr(buffer, "Date"); - for(int x=0;x<17;x++){ - cur_date[x] = date[x+6]; - } - - // parsing weather condition - weather = strstr(buffer, "main"); - for(int i=0; i<15;i++){ - weather_con[i] = weather[i+7]; - if(weather_con[i] == 34){ - weather_con[i] = 0; - break; + gOled.begin(); + gOled.printf("%ux%u \nHellow World\r\n", gOled.width(), gOled.height()); + gOled.display(); + gOled.setTextCursor(0,0); + wait(1.0); + + while(1) + { + gOled.setTextSize(2); + gOled.clearDisplay(); + gOled.printf("%02d:%02d:%02d\n\n", time,minute,second); + if(minute==59) + { + if(second == 59) + { + time++; + minute = 0; + second = 0; + } + else + { + second++; } } - - // parsing city name - city = strstr(buffer, "name"); - for(int j=0; j<10;j++){ - city_name[j] = city[j+7]; - if(city_name[j] == 34){ - city_name[j] = 0; - break; + else + { + if(second == 59) + { + minute++; + second = 0; + } + else + { + second++; } } - - //parsing current tempurature - temper = strstr(buffer, "temp"); - for(int k=0; k<3;k++){ - temper_data[k] = temper[k+6]; - } - - //kelvin to celius converter - num100 = temper_data[0]- 48; - num10 = temper_data[1] - 48; - num1 = temper_data[2]- 48; - temp = (num100*100 + num10*10 + num1) - 273; - - // Debug message - printf("city name : %s\r\n", city_name); - printf("weather : %s\r\n", weather_con); - printf("temperature : %d\r\n\r\n", temp); - - // OLED Display - gOled.begin(); - gOled.clearDisplay(); - gOled.printf("%s\n\n", cur_date); - gOled.printf("City : %s\n", city_name); - gOled.printf("Weather : %s\n", weather_con); - gOled.printf("Temper : %d\n", temp); gOled.display(); - gOled.setTextCursor(0,0); - - - - //close - ////////////////////////////////////////////////// - sock.close(); - eth.disconnect(); - ////////////////////////////////////////////////// - /* - * everytime in delay, request weather forecast - */ - wait(20.0); - - }; + gOled.setTextCursor(0,0); + wait(1.0); + } } \ No newline at end of file