meter_controller_223_LED
Dependencies: EthernetInterface mbed-rtos mbed
main.cpp
- Committer:
- shindo
- Date:
- 2012-11-08
- Revision:
- 2:c1d4ea63ab89
- Parent:
- 1:95407c4ef69e
- Child:
- 3:82cf87db7ef4
File content as of revision 2:c1d4ea63ab89:
#include "mbed.h" #include "mbed.h" #include "EthernetInterface.h" #define ECHO_SERVER_PORT 10373 DigitalOut digitalclock_colon (p17); DigitalOut digitalclock (p18); DigitalOut signal_LED_L (p19); DigitalOut signal_LED_R (p20); PwmOut meter_LED_outside (p21); PwmOut meter_LED_inside (p22); PwmOut needle_LED (p23); PwmOut range_LED_1 (p24); PwmOut range_LED_2 (p25); PwmOut range_LED_3 (p26); int main() { EthernetInterface eth; eth.init(); //Use DHCP eth.connect(); printf("IP Address is %s\n", eth.getIPAddress()); TCPSocketServer server; server.bind(ECHO_SERVER_PORT); server.listen(); meter_LED_outside.period_ms (1); while (1) { TCPSocketConnection client; server.accept(client); client.set_blocking(false, 1500); printf("Client connected %s\n", client.get_address()); char buffer[256]; while (true) { int n = client.receive(buffer, sizeof(buffer)); int mode = (buffer[0] - 'A'); if (n > 0) { int target = (buffer[1] - '0') * 100 + (buffer[2] - '0') * 10 + (buffer[3] - '0'); switch (mode) { case 0: for(float p = 0.0f; p < 1.0f; p += 0.02f) { meter_LED_outside = p; wait(0.01); } for(float p = 0.0f; p < 1.0f; p += 0.02f) { meter_LED_inside = p; wait(0.01); } for(float p = 0.0f; p < 1.0f; p += 0.02f) { range_LED_3 = p; wait(0.01); } for(float p = 0.0f; p < 1.0f; p += 0.02f) { range_LED_2 = p; wait(0.01); } for(float p = 0.0f; p < 1.0f; p += 0.02f) { range_LED_1 = p; wait(0.01); } for(float p = 0.0f; p < 1.0f; p += 0.02f) { needle_LED = p; wait(0.01); } for(float p = 1.0f; p > 0.0f; p -= 0.02f) { meter_LED_outside = p; meter_LED_inside = p; range_LED_3 = p; range_LED_2 = p; range_LED_1 = p; needle_LED = p; wait(0.01); } signal_LED_L = 1; signal_LED_R = 1; wait (0.5); signal_LED_L = 0; signal_LED_R = 0; wait (0.5); signal_LED_L = 1; signal_LED_R = 1; wait (0.5); signal_LED_L = 0; signal_LED_R = 0; wait (0.5); for(float p = 0.0f; p < 0.2f; p += 0.01f) { meter_LED_outside = p; meter_LED_inside = p; // range_LED_3 = p; range_LED_2 = p; //range_LED_1 = p; needle_LED = (p + 0.8); wait(0.05); } digitalclock = 1; break; case 1: digitalclock = 0; digitalclock_colon = 0; for(float p = 0.8f; p > 0.0f; p -= 0.01f) { meter_LED_outside = p; meter_LED_inside = p; range_LED_3 = p; range_LED_2 = p; range_LED_1 = p; needle_LED = p; wait(0.01); } break; } if (buffer[0] == 'F') { meter_LED_outside = (target / 10.0)-0.2; } else if (buffer[0] == 'G') { meter_LED_inside = (target / 10.0)-0.2; } } digitalclock_colon = 1; wait (0.5); digitalclock_colon = 0; //wait (0.25); } } }