Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Ultralydsensor by
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 }
Generated on Fri Jul 22 2022 13:06:33 by
1.7.2
