meter_controller_223_LED

Dependencies:   EthernetInterface mbed-rtos mbed

main.cpp

Committer:
shindo
Date:
2012-11-13
Revision:
3:82cf87db7ef4
Parent:
2:c1d4ea63ab89
Child:
4:1247fae2410a

File content as of revision 3:82cf87db7ef4:

#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 Other_range_LED (p24);
PwmOut D_range_LED (p25);
PwmOut P_range_LED (p26);

void meter_LED_outside_flashing1()
{
    meter_LED_outside = 0;
    wait_ms(100);
    meter_LED_outside = 0.8;
    wait_ms(100);
    meter_LED_outside = 0;
    wait_ms(100);
    meter_LED_outside = 0.8;
    wait_ms(100);
    meter_LED_outside = 0;
    wait_ms(100);
    meter_LED_outside = 0.8;
}
void meter_LED_outside_flashing2()
{
    meter_LED_outside = 0;
    wait_ms(100);
    meter_LED_outside = 0.8;
    wait_ms(100);
    meter_LED_outside = 0;
    wait_ms(100);
    meter_LED_outside = 0.8;
    wait_ms(100);
    meter_LED_outside = 0;
    wait_ms(100);
    meter_LED_outside = 0.8;
    wait_ms(100);
    meter_LED_outside = 0;
    wait_ms(100);
    meter_LED_outside = 0.8;
    wait_ms(100);
    meter_LED_outside = 0;
    wait_ms(100);
    meter_LED_outside = 0.8;
}

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) {
                            P_range_LED = p;
                            wait(0.01);
                        }
                        for(float p = 0.0f; p < 1.0f; p += 0.02f) {
                            D_range_LED = p;
                            wait(0.01);
                        }
                        for(float p = 0.0f; p < 1.0f; p += 0.02f) {
                            Other_range_LED = 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;
                            P_range_LED = p;
                            D_range_LED = p;
                            Other_range_LED = 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 (1);

                        for(float p = 0.0f; p < 0.2f; p += 0.01f) {
                            meter_LED_outside = p;
                            meter_LED_inside = p;
                            P_range_LED = 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;
                            P_range_LED = p;
                            D_range_LED = p;
                            Other_range_LED = p;
                            needle_LED = p;
                            wait(0.01);
                        }
                        break;
                }
                if (buffer[0] == 'P') {
                    meter_LED_outside = ((target / 10.0)-0.2);
                } else if (buffer[0] == 'Q') {
                    meter_LED_inside = ((target / 10.0)-0.2);
                } else if (buffer[0] == 'R') {
                    needle_LED = ((target / 10.0)-0.2);
                } else if (buffer[0] == 'C') {
                    int count_1 = 0;
                    int t = 0;
                    P_range_LED = 0;
                    D_range_LED = 1;
                    while(count_1 < 7) {
                        if (t ==0) {
                            wait(19.2);
                            meter_LED_outside_flashing1();
                        } else if (t == 1) {
                            wait_ms(2500-700);
                            meter_LED_outside_flashing1();
                        } else if (t == 2) {
                            wait_ms(2200-700);
                            meter_LED_outside_flashing1();
                        } else if (t == 3) {
                            wait_ms(2500-700);
                            meter_LED_outside_flashing1();
                        } else if (t == 4) {
                            wait_ms(4300-700);
                            meter_LED_outside_flashing2();
                        } else if (t == 5) {
                            wait_ms(4600-700);
                            meter_LED_outside_flashing2();
                        } else if (t == 6) {
                            wait_ms(5700-700);
                            meter_LED_outside_flashing2();
                            t = 0;
                        }
                        wait_ms(200);

                        t++;
                        count_1++;
                    }
                } else if (buffer[0] == 'K') {
                    signal_LED_L = 1;
                    wait (0.5);
                    signal_LED_L = 0;
                    wait (0.5);
                    signal_LED_L = 1;
                    wait (0.5);
                    signal_LED_L = 0;
                    wait (0.5);
                    signal_LED_L = 1;
                    wait (0.5);
                    signal_LED_L = 0;
                    wait (0.5);
                    signal_LED_L = 1;
                    wait (0.5);
                    signal_LED_L = 0;
                    wait (0.5);
                    signal_LED_L = 1;
                    wait (0.5);
                    signal_LED_L = 0;
                } else if (buffer[0] == 'L') {
                    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);
                    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);
                    signal_LED_L = 1;
                    signal_LED_R = 1;
                    wait (0.5);
                    signal_LED_L = 0;
                    signal_LED_R = 0;
                } else if (buffer[0] == 'L') {
                    signal_LED_R = 1;
                    wait (0.5);
                    signal_LED_R = 0;
                    wait (0.5);
                    signal_LED_R = 1;
                    wait (0.5);
                    signal_LED_R = 0;
                    wait (0.5);
                    signal_LED_R = 1;
                    wait (0.5);
                    signal_LED_R = 0;
                    wait (0.5);
                    signal_LED_R = 1;
                    wait (0.5);
                    signal_LED_R = 0;
                    wait (0.5);
                    signal_LED_R = 1;
                    wait (0.5);
                    signal_LED_R = 0;
                }
            }
            digitalclock_colon = 1;
            wait (0.5);
            digitalclock_colon = 0;
            //wait (0.25);
        }
    }
}