Team APP
/
APP6
Code APP6
main.cpp@0:4101acb9ab42, 2017-04-04 (annotated)
- Committer:
- GaiSensei
- Date:
- Tue Apr 04 16:28:49 2017 +0000
- Revision:
- 0:4101acb9ab42
- Child:
- 1:b868d04610be
Code version 1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
GaiSensei | 0:4101acb9ab42 | 1 | #include "mbed.h" |
GaiSensei | 0:4101acb9ab42 | 2 | #include <cmath> |
GaiSensei | 0:4101acb9ab42 | 3 | |
GaiSensei | 0:4101acb9ab42 | 4 | const float coefficients[6] = {4.7378, -9.0288, 14.136, -10.126, 3.2801, -0.3927}; |
GaiSensei | 0:4101acb9ab42 | 5 | AnalogIn input(p15); |
GaiSensei | 0:4101acb9ab42 | 6 | |
GaiSensei | 0:4101acb9ab42 | 7 | float read_voltage() |
GaiSensei | 0:4101acb9ab42 | 8 | { |
GaiSensei | 0:4101acb9ab42 | 9 | const float ratio = 19859.4; |
GaiSensei | 0:4101acb9ab42 | 10 | float voltage = (float) input.read_u16(); |
GaiSensei | 0:4101acb9ab42 | 11 | return voltage / ratio; |
GaiSensei | 0:4101acb9ab42 | 12 | } |
GaiSensei | 0:4101acb9ab42 | 13 | |
GaiSensei | 0:4101acb9ab42 | 14 | float get_liquid_level_cm(const float* coefficients, const int number_of_coefficients, const float hall_sensor_voltage) |
GaiSensei | 0:4101acb9ab42 | 15 | { |
GaiSensei | 0:4101acb9ab42 | 16 | float liquid_level_cm = 54; |
GaiSensei | 0:4101acb9ab42 | 17 | for(int i=0; i<number_of_coefficients; i++) |
GaiSensei | 0:4101acb9ab42 | 18 | { |
GaiSensei | 0:4101acb9ab42 | 19 | liquid_level_cm -= pow(hall_sensor_voltage, (float)i) * coefficients[i]; |
GaiSensei | 0:4101acb9ab42 | 20 | } |
GaiSensei | 0:4101acb9ab42 | 21 | return liquid_level_cm; |
GaiSensei | 0:4101acb9ab42 | 22 | } |
GaiSensei | 0:4101acb9ab42 | 23 | |
GaiSensei | 0:4101acb9ab42 | 24 | int main() |
GaiSensei | 0:4101acb9ab42 | 25 | { |
GaiSensei | 0:4101acb9ab42 | 26 | float voltage; |
GaiSensei | 0:4101acb9ab42 | 27 | float liquid_level_cm; |
GaiSensei | 0:4101acb9ab42 | 28 | |
GaiSensei | 0:4101acb9ab42 | 29 | while(1) |
GaiSensei | 0:4101acb9ab42 | 30 | { |
GaiSensei | 0:4101acb9ab42 | 31 | voltage = read_voltage(); |
GaiSensei | 0:4101acb9ab42 | 32 | liquid_level_cm = get_liquid_level_cm(coefficients, 6, voltage); |
GaiSensei | 0:4101acb9ab42 | 33 | |
GaiSensei | 0:4101acb9ab42 | 34 | printf("Niveau du liquide (cm) : %f\r\n", liquid_level_cm); |
GaiSensei | 0:4101acb9ab42 | 35 | } |
GaiSensei | 0:4101acb9ab42 | 36 | } |