Test

Dependencies:   SRF02 SRF05 mbed

Fork of Prosjekt_2 by HIOF Programmering

main.cpp

Committer:
leonardene
Date:
2016-03-11
Revision:
3:1eb0ad70f562
Parent:
2:d8543bd496a0
Child:
4:690abfca1f4d

File content as of revision 3:1eb0ad70f562:

#include "mbed.h"
#include "SRF05.h"

Serial pc(USBTX, USBRX);
Serial bt(p13, p14);

DigitalOut led (LED1);
DigitalIn imp (p12);
SRF05 srf(p9, p10);
DigitalOut bar[] = {NC, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30};

void meny();
void avstand(float);
void detektor(float);
void hastighet(float);

int main()
{
    while(1) {
        meny();
    }
}

void meny()
{
    float y;
    while(1) {
        pc.printf("\nValg Meny\n");
        switch (getchar()) {
            case('1'): {
                y = srf.read();
                avstand (y);
                break;
            }
            case('2'): {
                y = srf.read();
                detektor(y);
                break;
            }
            case('3'): {
                y = srf.read();
                hastighet(y);
                break;
            }
            default:
                pc.printf("\n ERROR \n");
        }
    }

}


void avstand(float y)
{
    while (1) {
        for(int x = 1; x <= 10; x++) {
            (x*40 < y) ?   bar[x] = 1  :   bar[x] = 0;
        }
        pc.printf("\nAvstand er:\t%.2fcm\n", y);
        if (pc.readable()) {
            if(getchar() == 'p')
                break;
        }
        wait_ms (50);
    }
}

void detektor(float y)
{
    while (1) {
        float x;
        x = srf.read();
        (y+2 < x || y-2 > x ) ? (led = !led) : (led = 0);
        if (pc.readable()) {
            if(getchar() == 'p')
                break;
        }
        wait_ms (50);
    }
}

void hastighet (float y)
{
    Timer t;
    int z;
    float start, stopp, bolle;
    pc.printf("y = %.2fcm\n", y);
    while(1) {
        if (y+2 < srf.read() || y-2 > srf.read() ) {
            z = 1;
            start = srf.read();
            t.start();
            pc.printf("Starter maaling\n");
        } else z = 0;

        while (z == 1) {
            if (t.read() > 2) {
                stopp = srf.read();
                bolle = start - stopp;
                pc.printf("Farten er %.02fm/s\n", bolle/200);
                pc.printf("Neste maaling klar om 3sek\n");
                wait(3);
                t.reset();
                break;
            } else if (srf.read() < 10) {
                t.stop();
                stopp = srf.read();
                bolle = start - stopp;
                pc.printf("Farten er %fm/s\n", bolle/(100*t.read()));
                pc.printf("Neste maaling klar om 3sek\n");
                wait(3);
                t.reset();
                break;
            }
        }
        if (pc.readable()) {
            if(getchar() == 'p')
                break;
        }
        wait_ms (50);
    }
}