Team APP
/
APP6
Code APP6
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 ///////////////////////////////////////////////////////////// 00002 // APP 6: Propriétés des matériaux et capteurs // 00003 // // 00004 // Université de Sherbrooke // 00005 // Génie informatique // 00006 // Session 5, Hiver 2017 // 00007 // // 00008 // Date: 5 avril 2017 // 00009 // // 00010 // Auteurs: Maxime Dupuis, dupm2216 // 00011 // Bruno Allaire-Lemay, allb2701 // 00012 ///////////////////////////////////////////////////////////// 00013 00014 #include "mbed.h" 00015 #include "rtos.h" 00016 #include <cmath> 00017 00018 const float coefficients[6] = {4.7378, -9.0288, 14.136, -10.126, 3.2801, -0.3927}; 00019 AnalogIn input(p15); 00020 00021 //Lit la tension sur la pin 15 et effectue la conversion analogue à digitale sur 16 bits. Retourne la tension lue en volts. 00022 float read_voltage() 00023 { 00024 const float ratio = 19859.4; 00025 float voltage = (float) input.read_u16(); 00026 return voltage / ratio; 00027 } 00028 00029 //Calcul le niveau du liquide à partir des coefficients de la courbe de régression et de la tension lue. 00030 float get_liquid_level_cm(const float* coefficients, const int number_of_coefficients, const float hall_sensor_voltage) 00031 { 00032 float liquid_level_cm = 54; 00033 for(int i=0; i<number_of_coefficients; i++) 00034 { 00035 liquid_level_cm -= pow(hall_sensor_voltage, (float)i) * coefficients[i]; 00036 } 00037 return liquid_level_cm; 00038 } 00039 00040 //Appel les fonctions de lecture et de calcul du niveau. Affiche le niveau. 00041 void read_and_display_level_cm(void const *args) 00042 { 00043 float voltage; 00044 float liquid_level_cm; 00045 voltage = read_voltage(); 00046 liquid_level_cm = get_liquid_level_cm(coefficients, 6, voltage); 00047 printf("Niveau du liquide (cm) : %f\r\n", liquid_level_cm); 00048 } 00049 00050 //Lit, calcul et affiche le niveau du liquide à toutes les 50 millisecondes. 00051 int main() 00052 { 00053 RtosTimer timer(read_and_display_level_cm, osTimerPeriodic); 00054 timer.start(50); 00055 00056 while(1) 00057 { 00058 } 00059 }
Generated on Sun Feb 26 2023 07:38:18 by 1.7.2