Mappeoppgave 1. / Mbed 2 deprecated Mappeoppgave2-teraterm_funksjon

Dependencies:   mbed

main.cpp

Committer:
mortenc
Date:
2015-03-24
Revision:
1:67ff37605839
Parent:
0:33e3deecd2b1

File content as of revision 1:67ff37605839:

#include "mbed.h"
Serial pc(USBTX, USBRX);

DigitalOut transistor1(p21);
DigitalOut transistor2(p22);
DigitalOut transistor3(p23);
DigitalOut transistor1LED(LED1);
DigitalOut transistor2LED(LED2);
DigitalOut transistor3LED(LED3);
AnalogIn batteriPort(p20);

enum {startet, test1, test2, test3, tomtBatteri} systemstatus;

Ticker testNR3;

void test3funksjon();
void lesTegn(void);
void kommandoTolker(char kommando);
void Test1(int verdi);
void Test2 (int verdi);
void Test3 (int verdi);
//void Status-batteri (int verdi);
void Resett();
void Stopp();



int main()
{
    pc.attach(&lesTegn);
    
    systemstatus = startet;
    float batterinivaa[10] = {2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5};
    int index = 0;
    float batterisnitt;
    
    while(1) {
        
        batterinivaa[index] = batteriPort.read() * 3.3;
        batterisnitt = 0;
        for (int i = 0; i < 10; i++)
        {
            batterisnitt += batterinivaa[i];
        }
        batterisnitt = batterisnitt / 10;
        if (index == 9)
            index = 0;
        else
            index++;
        
        if (batterisnitt <= 1.8)
        {
            printf("Batterinivaa for lavt. Avslutter testing\n\r");
            Stopp();
            systemstatus = tomtBatteri; //egentlig unødvendig repetisjon av komando i void Stopp()
        }
        wait(0.5);
    }
}

void lesTegn(void)
{
    char s = pc.getc();
    kommandoTolker(s);
}

void kommandoTolker(char kommando)

{
    if(kommando == 'b'||kommando=='B') {
        printf("B ble skrevet inn\n\r");
        printf("Status-bateri: %f\n\r", batteriPort.read()*3.3);

    } else if(kommando == 'h'|| kommando == 'H') {
        printf("Hjelp:\n\r");
        printf("Skriv inn tall fra 1-3 for tester.\n\r");
        printf("Skriv inn R eller r for aa resette anlegget.\n\r");
        printf("Skriv inn B eller b for aa faa batter-status.\n\r");
        printf("H ble skrevet inn\n\r");

    } 
    
    else if(kommando == '1') 
    {
        if (systemstatus == startet) {
            printf("Test 1 startet\n\r");
            Test1(1);
            systemstatus = test1; 
        }
        else if (systemstatus == tomtBatteri) 
            printf("Batteriet har for lite strom til aa utfore en test\n\r");
        else
            printf("En test paagaar allerede\n\r");
    } 
    
    else if(kommando =='2') 
    {
        if (systemstatus == startet) {
            printf("Test 2 startet\n\r");
            Test2(1);
            systemstatus = test2; 
        }
        else if (systemstatus == tomtBatteri) 
            printf("Batteriet har for lite strom til aa utfore en test\n\r");
        else
            printf("En test paagaar allerede\n\r");
    } 

    else if(kommando =='3') 
    {
        if (systemstatus == startet) 
        {
            printf("Test 3 startet\n\r");
            Test3(1);
            systemstatus = test3; 
        }
        else if (systemstatus == tomtBatteri) 
            printf("Batteriet har for lite strom til aa utfore en test\n\r");
        else
            printf("En test paagaar allerede\n\r");
    }

    else if(kommando=='r'||kommando=='R') {
        printf("Anlegger blir naa resatt\n\r");
        Resett();

    } else
        printf ("Ugyldig komando: trykk \"h\" for hjelp\n\r");
}

void Resett()
{
    systemstatus = startet;
    transistor1 = 0;
    transistor1LED = 0;
    transistor2 = 0;
    transistor2LED = 0;
    transistor3 = 0;
    transistor3LED = 0;
    testNR3.detach();
}

void Stopp()
{
    systemstatus = tomtBatteri;
    transistor1 = 0;
    transistor1LED = 0;
    transistor2 = 0;
    transistor2LED = 0;
    transistor3 = 0;
    transistor3LED = 0;
}

void Test1(int verdi)
{
    transistor1LED = verdi;
    transistor1 = verdi;
}
void Test2 (int verdi)
{
    transistor2LED = verdi;
    transistor2 = verdi;
}

void Test3 (int verdi)
{
    testNR3.attach(&test3funksjon, 120.0);
}

void test3funksjon ()
{
    
    transistor1LED = !transistor1LED;
    transistor2LED = !transistor2LED;
    transistor3LED = !transistor3LED;
    transistor1 = !transistor1;
    transistor2 = !transistor2;
    transistor3 = !transistor3;
}