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);
        }

    }
}