no thread
Dependents: 200_yotuba_21_uiChange
IRsensor.cpp@1:fe97d826508d, 2019-06-25 (annotated)
- Committer:
- skouki
- Date:
- Tue Jun 25 08:45:06 2019 +0000
- Revision:
- 1:fe97d826508d
- Parent:
- 0:d0a252247fec
- Child:
- 2:35b3dd6f7f17
v1;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
skouki | 0:d0a252247fec | 1 | #include "IRsensor.h" |
skouki | 0:d0a252247fec | 2 | |
skouki | 0:d0a252247fec | 3 | IRsensor::IRsensor(PinName pin):a_in(pin) |
skouki | 0:d0a252247fec | 4 | { |
skouki | 0:d0a252247fec | 5 | } |
skouki | 0:d0a252247fec | 6 | |
skouki | 0:d0a252247fec | 7 | float IRsensor::getInputvoltage(){ |
skouki | 0:d0a252247fec | 8 | float voltage = a_in.read()*3.3; |
skouki | 0:d0a252247fec | 9 | return voltage; |
skouki | 0:d0a252247fec | 10 | } |
skouki | 0:d0a252247fec | 11 | |
skouki | 0:d0a252247fec | 12 | float IRsensor::getDistance(int n){ |
skouki | 0:d0a252247fec | 13 | float distance_sum=0; |
skouki | 0:d0a252247fec | 14 | for(int i=0;i<n;i++){ |
skouki | 0:d0a252247fec | 15 | distance_sum += changeVtoD(getInputvoltage()); |
skouki | 0:d0a252247fec | 16 | } |
skouki | 0:d0a252247fec | 17 | return distance_sum / n; |
skouki | 0:d0a252247fec | 18 | } |
skouki | 0:d0a252247fec | 19 | |
skouki | 0:d0a252247fec | 20 | float IRsensor::changeVtoD(float voltage) |
skouki | 0:d0a252247fec | 21 | { |
skouki | 0:d0a252247fec | 22 | float distance; |
skouki | 1:fe97d826508d | 23 | if (voltage > 2.285f) { |
skouki | 1:fe97d826508d | 24 | distance = 0.0f; |
skouki | 1:fe97d826508d | 25 | } else if (voltage > 1.645f) { |
skouki | 1:fe97d826508d | 26 | distance = -7.8125f * voltage + 27.8515f; |
skouki | 1:fe97d826508d | 27 | } else if (voltage > 1.305f) { |
skouki | 1:fe97d826508d | 28 | distance = -14.7058f * voltage + 39.1911f; |
skouki | 1:fe97d826508d | 29 | } else if (voltage > 1.08f) { |
skouki | 1:fe97d826508d | 30 | distance = -22.222f * voltage + 49.0f; |
skouki | 1:fe97d826508d | 31 | } else if (voltage > 0.928f) { |
skouki | 1:fe97d826508d | 32 | distance = -32.89473f * voltage + 60.526f; |
skouki | 1:fe97d826508d | 33 | } else if (voltage > 0.835f) { |
skouki | 1:fe97d826508d | 34 | distance = -53.7634f * voltage + 79.89247f; |
skouki | 1:fe97d826508d | 35 | } else if (voltage > 0.737f) { |
skouki | 1:fe97d826508d | 36 | distance = -51.02040f * voltage + 77.60204f; |
skouki | 1:fe97d826508d | 37 | } else if (voltage > 0.673f) { |
skouki | 1:fe97d826508d | 38 | distance = -78.12500f * voltage + 97.57812f; |
skouki | 1:fe97d826508d | 39 | } else if (voltage > 0.608f) { |
skouki | 1:fe97d826508d | 40 | distance = -76.92307f * voltage + 96.76923f; |
skouki | 1:fe97d826508d | 41 | } else if (voltage > 0.562f) { |
skouki | 1:fe97d826508d | 42 | distance = -108.6956f * voltage + 116.0869f; |
skouki | 1:fe97d826508d | 43 | } else if (voltage > 0.515f) { |
skouki | 1:fe97d826508d | 44 | distance = -106.3829f * voltage + 114.7872f; |
skouki | 1:fe97d826508d | 45 | } else if (voltage > 0.474f) { |
skouki | 1:fe97d826508d | 46 | distance = -121.9512f * voltage + 122.8048f; |
skouki | 1:fe97d826508d | 47 | } else if (voltage > 0.447f) { |
skouki | 1:fe97d826508d | 48 | distance = -185.1851f * voltage + 152.7777f; |
skouki | 1:fe97d826508d | 49 | } else if (voltage > 0.432f) { |
skouki | 1:fe97d826508d | 50 | distance = -333.333f * voltage + 219.0f; |
skouki | 0:d0a252247fec | 51 | } else { |
skouki | 1:fe97d826508d | 52 | distance = 9999.9f; |
skouki | 0:d0a252247fec | 53 | } |
skouki | 0:d0a252247fec | 54 | |
skouki | 0:d0a252247fec | 55 | return distance; |
skouki | 0:d0a252247fec | 56 | } |