javier vicente
/
MASTER_EXAMEN_SOL
Solucion ejercicio
main.cpp@0:e062daca45d0, 2021-12-09 (annotated)
- Committer:
- javiervicente
- Date:
- Thu Dec 09 23:21:38 2021 +0000
- Revision:
- 0:e062daca45d0
Solucion;
Who changed what in which revision?
User | Revision | Line number | New 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 | } |