Tweeting Machine with WIZwiki-W7500 for WIZnet Academy

Dependencies:   Adafruit_GFX WIZnetInterface mbed

Fork of Tweeting_Machine_HelloWorld_WIZwiki-W7500 by Lawrence Lee

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "EthernetInterface.h"
00003 #include "Adafruit_SSD1306.h"
00004 
00005 #define TOKEN "3252156354-fG0b1utXYAg5IqeJNMSJFlenx1rgSRXm5wgk21l"
00006 //#define TOKEN "UserToken"
00007 
00008 // an SPI sub-class that provides a constructed default
00009 class I2CPreInit : public I2C
00010 {
00011 public:
00012     I2CPreInit(PinName sda, PinName scl) : I2C(sda, scl)
00013     {
00014         frequency(100000);
00015         start();
00016     };
00017 };
00018 
00019 I2CPreInit gI2C(PA_10,PA_9);
00020 Adafruit_SSD1306_I2c gOled(gI2C,NC,0x78,64,128);
00021 
00022 
00023 int main()
00024 {
00025         int phy_link;
00026         printf("Wait a second...\r\n");
00027         //--------- Have to modify the mac address-------------
00028         uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x03, 0x04, 0x22}; 
00029         
00030         EthernetInterface eth;
00031         eth.init(mac_addr); //Use DHCP
00032             
00033         eth.connect();
00034         
00035         while(1){
00036                 
00037             /* phy link */
00038             do{
00039                 phy_link = eth.ethernet_link();
00040                 printf("...");
00041                 wait(2);
00042             }while(!phy_link);
00043             printf("\r\n");
00044                  
00045             printf("IP Address is %s\r\n", eth.getIPAddress());
00046               
00047             /* TCP socket connect */
00048             TCPSocketConnection sock;
00049             sock.connect("arduino-tweet.appspot.com", 80);
00050     
00051             printf("connected\r\n\r\n");
00052             
00053             /* typing message */        
00054             printf("typing twitter message :");
00055             
00056             char* message;
00057             scanf("%s",message);   
00058             printf("%s",message);
00059             printf("\r\n\r\n");
00060             
00061             int len = strlen(message);
00062             
00063             /* data length measure */
00064             char data_len[2]={0};
00065             int ten=0;
00066             int one=0;
00067             
00068             int length = len + sizeof(TOKEN) - 1 + 14;
00069             
00070             printf("length : %d\r\n\r\n",length);
00071             
00072             ten = length/10;
00073             one = length%10;
00074             data_len[1] = one + 48;
00075             data_len[0] = ten + 48;
00076         
00077             char *cmd1 = "POST http://arduino-tweet.appspot.com/update HTTP/1.0\r\nContent-Length:";
00078             char *cmd2 = data_len;
00079             char *cmd3 = "\r\n\r\ntoken=";
00080             char *cmd4 = TOKEN;
00081             char *cmd5 = "&status=";
00082             char *cmd6 = message;
00083             char *cmd7 = "\r\n";
00084     
00085             char send_data[1024];
00086             char buffer[1024] = {0};
00087             sprintf(send_data, "%s%s%s%s%s%s%s", cmd1, cmd2, cmd3, cmd4, cmd5, cmd6, cmd7);
00088     
00089             sock.send_all(send_data, sizeof(send_data)-1);
00090     
00091             printf("%s\r\n",send_data);
00092             printf("send message done\r\n");
00093     
00094             sock.receive(buffer, sizeof(buffer)-1);
00095     
00096             printf("%s\r\n",buffer);
00097             
00098             gOled.begin();
00099             gOled.printf("%s\r\n",message);
00100             gOled.display();
00101     
00102             wait(70.0);
00103             
00104             gOled.clearDisplay();
00105             
00106             //sock.close();
00107             //eth.disconnect();
00108             
00109     };
00110 
00111 }