Test

Dependencies:   SRF02 SRF05 mbed

Fork of Prosjekt_2 by HIOF Programmering

Committer:
leonardene
Date:
Fri Mar 11 13:00:24 2016 +0000
Revision:
2:d8543bd496a0
Parent:
1:f3c6c8f735a5
Child:
3:1eb0ad70f562
Bedre organisert, alt i caser, kort main

Who changed what in which revision?

UserRevisionLine numberNew contents of line
leonardene 0:bf27900bdc22 1 #include "mbed.h"
leonardene 1:f3c6c8f735a5 2 #include "SRF05.h"
leonardene 1:f3c6c8f735a5 3
leonardene 1:f3c6c8f735a5 4 Serial pc(USBTX, USBRX);
leonardene 1:f3c6c8f735a5 5 Serial bt(p13, p14);
leonardene 0:bf27900bdc22 6
leonardene 1:f3c6c8f735a5 7 DigitalOut led (LED1);
leonardene 1:f3c6c8f735a5 8 DigitalIn imp (p12);
leonardene 1:f3c6c8f735a5 9 SRF05 srf(p9, p10);
leonardene 1:f3c6c8f735a5 10 DigitalOut bar[] = {NC, p21, p22, p23, p24, p25, p26, p27, p28, p29, p30};
leonardene 1:f3c6c8f735a5 11
leonardene 1:f3c6c8f735a5 12 Timer t;
leonardene 1:f3c6c8f735a5 13
leonardene 2:d8543bd496a0 14 void meny();
leonardene 1:f3c6c8f735a5 15 void avstand(float);
leonardene 1:f3c6c8f735a5 16 void detektor(float);
leonardene 1:f3c6c8f735a5 17 void hastighet(float);
leonardene 0:bf27900bdc22 18
leonardene 1:f3c6c8f735a5 19 int main()
leonardene 1:f3c6c8f735a5 20 {
leonardene 2:d8543bd496a0 21 while(1) {
leonardene 2:d8543bd496a0 22 meny();
leonardene 2:d8543bd496a0 23 }
leonardene 2:d8543bd496a0 24 }
leonardene 2:d8543bd496a0 25
leonardene 2:d8543bd496a0 26 void meny()
leonardene 2:d8543bd496a0 27 {
leonardene 1:f3c6c8f735a5 28 float y;
leonardene 0:bf27900bdc22 29 while(1) {
leonardene 1:f3c6c8f735a5 30 pc.printf("\nValg Meny\n");
leonardene 1:f3c6c8f735a5 31 switch (getchar()) {
leonardene 1:f3c6c8f735a5 32 case('1'): {
leonardene 2:d8543bd496a0 33 y = srf.read();
leonardene 2:d8543bd496a0 34 avstand (y);
leonardene 1:f3c6c8f735a5 35 break;
leonardene 1:f3c6c8f735a5 36 }
leonardene 1:f3c6c8f735a5 37 case('2'): {
leonardene 1:f3c6c8f735a5 38 y = srf.read();
leonardene 2:d8543bd496a0 39 detektor(y);
leonardene 1:f3c6c8f735a5 40 break;
leonardene 1:f3c6c8f735a5 41 }
leonardene 1:f3c6c8f735a5 42 case('3'): {
leonardene 2:d8543bd496a0 43 y = srf.read();
leonardene 1:f3c6c8f735a5 44 hastighet(y);
leonardene 1:f3c6c8f735a5 45 break;
leonardene 2:d8543bd496a0 46 }
leonardene 1:f3c6c8f735a5 47 default:
leonardene 1:f3c6c8f735a5 48 pc.printf("\n ERROR \n");
leonardene 1:f3c6c8f735a5 49 }
leonardene 0:bf27900bdc22 50 }
leonardene 2:d8543bd496a0 51
leonardene 0:bf27900bdc22 52 }
leonardene 1:f3c6c8f735a5 53
leonardene 1:f3c6c8f735a5 54
leonardene 1:f3c6c8f735a5 55 void avstand(float y)
leonardene 1:f3c6c8f735a5 56 {
leonardene 2:d8543bd496a0 57 while (1) {
leonardene 2:d8543bd496a0 58 for(int x = 1; x <= 10; x++) {
leonardene 2:d8543bd496a0 59 (x*40 < y) ? bar[x] = 1 : bar[x] = 0;
leonardene 2:d8543bd496a0 60 }
leonardene 2:d8543bd496a0 61 pc.printf("\nAvstand er:\t%.2fcm\n", y);
leonardene 2:d8543bd496a0 62 if (pc.readable()) {
leonardene 2:d8543bd496a0 63 if(getchar() == 'p')
leonardene 2:d8543bd496a0 64 break;
leonardene 2:d8543bd496a0 65 }
leonardene 2:d8543bd496a0 66 wait_ms (50);
leonardene 1:f3c6c8f735a5 67 }
leonardene 1:f3c6c8f735a5 68 }
leonardene 1:f3c6c8f735a5 69
leonardene 1:f3c6c8f735a5 70 void detektor(float y)
leonardene 1:f3c6c8f735a5 71 {
leonardene 2:d8543bd496a0 72 while (1) {
leonardene 2:d8543bd496a0 73 float x;
leonardene 2:d8543bd496a0 74 x = srf.read();
leonardene 2:d8543bd496a0 75 (y+2 < x || y-2 > x ) ? (led = !led) : (led = 0);
leonardene 2:d8543bd496a0 76 if (pc.readable()) {
leonardene 2:d8543bd496a0 77 if(getchar() == 'p')
leonardene 2:d8543bd496a0 78 break;
leonardene 2:d8543bd496a0 79 }
leonardene 2:d8543bd496a0 80 wait_ms (50);
leonardene 2:d8543bd496a0 81 }
leonardene 1:f3c6c8f735a5 82 }
leonardene 1:f3c6c8f735a5 83
leonardene 1:f3c6c8f735a5 84 void hastighet (float y)
leonardene 1:f3c6c8f735a5 85 {
leonardene 1:f3c6c8f735a5 86 int z;
leonardene 1:f3c6c8f735a5 87 float start, stopp, bolle;
leonardene 1:f3c6c8f735a5 88 pc.printf("y = %.2fcm\n", y);
leonardene 1:f3c6c8f735a5 89 while(1) {
leonardene 1:f3c6c8f735a5 90 if (y+2 < srf.read() || y-2 > srf.read() ) {
leonardene 1:f3c6c8f735a5 91 z = 1;
leonardene 1:f3c6c8f735a5 92 start = srf.read();
leonardene 1:f3c6c8f735a5 93 t.start();
leonardene 1:f3c6c8f735a5 94 pc.printf("Starter maaling\n");
leonardene 1:f3c6c8f735a5 95 } else z = 0;
leonardene 1:f3c6c8f735a5 96
leonardene 1:f3c6c8f735a5 97 while (z == 1) {
leonardene 1:f3c6c8f735a5 98 if (t.read() > 2) {
leonardene 1:f3c6c8f735a5 99 stopp = srf.read();
leonardene 1:f3c6c8f735a5 100 bolle = start - stopp;
leonardene 1:f3c6c8f735a5 101 pc.printf("Farten er %.02fm/s\n", bolle/200);
leonardene 1:f3c6c8f735a5 102 pc.printf("Neste maaling klar om 3sek\n");
leonardene 1:f3c6c8f735a5 103 wait(3);
leonardene 1:f3c6c8f735a5 104 t.reset();
leonardene 1:f3c6c8f735a5 105 break;
leonardene 1:f3c6c8f735a5 106 } else if (srf.read() < 10) {
leonardene 1:f3c6c8f735a5 107 t.stop();
leonardene 1:f3c6c8f735a5 108 stopp = srf.read();
leonardene 1:f3c6c8f735a5 109 bolle = start - stopp;
leonardene 1:f3c6c8f735a5 110 pc.printf("Farten er %fm/s\n", bolle/(100*t.read()));
leonardene 1:f3c6c8f735a5 111 pc.printf("Neste maaling klar om 3sek\n");
leonardene 1:f3c6c8f735a5 112 wait(3);
leonardene 1:f3c6c8f735a5 113 t.reset();
leonardene 1:f3c6c8f735a5 114 break;
leonardene 1:f3c6c8f735a5 115 }
leonardene 1:f3c6c8f735a5 116 }
leonardene 2:d8543bd496a0 117 if (pc.readable()) {
leonardene 2:d8543bd496a0 118 if(getchar() == 'p')
leonardene 2:d8543bd496a0 119 break;
leonardene 2:d8543bd496a0 120 }
leonardene 2:d8543bd496a0 121 wait_ms (50);
leonardene 1:f3c6c8f735a5 122 }
leonardene 2:d8543bd496a0 123 }