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