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: C12832_lcd EthernetInterface SensorDataParser mbed-rtos mbed USBDevice
Fork of SensorStream_BlinkyDemo by
main.cpp@1:50e52569be43, 2013-10-28 (annotated)
- Committer:
 - dan
 - Date:
 - Mon Oct 28 03:26:09 2013 +0000
 - Revision:
 - 1:50e52569be43
 - Parent:
 - 0:a3d60f53f22f
 - Child:
 - 2:8d1e7078c230
 
Code cleanup
Who changed what in which revision?
| User | Revision | Line number | New contents of line | 
|---|---|---|---|
| dan | 0:a3d60f53f22f | 1 | #include "mbed.h" | 
| dan | 0:a3d60f53f22f | 2 | #include "EthernetInterface.h" | 
| dan | 0:a3d60f53f22f | 3 | #include "C12832_lcd.h" | 
| dan | 0:a3d60f53f22f | 4 | #include "SensorDataParser.h" | 
| dan | 0:a3d60f53f22f | 5 | #include <math.h> | 
| dan | 0:a3d60f53f22f | 6 | |
| dan | 0:a3d60f53f22f | 7 | static EthernetInterface eth; | 
| dan | 0:a3d60f53f22f | 8 | static C12832_LCD lcd; | 
| dan | 0:a3d60f53f22f | 9 | static Serial pc(USBTX, USBRX); | 
| dan | 0:a3d60f53f22f | 10 | |
| dan | 0:a3d60f53f22f | 11 | DigitalOut led_left(LED1); | 
| dan | 0:a3d60f53f22f | 12 | DigitalOut led_up(LED2); | 
| dan | 0:a3d60f53f22f | 13 | DigitalOut led_down(LED3); | 
| dan | 0:a3d60f53f22f | 14 | DigitalOut led_right(LED4); | 
| dan | 0:a3d60f53f22f | 15 | |
| dan | 0:a3d60f53f22f | 16 | // Configuration | 
| dan | 0:a3d60f53f22f | 17 | #define SERVER_PORT 5555 | 
| dan | 0:a3d60f53f22f | 18 | #define MAX_BUF_SIZE 512 | 
| dan | 0:a3d60f53f22f | 19 | #define SENSE_DELTA 0.1 | 
| dan | 0:a3d60f53f22f | 20 | |
| dan | 0:a3d60f53f22f | 21 | static void ethernet_init() { | 
| dan | 0:a3d60f53f22f | 22 | eth.init(); | 
| dan | 0:a3d60f53f22f | 23 | if(eth.connect(30000) == 0) | 
| dan | 0:a3d60f53f22f | 24 | pc.printf("Connect OK\n\r"); | 
| dan | 0:a3d60f53f22f | 25 | |
| dan | 0:a3d60f53f22f | 26 | lcd.locate(0,0); | 
| dan | 0:a3d60f53f22f | 27 | lcd.printf("IP:%s", eth.getIPAddress()); | 
| dan | 0:a3d60f53f22f | 28 | |
| dan | 0:a3d60f53f22f | 29 | pc.printf("IP Address: %s\n\r", eth.getIPAddress()); | 
| dan | 0:a3d60f53f22f | 30 | } | 
| dan | 0:a3d60f53f22f | 31 | |
| dan | 0:a3d60f53f22f | 32 | static void main_loop() { | 
| dan | 0:a3d60f53f22f | 33 | UDPSocket server; | 
| dan | 0:a3d60f53f22f | 34 | Endpoint client; | 
| dan | 0:a3d60f53f22f | 35 | char buffer[MAX_BUF_SIZE]; | 
| dan | 0:a3d60f53f22f | 36 | SENSOR_DATA pd; | 
| dan | 0:a3d60f53f22f | 37 | |
| dan | 0:a3d60f53f22f | 38 | server.bind(SERVER_PORT); | 
| dan | 0:a3d60f53f22f | 39 | while (true) { | 
| dan | 1:50e52569be43 | 40 | // receive udp packet | 
| dan | 0:a3d60f53f22f | 41 | int n = server.receiveFrom(client, buffer, sizeof(buffer) - 1); | 
| dan | 1:50e52569be43 | 42 | if (n == sizeof(buffer) - 1) continue; | 
| dan | 1:50e52569be43 | 43 | |
| dan | 0:a3d60f53f22f | 44 | buffer[n] = 0; | 
| dan | 0:a3d60f53f22f | 45 | |
| dan | 1:50e52569be43 | 46 | // parse the packet | 
| dan | 0:a3d60f53f22f | 47 | if (parse_sensor_packet(buffer, &pd) == 0) continue; | 
| dan | 0:a3d60f53f22f | 48 | |
| dan | 1:50e52569be43 | 49 | // accelerometer x axis | 
| dan | 0:a3d60f53f22f | 50 | if (pd.ax > 0) { | 
| dan | 0:a3d60f53f22f | 51 | led_left = 0; | 
| dan | 0:a3d60f53f22f | 52 | led_right = fabs(pd.ax) * 2; | 
| dan | 0:a3d60f53f22f | 53 | } else { | 
| dan | 0:a3d60f53f22f | 54 | led_left = fabs(pd.ax) * 2; | 
| dan | 0:a3d60f53f22f | 55 | led_right = 0; | 
| dan | 0:a3d60f53f22f | 56 | } | 
| dan | 0:a3d60f53f22f | 57 | |
| dan | 1:50e52569be43 | 58 | // accelerometer y axis | 
| dan | 0:a3d60f53f22f | 59 | if (pd.ay > 0) { | 
| dan | 0:a3d60f53f22f | 60 | led_up = 0; | 
| dan | 0:a3d60f53f22f | 61 | led_down = fabs(pd.ay) * 2; | 
| dan | 0:a3d60f53f22f | 62 | } else { | 
| dan | 0:a3d60f53f22f | 63 | led_up = fabs(pd.ay) * 2; | 
| dan | 0:a3d60f53f22f | 64 | led_down = 0; | 
| dan | 0:a3d60f53f22f | 65 | } | 
| dan | 0:a3d60f53f22f | 66 | } | 
| dan | 0:a3d60f53f22f | 67 | } | 
| dan | 0:a3d60f53f22f | 68 | |
| dan | 0:a3d60f53f22f | 69 | int main() { | 
| dan | 0:a3d60f53f22f | 70 | lcd.cls(); | 
| dan | 0:a3d60f53f22f | 71 | ethernet_init(); | 
| dan | 0:a3d60f53f22f | 72 | main_loop(); | 
| dan | 0:a3d60f53f22f | 73 | } | 
