Code APP6

Dependencies:   mbed mbed-rtos

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?

UserRevisionLine numberNew 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 }