Mappeoppgave 1. / Mbed 2 deprecated Mappeoppgave2-teraterm_funksjon

Dependencies:   mbed

Revision:
0:33e3deecd2b1
Child:
1:67ff37605839
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Mar 17 10:10:05 2015 +0000
@@ -0,0 +1,181 @@
+#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, 2.0);
+}
+
+void test3funksjon ()
+{
+    
+    transistor3LED = !transistor3LED;
+    transistor1 = !transistor1;
+    transistor2 = !transistor2;
+    transistor3 = !transistor3;
+}
+
+
+
+