Solucion ejercicio

Dependencies:   mbed

Committer:
javiervicente
Date:
Thu Dec 09 23:21:38 2021 +0000
Revision:
0:e062daca45d0
Solucion;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
javiervicente 0:e062daca45d0 1 #include "mbed.h"
javiervicente 0:e062daca45d0 2
javiervicente 0:e062daca45d0 3 AnalogIn sensorTemp(ADC_TEMP);
javiervicente 0:e062daca45d0 4
javiervicente 0:e062daca45d0 5 enum estados {esperandoPulsacion, esperandoSoltr, esperandoDobleClick} estado;
javiervicente 0:e062daca45d0 6
javiervicente 0:e062daca45d0 7 const float AVG_SLOPE = 4.3e-03;
javiervicente 0:e062daca45d0 8 const float V30 = 1.43;
javiervicente 0:e062daca45d0 9
javiervicente 0:e062daca45d0 10
javiervicente 0:e062daca45d0 11 DigitalOut led(LED1);
javiervicente 0:e062daca45d0 12 DigitalIn boton(USER_BUTTON);
javiervicente 0:e062daca45d0 13
javiervicente 0:e062daca45d0 14 Timer temporizador;
javiervicente 0:e062daca45d0 15
javiervicente 0:e062daca45d0 16 uint32_t media=0;
javiervicente 0:e062daca45d0 17 float mediaf=0.0;
javiervicente 0:e062daca45d0 18 int contador=0;
javiervicente 0:e062daca45d0 19
javiervicente 0:e062daca45d0 20 float calculaTemp()
javiervicente 0:e062daca45d0 21 {
javiervicente 0:e062daca45d0 22 float temp = (V30-(media*50.35400390625e-6/contador)) / AVG_SLOPE + 30.0f; //50.35400390625e-6=3.3/65536
javiervicente 0:e062daca45d0 23 return temp;
javiervicente 0:e062daca45d0 24 }
javiervicente 0:e062daca45d0 25
javiervicente 0:e062daca45d0 26 void fEsperandoPulsacion()
javiervicente 0:e062daca45d0 27 {
javiervicente 0:e062daca45d0 28 if(boton==0) {
javiervicente 0:e062daca45d0 29 printf("Presionado\n");
javiervicente 0:e062daca45d0 30 contador++;
javiervicente 0:e062daca45d0 31 media+=sensorTemp.read_u16();
javiervicente 0:e062daca45d0 32 mediaf+=(V30-(sensorTemp.read()*3.3)) / AVG_SLOPE + 30.0f;
javiervicente 0:e062daca45d0 33 temporizador.reset();
javiervicente 0:e062daca45d0 34 temporizador.start();
javiervicente 0:e062daca45d0 35 estado=esperandoSoltr;
javiervicente 0:e062daca45d0 36 }
javiervicente 0:e062daca45d0 37 }
javiervicente 0:e062daca45d0 38
javiervicente 0:e062daca45d0 39 void fEsperandoSoltr()
javiervicente 0:e062daca45d0 40 {
javiervicente 0:e062daca45d0 41 if(boton==1) {
javiervicente 0:e062daca45d0 42 if(temporizador.read()>2.0f) {
javiervicente 0:e062daca45d0 43 printf("Numero de medidas %d con temperatura media %.2f\n",contador,mediaf/contador);
javiervicente 0:e062daca45d0 44 media=0;
javiervicente 0:e062daca45d0 45 mediaf=0.0;
javiervicente 0:e062daca45d0 46 contador=0;
javiervicente 0:e062daca45d0 47 estado=esperandoPulsacion;
javiervicente 0:e062daca45d0 48 } else {
javiervicente 0:e062daca45d0 49 printf("Esperando doble click\n");
javiervicente 0:e062daca45d0 50 estado=esperandoDobleClick;
javiervicente 0:e062daca45d0 51 }
javiervicente 0:e062daca45d0 52 }
javiervicente 0:e062daca45d0 53 }
javiervicente 0:e062daca45d0 54
javiervicente 0:e062daca45d0 55 void fEsperandoDobleClick()
javiervicente 0:e062daca45d0 56 {
javiervicente 0:e062daca45d0 57 if(temporizador.read()>0.5f) {
javiervicente 0:e062daca45d0 58 estado=esperandoPulsacion;
javiervicente 0:e062daca45d0 59 } else if(boton==0) {
javiervicente 0:e062daca45d0 60 led=!led;
javiervicente 0:e062daca45d0 61 estado=esperandoSoltr;
javiervicente 0:e062daca45d0 62 }
javiervicente 0:e062daca45d0 63 }
javiervicente 0:e062daca45d0 64
javiervicente 0:e062daca45d0 65
javiervicente 0:e062daca45d0 66 int main()
javiervicente 0:e062daca45d0 67 {
javiervicente 0:e062daca45d0 68 printf("Iniciando\n");
javiervicente 0:e062daca45d0 69 estado=esperandoPulsacion;
javiervicente 0:e062daca45d0 70
javiervicente 0:e062daca45d0 71 while(1) {
javiervicente 0:e062daca45d0 72 switch (estado) {
javiervicente 0:e062daca45d0 73 case esperandoPulsacion:
javiervicente 0:e062daca45d0 74 fEsperandoPulsacion();
javiervicente 0:e062daca45d0 75 break;
javiervicente 0:e062daca45d0 76 case esperandoSoltr:
javiervicente 0:e062daca45d0 77 fEsperandoSoltr();
javiervicente 0:e062daca45d0 78 break;
javiervicente 0:e062daca45d0 79 case esperandoDobleClick:
javiervicente 0:e062daca45d0 80 fEsperandoDobleClick();
javiervicente 0:e062daca45d0 81 break;
javiervicente 0:e062daca45d0 82 default:
javiervicente 0:e062daca45d0 83 break;
javiervicente 0:e062daca45d0 84 }
javiervicente 0:e062daca45d0 85 }
javiervicente 0:e062daca45d0 86 }