Team APP
/
APP6
Code APP6
Diff: main.cpp
- Revision:
- 1:b868d04610be
- Parent:
- 0:4101acb9ab42
--- a/main.cpp Tue Apr 04 16:28:49 2017 +0000 +++ b/main.cpp Tue Apr 04 19:55:17 2017 +0000 @@ -1,9 +1,24 @@ +///////////////////////////////////////////////////////////// +// APP 6: Propriétés des matériaux et capteurs // +// // +// Université de Sherbrooke // +// Génie informatique // +// Session 5, Hiver 2017 // +// // +// Date: 5 avril 2017 // +// // +// Auteurs: Maxime Dupuis, dupm2216 // +// Bruno Allaire-Lemay, allb2701 // +///////////////////////////////////////////////////////////// + #include "mbed.h" +#include "rtos.h" #include <cmath> - + const float coefficients[6] = {4.7378, -9.0288, 14.136, -10.126, 3.2801, -0.3927}; AnalogIn input(p15); +//Lit la tension sur la pin 15 et effectue la conversion analogue à digitale sur 16 bits. Retourne la tension lue en volts. float read_voltage() { const float ratio = 19859.4; @@ -11,6 +26,7 @@ return voltage / ratio; } +//Calcul le niveau du liquide à partir des coefficients de la courbe de régression et de la tension lue. float get_liquid_level_cm(const float* coefficients, const int number_of_coefficients, const float hall_sensor_voltage) { float liquid_level_cm = 54; @@ -21,16 +37,23 @@ return liquid_level_cm; } -int main() +//Appel les fonctions de lecture et de calcul du niveau. Affiche le niveau. +void read_and_display_level_cm(void const *args) { float voltage; float liquid_level_cm; + voltage = read_voltage(); + liquid_level_cm = get_liquid_level_cm(coefficients, 6, voltage); + printf("Niveau du liquide (cm) : %f\r\n", liquid_level_cm); +} + +//Lit, calcul et affiche le niveau du liquide à toutes les 50 millisecondes. +int main() +{ + RtosTimer timer(read_and_display_level_cm, osTimerPeriodic); + timer.start(50); while(1) { - voltage = read_voltage(); - liquid_level_cm = get_liquid_level_cm(coefficients, 6, voltage); - - printf("Niveau du liquide (cm) : %f\r\n", liquid_level_cm); } -} +} \ No newline at end of file