Websocket demo for app board by C. Styles with updated libraries. DHCP service and a network cable is required.
Dependencies: C12832 EthernetInterface HTTPServer LM75B MMA7660 WebSocketClient mbed-rtos mbed
Fork of app-board-Ethernet-Websocket by
main.cpp@4:bcc028e40b63, 2014-05-22 (annotated)
- Committer:
- geekymartian
- Date:
- Thu May 22 14:51:50 2014 +0000
- Revision:
- 4:bcc028e40b63
- Parent:
- 3:26f41c921c2d
First publish
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
samux | 2:1fae595547d5 | 1 | #include "mbed.h" |
samux | 2:1fae595547d5 | 2 | #include "EthernetInterface.h" |
geekymartian | 4:bcc028e40b63 | 3 | #include "C12832.h" |
samux | 2:1fae595547d5 | 4 | #include "Websocket.h" |
samux | 2:1fae595547d5 | 5 | #include "MMA7660.h" |
samux | 2:1fae595547d5 | 6 | #include "LM75B.h" |
samux | 2:1fae595547d5 | 7 | |
samux | 2:1fae595547d5 | 8 | // accelerometer |
samux | 2:1fae595547d5 | 9 | MMA7660 acc(p28, p27); |
samux | 2:1fae595547d5 | 10 | |
samux | 2:1fae595547d5 | 11 | // temperature sensor |
samux | 2:1fae595547d5 | 12 | LM75B tmp(p28,p27); |
samux | 2:1fae595547d5 | 13 | |
geekymartian | 4:bcc028e40b63 | 14 | // rgb led |
geekymartian | 4:bcc028e40b63 | 15 | PwmOut r (p23); |
geekymartian | 4:bcc028e40b63 | 16 | PwmOut g (p24); |
geekymartian | 4:bcc028e40b63 | 17 | PwmOut b (p25); |
geekymartian | 4:bcc028e40b63 | 18 | |
geekymartian | 4:bcc028e40b63 | 19 | // lcd |
geekymartian | 4:bcc028e40b63 | 20 | C12832 lcd(p5, p7, p6, p8, p11); |
geekymartian | 4:bcc028e40b63 | 21 | |
geekymartian | 4:bcc028e40b63 | 22 | // speaker |
geekymartian | 4:bcc028e40b63 | 23 | DigitalIn fire(p14); |
geekymartian | 4:bcc028e40b63 | 24 | PwmOut spkr(p26); |
geekymartian | 4:bcc028e40b63 | 25 | |
geekymartian | 4:bcc028e40b63 | 26 | // led |
samux | 2:1fae595547d5 | 27 | DigitalOut l1(LED1); |
samux | 2:1fae595547d5 | 28 | |
samux | 2:1fae595547d5 | 29 | int main() { |
samux | 2:1fae595547d5 | 30 | char json_str[100]; |
samux | 2:1fae595547d5 | 31 | |
geekymartian | 4:bcc028e40b63 | 32 | for(float i = 0.0; i < 1.0 ; i += 0.001) { |
geekymartian | 4:bcc028e40b63 | 33 | float p = 3 * i; |
geekymartian | 4:bcc028e40b63 | 34 | r = 1.0 - ((p < 1.0) ? 1.0 - p : (p > 2.0) ? p - 2.0 : 0.0); |
geekymartian | 4:bcc028e40b63 | 35 | g = 1.0 - ((p < 1.0) ? p : (p > 2.0) ? 0.0 : 2.0 - p); |
geekymartian | 4:bcc028e40b63 | 36 | b = 1.0 - ((p < 1.0) ? 0.0 : (p > 2.0) ? 3.0 - p : p - 1.0); ; |
geekymartian | 4:bcc028e40b63 | 37 | wait (0.01); |
geekymartian | 4:bcc028e40b63 | 38 | } |
geekymartian | 4:bcc028e40b63 | 39 | |
samux | 2:1fae595547d5 | 40 | if (acc.testConnection()) |
samux | 2:1fae595547d5 | 41 | l1 = 1; |
samux | 2:1fae595547d5 | 42 | |
samux | 2:1fae595547d5 | 43 | EthernetInterface eth; |
samux | 2:1fae595547d5 | 44 | eth.init(); //Use DHCP |
4180_1 | 3:26f41c921c2d | 45 | wait(2); |
4180_1 | 3:26f41c921c2d | 46 | eth.connect(60000); |
samux | 2:1fae595547d5 | 47 | printf("IP Address is %s\n\r", eth.getIPAddress()); |
samux | 2:1fae595547d5 | 48 | |
samux | 2:1fae595547d5 | 49 | // See the output on http://sockets.mbed.org/app-board/viewer |
geekymartian | 4:bcc028e40b63 | 50 | // you need to specify a channel! otherwise this shit won't work! |
geekymartian | 4:bcc028e40b63 | 51 | // "the /ws is important!" |
geekymartian | 4:bcc028e40b63 | 52 | Websocket ws("ws://192.168.0.101:8001/ws"); |
samux | 2:1fae595547d5 | 53 | ws.connect(); |
geekymartian | 4:bcc028e40b63 | 54 | char recv[50]; |
geekymartian | 4:bcc028e40b63 | 55 | lcd.printf("SF1 Dev Week, here we go!"); |
geekymartian | 4:bcc028e40b63 | 56 | ws.send(json_str); |
samux | 2:1fae595547d5 | 57 | while (1) { |
samux | 2:1fae595547d5 | 58 | // create json string with acc/tmp data |
geekymartian | 4:bcc028e40b63 | 59 | //sprintf(json_str, "{\"id\":\"geekymartianboard\",\"ax\":%d,\"ay\":%d,\"az\":%d, \"tmp\":%d}", (int)(acc.x()*360), (int)(acc.y()*360), (int)(acc.z()*360), (int)tmp.read()); |
samux | 2:1fae595547d5 | 60 | |
samux | 2:1fae595547d5 | 61 | // send str |
geekymartian | 4:bcc028e40b63 | 62 | //ws.send(json_str); |
geekymartian | 4:bcc028e40b63 | 63 | |
geekymartian | 4:bcc028e40b63 | 64 | wait(5.0); |
samux | 2:1fae595547d5 | 65 | |
geekymartian | 4:bcc028e40b63 | 66 | if(ws.read(recv)) { |
geekymartian | 4:bcc028e40b63 | 67 | printf(recv); |
geekymartian | 4:bcc028e40b63 | 68 | lcd.printf("Received a message:\n"); |
geekymartian | 4:bcc028e40b63 | 69 | lcd.printf(recv); |
geekymartian | 4:bcc028e40b63 | 70 | |
geekymartian | 4:bcc028e40b63 | 71 | for (float i=2000.0; i<10000.0; i+=100) { |
geekymartian | 4:bcc028e40b63 | 72 | spkr.period(1.0/i); |
geekymartian | 4:bcc028e40b63 | 73 | spkr=0.5; |
geekymartian | 4:bcc028e40b63 | 74 | wait(0.1); |
geekymartian | 4:bcc028e40b63 | 75 | } |
geekymartian | 4:bcc028e40b63 | 76 | spkr=0.0; |
geekymartian | 4:bcc028e40b63 | 77 | while(!fire) {} |
geekymartian | 4:bcc028e40b63 | 78 | |
geekymartian | 4:bcc028e40b63 | 79 | } |
samux | 2:1fae595547d5 | 80 | } |
samux | 0:11bb5faeb547 | 81 | } |