Created libraries2

Dependencies:   mbed ultrasonic

Committer:
VegardMidt
Date:
Mon Apr 20 15:30:58 2015 +0000
Revision:
10:066af872cf0e
Parent:
7:c763b5d61dee
All code. But it won't write the average distance

Who changed what in which revision?

UserRevisionLine numberNew contents of line
VegardMidt 0:017111c9207d 1 #include "mbed.h"
VegardMidt 0:017111c9207d 2 #include "ultrasonic.h"
hebryn 1:21587a66f911 3
VegardMidt 4:ae7f8a25c748 4 PwmOut TX1(D9); // Use pin D9
VegardMidt 4:ae7f8a25c748 5 DigitalOut TX2(D8); // Use pin D8
VegardMidt 4:ae7f8a25c748 6 DigitalOut HVoff(D6); // Use pin D6
VegardMidt 4:ae7f8a25c748 7 InterruptIn signal(D7); // Use pin D7
VegardMidt 4:ae7f8a25c748 8 Timeout to1;
hebryn 3:b6f543e4508a 9 Timer t1;
hebryn 3:b6f543e4508a 10 Serial pc(SERIAL_TX, SERIAL_RX);
hebryn 1:21587a66f911 11
VegardMidt 6:0d4008544238 12 float previous = 1;
VegardMidt 7:c763b5d61dee 13 int US_count = 0;
VegardMidt 7:c763b5d61dee 14 float US_buffer[100];
VegardMidt 6:0d4008544238 15
VegardMidt 4:ae7f8a25c748 16 void TX1_send(){
VegardMidt 6:0d4008544238 17
VegardMidt 6:0d4008544238 18 previous = 1;
VegardMidt 10:066af872cf0e 19 HVoff = 1;
VegardMidt 4:ae7f8a25c748 20 TX1.period(0.0000252); // Set the period of TX1 to 25.2us (39,682kHz)
VegardMidt 4:ae7f8a25c748 21 TX1.pulsewidth(0.0000116); // Set the pulsewidth of TX1 to 11.6us (ON)
VegardMidt 10:066af872cf0e 22 wait(0.000300); // Waits 201.6us - New 300us
VegardMidt 10:066af872cf0e 23 TX1 = 1;
VegardMidt 5:b2df25183cb1 24 t1.reset();
VegardMidt 10:066af872cf0e 25 HVoff = 0;
VegardMidt 6:0d4008544238 26 to1.attach(TX1_send,0.1); // Sends for 1000us
hebryn 3:b6f543e4508a 27 }
hebryn 3:b6f543e4508a 28
VegardMidt 4:ae7f8a25c748 29
VegardMidt 4:ae7f8a25c748 30 void signal_reciev(){
VegardMidt 4:ae7f8a25c748 31
VegardMidt 7:c763b5d61dee 32 float _time = t1.read();
VegardMidt 5:b2df25183cb1 33
VegardMidt 10:066af872cf0e 34 if (_time<0.006 && _time>0.000036){
VegardMidt 6:0d4008544238 35
VegardMidt 7:c763b5d61dee 36 if (t1.read()>previous){
VegardMidt 7:c763b5d61dee 37 }
VegardMidt 7:c763b5d61dee 38 else{
VegardMidt 7:c763b5d61dee 39 previous = _time;
VegardMidt 7:c763b5d61dee 40 US_buffer[US_count] = 34613*_time/2;
VegardMidt 7:c763b5d61dee 41 pc.printf("Forste %d", US_count);
VegardMidt 7:c763b5d61dee 42 US_count++;
VegardMidt 7:c763b5d61dee 43 }
VegardMidt 5:b2df25183cb1 44 }
hebryn 3:b6f543e4508a 45 }
VegardMidt 4:ae7f8a25c748 46
VegardMidt 7:c763b5d61dee 47 float get_avg(){
VegardMidt 7:c763b5d61dee 48 signal.fall(&signal_reciev);
VegardMidt 7:c763b5d61dee 49 TX2 = 1;
VegardMidt 7:c763b5d61dee 50 TX1_send();
VegardMidt 7:c763b5d61dee 51
VegardMidt 7:c763b5d61dee 52 while(US_count<20){pc.printf("\r");}
VegardMidt 7:c763b5d61dee 53
VegardMidt 7:c763b5d61dee 54 float sum = 0;
VegardMidt 7:c763b5d61dee 55
VegardMidt 7:c763b5d61dee 56 for(int i=0;i<20;i++){
VegardMidt 7:c763b5d61dee 57
VegardMidt 7:c763b5d61dee 58 sum += US_buffer[i];
VegardMidt 7:c763b5d61dee 59 US_buffer[i] = 0;
VegardMidt 7:c763b5d61dee 60 }
VegardMidt 7:c763b5d61dee 61 US_count = 0;
VegardMidt 7:c763b5d61dee 62 return sum/20;
VegardMidt 7:c763b5d61dee 63 }
hebryn 1:21587a66f911 64 int main() {
VegardMidt 10:066af872cf0e 65 t1.start();
VegardMidt 7:c763b5d61dee 66 float nks = get_avg();
VegardMidt 10:066af872cf0e 67 pc.printf("Avg = %f\r\n",nks);
VegardMidt 7:c763b5d61dee 68
VegardMidt 4:ae7f8a25c748 69 }