Initial Commit
Dependencies: mbed HC05 QEI MODSERIAL SWSPI mbed-rtos
Drivers/ultrasonic/ultrasonic.cpp@1:1da89c13dfa1, 2014-10-11 (annotated)
- Committer:
- Throwbot
- Date:
- Sat Oct 11 03:53:27 2014 +0000
- Revision:
- 1:1da89c13dfa1
- Child:
- 2:0f80c8a1c236
Ultrasonic seperate class
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Throwbot | 1:1da89c13dfa1 | 1 | #include "ultrasonic.h" |
Throwbot | 1:1da89c13dfa1 | 2 | #include "math.h" |
Throwbot | 1:1da89c13dfa1 | 3 | int arraysize =10; |
Throwbot | 1:1da89c13dfa1 | 4 | int rangevalue[10]; |
Throwbot | 1:1da89c13dfa1 | 5 | int modE; |
Throwbot | 1:1da89c13dfa1 | 6 | void isort(int *a, int n) |
Throwbot | 1:1da89c13dfa1 | 7 | { |
Throwbot | 1:1da89c13dfa1 | 8 | // *a is an array pointer function |
Throwbot | 1:1da89c13dfa1 | 9 | for (int i = 1; i < n; ++i) { |
Throwbot | 1:1da89c13dfa1 | 10 | int j = a[i]; |
Throwbot | 1:1da89c13dfa1 | 11 | int k; |
Throwbot | 1:1da89c13dfa1 | 12 | for (k = i - 1; (k >= 0) && (j < a[k]); k--) { |
Throwbot | 1:1da89c13dfa1 | 13 | a[k + 1] = a[k]; |
Throwbot | 1:1da89c13dfa1 | 14 | } |
Throwbot | 1:1da89c13dfa1 | 15 | a[k + 1] = j; |
Throwbot | 1:1da89c13dfa1 | 16 | } |
Throwbot | 1:1da89c13dfa1 | 17 | } |
Throwbot | 1:1da89c13dfa1 | 18 | |
Throwbot | 1:1da89c13dfa1 | 19 | //Mode function, returning the mode or median. |
Throwbot | 1:1da89c13dfa1 | 20 | int mode(int *x,int n) |
Throwbot | 1:1da89c13dfa1 | 21 | { |
Throwbot | 1:1da89c13dfa1 | 22 | int number = x[0]; |
Throwbot | 1:1da89c13dfa1 | 23 | int mode = number; |
Throwbot | 1:1da89c13dfa1 | 24 | int mode2=number; |
Throwbot | 1:1da89c13dfa1 | 25 | int count = 1; |
Throwbot | 1:1da89c13dfa1 | 26 | int countMode = 1; |
Throwbot | 1:1da89c13dfa1 | 27 | |
Throwbot | 1:1da89c13dfa1 | 28 | for (int i=1; i<n; i++) { |
Throwbot | 1:1da89c13dfa1 | 29 | if (x[i] == number) { |
Throwbot | 1:1da89c13dfa1 | 30 | // count occurrences of the current number |
Throwbot | 1:1da89c13dfa1 | 31 | count++; |
Throwbot | 1:1da89c13dfa1 | 32 | } else { |
Throwbot | 1:1da89c13dfa1 | 33 | // now this is a different number |
Throwbot | 1:1da89c13dfa1 | 34 | if (count > countMode) { |
Throwbot | 1:1da89c13dfa1 | 35 | countMode = count; // mode is the biggest ocurrences |
Throwbot | 1:1da89c13dfa1 | 36 | mode = number; |
Throwbot | 1:1da89c13dfa1 | 37 | mode2=number; |
Throwbot | 1:1da89c13dfa1 | 38 | } else if(count == countMode && count!=1) { |
Throwbot | 1:1da89c13dfa1 | 39 | mode2=number; |
Throwbot | 1:1da89c13dfa1 | 40 | } else if(countMode==1) { |
Throwbot | 1:1da89c13dfa1 | 41 | mode=x[((n-1)/2)]; |
Throwbot | 1:1da89c13dfa1 | 42 | mode2=x[((n+1)/2)]; |
Throwbot | 1:1da89c13dfa1 | 43 | } |
Throwbot | 1:1da89c13dfa1 | 44 | count = 1; // reset count for the new number |
Throwbot | 1:1da89c13dfa1 | 45 | number = x[i]; |
Throwbot | 1:1da89c13dfa1 | 46 | } |
Throwbot | 1:1da89c13dfa1 | 47 | } |
Throwbot | 1:1da89c13dfa1 | 48 | return ((mode+mode2)/2); |
Throwbot | 1:1da89c13dfa1 | 49 | } |
Throwbot | 1:1da89c13dfa1 | 50 | int sensorvalue(AnalogIn pin) |
Throwbot | 1:1da89c13dfa1 | 51 | { |
Throwbot | 1:1da89c13dfa1 | 52 | //int sum=0; |
Throwbot | 1:1da89c13dfa1 | 53 | for(int i=0; i<arraysize; i++) { |
Throwbot | 1:1da89c13dfa1 | 54 | rangevalue[i]= (pin.read()*5*102.54*2.54*10); |
Throwbot | 1:1da89c13dfa1 | 55 | //sum=sum+rangevalue[i]; |
Throwbot | 1:1da89c13dfa1 | 56 | } |
Throwbot | 1:1da89c13dfa1 | 57 | //return sum/100; |
Throwbot | 1:1da89c13dfa1 | 58 | isort(rangevalue,arraysize); |
Throwbot | 1:1da89c13dfa1 | 59 | //modE = mode(rangevalue,arraysize); |
Throwbot | 1:1da89c13dfa1 | 60 | modE=rangevalue[arraysize/2]; |
Throwbot | 1:1da89c13dfa1 | 61 | return modE; |
Throwbot | 1:1da89c13dfa1 | 62 | } |