Team APP
/
APP6
Code APP6
main.cpp
- Committer:
- GaiSensei
- Date:
- 2017-04-04
- Revision:
- 1:b868d04610be
- Parent:
- 0:4101acb9ab42
File content as of revision 1:b868d04610be:
///////////////////////////////////////////////////////////// // 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; float voltage = (float) input.read_u16(); 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; for(int i=0; i<number_of_coefficients; i++) { liquid_level_cm -= pow(hall_sensor_voltage, (float)i) * coefficients[i]; } return liquid_level_cm; } //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) { } }