Fredrik Bjørken / Mbed 2 deprecated Avstandsmaler

Dependencies:   mbed SRF05

Fork of Ultralydsensor by Fredrik Bjørken

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Brede.cpp Source File

Brede.cpp

00001 #include "mbed.h"
00002 #include "SRF05.h"
00003 
00004 #define MAX 30
00005 #define INTERVALL (MAX/10)
00006 
00007 SRF05 srf(p17, p18);
00008 DigitalOut TriggerPin(p17);  //Sender signal
00009 DigitalOut myled(LED1);
00010 DigitalIn EchoPin(p18);     //Mottar signal
00011 DigitalIn  Br(p15);
00012 BusOut bar(p21,p22,p23,p24,p25,p26,p27,p28, p29, p30);
00013 
00014 Serial pc(USBTX, USBRX);
00015 
00016 int valg;
00017 int verdi[11] = {1, 3, 7, 15, 31, 63, 127, 255, 511, 1023}; //Verdier som blir satt til bar ut av hvilken avstand objectet har.
00018 
00019 float avstand;
00020 float distance; //variable for lagring og utrening av avstand.
00021 
00022 
00023 Timer echo;   //Timer for avlesing av echosignal.
00024 //Sender ut ett trigger signal på 10us
00025 
00026 void triggerfunc()
00027 {
00028     TriggerPin = 1;
00029     wait_us(10);
00030     TriggerPin = 0;
00031 }
00032 main()
00033 {
00034     pc.printf("Tast 1 for avstandsmaaling: \n ");
00035     pc.printf("Tast 2 for bevegelsesmaaling: \n ");
00036     pc.printf("Tast 3 for hastighetsmaaling: \n ");
00037     pc.scanf("%d",&valg);
00038 
00039     int meny=valg;
00040 
00041 
00042     switch (meny) {
00043         /* Case 1 måler avstand til objektet i cm. Den blir skrivet ut på terminal og vist på baragraph. 
00044         float temp på er oprettet for å unngå at srf.read() blir kalt opp to ganger på samme linje. If-testen kontrollerer avstanden 
00045         gitt i intervallet ut av hvilken verdi i er i for-løkken. Stemmer denne if-testen blir bar satt til verdien fra arrayet verd[] 
00046         ved bruk av variabele i i for-løkken. */
00047         case 1:
00048             while(1) {
00049                 printf("Distance = %.1f\n\r", srf.read());
00050                 for(int i = 0; i < 11; i++) {
00051                     float temp = srf.read();                                         
00052                     if (temp < (MAX - INTERVALL*i) && temp > (MAX - INTERVALL*(i+1))) {
00053                         bar = verdi[i];
00054                     }
00055                 }
00056                 wait(0.05);
00057             }
00058         case 2:
00059         /* Case 2 er en bevegelses detektor, sensorer kjører først en gang for å senere lagre tiden på i en float variabel
00060         ved neste runde så blir tiden fra sensoren sammenlignet med float variabelen "tiden". Hvis de er ulike, blir det 
00061         oppdaget en bevegelse og det printes "Bevegelse" på terminal. */
00062             float tiden;
00063             while(1) {
00064                 triggerfunc();
00065                 while(!EchoPin);
00066                 echo.start();
00067                 while(EchoPin);
00068                 echo.stop();
00069                 if(EchoPin==0) {
00070                     if(tiden==!echo.read_ms()) {
00071                         pc.printf("Bevegelse \n");
00072                     }
00073                     tiden=echo.read_ms();
00074                     echo.reset();
00075                     wait(0.01);
00076                 }
00077             }
00078         case 3:
00079         /* Case 3 er en hastighetsmåler. srf.read() blir lagret i 2 float variabler, hastighet1 og hastighet2. 
00080         En timer blir satt igang for å finne tiden mellom disse avstandene som blir lagret. I float fart så blir 
00081         hastigheten utregnet ved å finne differansen mellom hastighet1 og hastighet2. og senere dividert på tiden. 
00082         Dette gir hos hastigheten til objektet. */
00083             float hastighet1;
00084             float hastighet2;
00085             float fart;
00086             Timer tid1;
00087             Timer tid2;
00088             while(1) {
00089                 tid1.start();
00090                 hastighet1=srf.read();
00091                 wait(0.1);
00092                 hastighet2=srf.read();
00093                 tid1.stop();
00094                 fart =( hastighet1-hastighet2 )/tid1.read();
00095                 printf("farten til objektet er : %.2f \n",fart);
00096                 tid1.reset();
00097             }
00098     }
00099 }