Mappeoppgave 1. / Mbed 2 deprecated Mappeoppgave2-teraterm_funksjon

Dependencies:   mbed

Committer:
mortenc
Date:
Tue Mar 24 09:03:38 2015 +0000
Revision:
1:67ff37605839
Parent:
0:33e3deecd2b1
.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mortenc 0:33e3deecd2b1 1 #include "mbed.h"
mortenc 0:33e3deecd2b1 2 Serial pc(USBTX, USBRX);
mortenc 0:33e3deecd2b1 3
mortenc 0:33e3deecd2b1 4 DigitalOut transistor1(p21);
mortenc 0:33e3deecd2b1 5 DigitalOut transistor2(p22);
mortenc 0:33e3deecd2b1 6 DigitalOut transistor3(p23);
mortenc 0:33e3deecd2b1 7 DigitalOut transistor1LED(LED1);
mortenc 0:33e3deecd2b1 8 DigitalOut transistor2LED(LED2);
mortenc 0:33e3deecd2b1 9 DigitalOut transistor3LED(LED3);
mortenc 0:33e3deecd2b1 10 AnalogIn batteriPort(p20);
mortenc 0:33e3deecd2b1 11
mortenc 0:33e3deecd2b1 12 enum {startet, test1, test2, test3, tomtBatteri} systemstatus;
mortenc 0:33e3deecd2b1 13
mortenc 0:33e3deecd2b1 14 Ticker testNR3;
mortenc 0:33e3deecd2b1 15
mortenc 0:33e3deecd2b1 16 void test3funksjon();
mortenc 0:33e3deecd2b1 17 void lesTegn(void);
mortenc 0:33e3deecd2b1 18 void kommandoTolker(char kommando);
mortenc 0:33e3deecd2b1 19 void Test1(int verdi);
mortenc 0:33e3deecd2b1 20 void Test2 (int verdi);
mortenc 0:33e3deecd2b1 21 void Test3 (int verdi);
mortenc 0:33e3deecd2b1 22 //void Status-batteri (int verdi);
mortenc 0:33e3deecd2b1 23 void Resett();
mortenc 0:33e3deecd2b1 24 void Stopp();
mortenc 0:33e3deecd2b1 25
mortenc 0:33e3deecd2b1 26
mortenc 0:33e3deecd2b1 27
mortenc 0:33e3deecd2b1 28 int main()
mortenc 0:33e3deecd2b1 29 {
mortenc 0:33e3deecd2b1 30 pc.attach(&lesTegn);
mortenc 0:33e3deecd2b1 31
mortenc 0:33e3deecd2b1 32 systemstatus = startet;
mortenc 0:33e3deecd2b1 33 float batterinivaa[10] = {2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5};
mortenc 0:33e3deecd2b1 34 int index = 0;
mortenc 0:33e3deecd2b1 35 float batterisnitt;
mortenc 0:33e3deecd2b1 36
mortenc 0:33e3deecd2b1 37 while(1) {
mortenc 0:33e3deecd2b1 38
mortenc 0:33e3deecd2b1 39 batterinivaa[index] = batteriPort.read() * 3.3;
mortenc 0:33e3deecd2b1 40 batterisnitt = 0;
mortenc 0:33e3deecd2b1 41 for (int i = 0; i < 10; i++)
mortenc 0:33e3deecd2b1 42 {
mortenc 0:33e3deecd2b1 43 batterisnitt += batterinivaa[i];
mortenc 0:33e3deecd2b1 44 }
mortenc 0:33e3deecd2b1 45 batterisnitt = batterisnitt / 10;
mortenc 0:33e3deecd2b1 46 if (index == 9)
mortenc 0:33e3deecd2b1 47 index = 0;
mortenc 0:33e3deecd2b1 48 else
mortenc 0:33e3deecd2b1 49 index++;
mortenc 0:33e3deecd2b1 50
mortenc 0:33e3deecd2b1 51 if (batterisnitt <= 1.8)
mortenc 0:33e3deecd2b1 52 {
mortenc 0:33e3deecd2b1 53 printf("Batterinivaa for lavt. Avslutter testing\n\r");
mortenc 0:33e3deecd2b1 54 Stopp();
mortenc 0:33e3deecd2b1 55 systemstatus = tomtBatteri; //egentlig unødvendig repetisjon av komando i void Stopp()
mortenc 0:33e3deecd2b1 56 }
mortenc 0:33e3deecd2b1 57 wait(0.5);
mortenc 0:33e3deecd2b1 58 }
mortenc 0:33e3deecd2b1 59 }
mortenc 0:33e3deecd2b1 60
mortenc 0:33e3deecd2b1 61 void lesTegn(void)
mortenc 0:33e3deecd2b1 62 {
mortenc 0:33e3deecd2b1 63 char s = pc.getc();
mortenc 0:33e3deecd2b1 64 kommandoTolker(s);
mortenc 0:33e3deecd2b1 65 }
mortenc 0:33e3deecd2b1 66
mortenc 0:33e3deecd2b1 67 void kommandoTolker(char kommando)
mortenc 0:33e3deecd2b1 68
mortenc 0:33e3deecd2b1 69 {
mortenc 0:33e3deecd2b1 70 if(kommando == 'b'||kommando=='B') {
mortenc 0:33e3deecd2b1 71 printf("B ble skrevet inn\n\r");
mortenc 0:33e3deecd2b1 72 printf("Status-bateri: %f\n\r", batteriPort.read()*3.3);
mortenc 0:33e3deecd2b1 73
mortenc 0:33e3deecd2b1 74 } else if(kommando == 'h'|| kommando == 'H') {
mortenc 0:33e3deecd2b1 75 printf("Hjelp:\n\r");
mortenc 0:33e3deecd2b1 76 printf("Skriv inn tall fra 1-3 for tester.\n\r");
mortenc 0:33e3deecd2b1 77 printf("Skriv inn R eller r for aa resette anlegget.\n\r");
mortenc 0:33e3deecd2b1 78 printf("Skriv inn B eller b for aa faa batter-status.\n\r");
mortenc 0:33e3deecd2b1 79 printf("H ble skrevet inn\n\r");
mortenc 0:33e3deecd2b1 80
mortenc 0:33e3deecd2b1 81 }
mortenc 0:33e3deecd2b1 82
mortenc 0:33e3deecd2b1 83 else if(kommando == '1')
mortenc 0:33e3deecd2b1 84 {
mortenc 0:33e3deecd2b1 85 if (systemstatus == startet) {
mortenc 0:33e3deecd2b1 86 printf("Test 1 startet\n\r");
mortenc 0:33e3deecd2b1 87 Test1(1);
mortenc 0:33e3deecd2b1 88 systemstatus = test1;
mortenc 0:33e3deecd2b1 89 }
mortenc 0:33e3deecd2b1 90 else if (systemstatus == tomtBatteri)
mortenc 0:33e3deecd2b1 91 printf("Batteriet har for lite strom til aa utfore en test\n\r");
mortenc 0:33e3deecd2b1 92 else
mortenc 0:33e3deecd2b1 93 printf("En test paagaar allerede\n\r");
mortenc 0:33e3deecd2b1 94 }
mortenc 0:33e3deecd2b1 95
mortenc 0:33e3deecd2b1 96 else if(kommando =='2')
mortenc 0:33e3deecd2b1 97 {
mortenc 0:33e3deecd2b1 98 if (systemstatus == startet) {
mortenc 0:33e3deecd2b1 99 printf("Test 2 startet\n\r");
mortenc 0:33e3deecd2b1 100 Test2(1);
mortenc 0:33e3deecd2b1 101 systemstatus = test2;
mortenc 0:33e3deecd2b1 102 }
mortenc 0:33e3deecd2b1 103 else if (systemstatus == tomtBatteri)
mortenc 0:33e3deecd2b1 104 printf("Batteriet har for lite strom til aa utfore en test\n\r");
mortenc 0:33e3deecd2b1 105 else
mortenc 0:33e3deecd2b1 106 printf("En test paagaar allerede\n\r");
mortenc 0:33e3deecd2b1 107 }
mortenc 0:33e3deecd2b1 108
mortenc 0:33e3deecd2b1 109 else if(kommando =='3')
mortenc 0:33e3deecd2b1 110 {
mortenc 0:33e3deecd2b1 111 if (systemstatus == startet)
mortenc 0:33e3deecd2b1 112 {
mortenc 0:33e3deecd2b1 113 printf("Test 3 startet\n\r");
mortenc 0:33e3deecd2b1 114 Test3(1);
mortenc 0:33e3deecd2b1 115 systemstatus = test3;
mortenc 0:33e3deecd2b1 116 }
mortenc 0:33e3deecd2b1 117 else if (systemstatus == tomtBatteri)
mortenc 0:33e3deecd2b1 118 printf("Batteriet har for lite strom til aa utfore en test\n\r");
mortenc 0:33e3deecd2b1 119 else
mortenc 0:33e3deecd2b1 120 printf("En test paagaar allerede\n\r");
mortenc 0:33e3deecd2b1 121 }
mortenc 0:33e3deecd2b1 122
mortenc 0:33e3deecd2b1 123 else if(kommando=='r'||kommando=='R') {
mortenc 0:33e3deecd2b1 124 printf("Anlegger blir naa resatt\n\r");
mortenc 0:33e3deecd2b1 125 Resett();
mortenc 0:33e3deecd2b1 126
mortenc 0:33e3deecd2b1 127 } else
mortenc 0:33e3deecd2b1 128 printf ("Ugyldig komando: trykk \"h\" for hjelp\n\r");
mortenc 0:33e3deecd2b1 129 }
mortenc 0:33e3deecd2b1 130
mortenc 0:33e3deecd2b1 131 void Resett()
mortenc 0:33e3deecd2b1 132 {
mortenc 0:33e3deecd2b1 133 systemstatus = startet;
mortenc 0:33e3deecd2b1 134 transistor1 = 0;
mortenc 0:33e3deecd2b1 135 transistor1LED = 0;
mortenc 0:33e3deecd2b1 136 transistor2 = 0;
mortenc 0:33e3deecd2b1 137 transistor2LED = 0;
mortenc 0:33e3deecd2b1 138 transistor3 = 0;
mortenc 0:33e3deecd2b1 139 transistor3LED = 0;
mortenc 0:33e3deecd2b1 140 testNR3.detach();
mortenc 0:33e3deecd2b1 141 }
mortenc 0:33e3deecd2b1 142
mortenc 0:33e3deecd2b1 143 void Stopp()
mortenc 0:33e3deecd2b1 144 {
mortenc 0:33e3deecd2b1 145 systemstatus = tomtBatteri;
mortenc 0:33e3deecd2b1 146 transistor1 = 0;
mortenc 0:33e3deecd2b1 147 transistor1LED = 0;
mortenc 0:33e3deecd2b1 148 transistor2 = 0;
mortenc 0:33e3deecd2b1 149 transistor2LED = 0;
mortenc 0:33e3deecd2b1 150 transistor3 = 0;
mortenc 0:33e3deecd2b1 151 transistor3LED = 0;
mortenc 0:33e3deecd2b1 152 }
mortenc 0:33e3deecd2b1 153
mortenc 0:33e3deecd2b1 154 void Test1(int verdi)
mortenc 0:33e3deecd2b1 155 {
mortenc 0:33e3deecd2b1 156 transistor1LED = verdi;
mortenc 0:33e3deecd2b1 157 transistor1 = verdi;
mortenc 0:33e3deecd2b1 158 }
mortenc 0:33e3deecd2b1 159 void Test2 (int verdi)
mortenc 0:33e3deecd2b1 160 {
mortenc 0:33e3deecd2b1 161 transistor2LED = verdi;
mortenc 0:33e3deecd2b1 162 transistor2 = verdi;
mortenc 0:33e3deecd2b1 163 }
mortenc 0:33e3deecd2b1 164
mortenc 0:33e3deecd2b1 165 void Test3 (int verdi)
mortenc 0:33e3deecd2b1 166 {
mortenc 1:67ff37605839 167 testNR3.attach(&test3funksjon, 120.0);
mortenc 0:33e3deecd2b1 168 }
mortenc 0:33e3deecd2b1 169
mortenc 0:33e3deecd2b1 170 void test3funksjon ()
mortenc 0:33e3deecd2b1 171 {
mortenc 0:33e3deecd2b1 172
mortenc 1:67ff37605839 173 transistor1LED = !transistor1LED;
mortenc 1:67ff37605839 174 transistor2LED = !transistor2LED;
mortenc 0:33e3deecd2b1 175 transistor3LED = !transistor3LED;
mortenc 0:33e3deecd2b1 176 transistor1 = !transistor1;
mortenc 0:33e3deecd2b1 177 transistor2 = !transistor2;
mortenc 0:33e3deecd2b1 178 transistor3 = !transistor3;
mortenc 0:33e3deecd2b1 179 }
mortenc 0:33e3deecd2b1 180
mortenc 0:33e3deecd2b1 181
mortenc 0:33e3deecd2b1 182
mortenc 0:33e3deecd2b1 183