Electronica / Mbed OS Proyecto2

Dependencies:   Adafruit_GFX

Committer:
aitor01
Date:
Wed Dec 15 13:22:41 2021 +0000
Revision:
1:1d515eb7abf3
Parent:
0:e3755f5769fe
Child:
2:fd3b989cedcd
lol

Who changed what in which revision?

UserRevisionLine numberNew contents of line
agat 0:e3755f5769fe 1 #include "mbed.h"
agat 0:e3755f5769fe 2 #include "math.h"
agat 0:e3755f5769fe 3 //#include "hcsr04.h"
agat 0:e3755f5769fe 4 Serial pc(USBTX, USBRX); // tx, rx
agat 0:e3755f5769fe 5 Ticker tickerMideDistancia;
aitor01 1:1d515eb7abf3 6 Ticker visualTemp;
agat 0:e3755f5769fe 7 unsigned distancia=1000;
agat 0:e3755f5769fe 8
aitor01 1:1d515eb7abf3 9 AnalogIn senal(A0);
agat 0:e3755f5769fe 10 DigitalIn final1(D9);
agat 0:e3755f5769fe 11 DigitalIn final2(D10);
agat 0:e3755f5769fe 12 DigitalOut step(D2);
agat 0:e3755f5769fe 13 DigitalOut dir(A4);
agat 0:e3755f5769fe 14 DigitalOut enableMotor(D11);
agat 0:e3755f5769fe 15 DigitalIn boton_inicial(D3);
aitor01 1:1d515eb7abf3 16 DigitalOut dirAMotor(D4);//M121
aitor01 1:1d515eb7abf3 17 PwmOut dirBMotor(D5);//M121
aitor01 1:1d515eb7abf3 18 DigitalOut rele(D6);//Rcal
agat 0:e3755f5769fe 19
aitor01 1:1d515eb7abf3 20 //InterruptIn encoderA(A2);
aitor01 1:1d515eb7abf3 21
aitor01 1:1d515eb7abf3 22 Timer t;
aitor01 1:1d515eb7abf3 23
aitor01 1:1d515eb7abf3 24 float temperatura;
aitor01 1:1d515eb7abf3 25
aitor01 1:1d515eb7abf3 26 enum estados {reset, apagado, encendido, motorpalante,atras, estatico };
agat 0:e3755f5769fe 27 estados estado;
agat 0:e3755f5769fe 28
agat 0:e3755f5769fe 29 //HCSR04 usensor(D7,D8); //(PinName TrigPin,PinName EchoPin):
agat 0:e3755f5769fe 30 void paso(int d)
agat 0:e3755f5769fe 31 {
agat 0:e3755f5769fe 32 dir=d;
agat 0:e3755f5769fe 33 step=1;
agat 0:e3755f5769fe 34 wait_us(100);
agat 0:e3755f5769fe 35 step=0;
agat 0:e3755f5769fe 36 wait_us(900);
agat 0:e3755f5769fe 37 }
agat 0:e3755f5769fe 38 void estadoreset()
agat 0:e3755f5769fe 39 {
agat 0:e3755f5769fe 40 if (final1!=1) {
aitor01 1:1d515eb7abf3 41 enableMotor=1;
agat 0:e3755f5769fe 42 paso(0);
agat 0:e3755f5769fe 43 } else if (final1 ==1) {
agat 0:e3755f5769fe 44 estado = apagado;
agat 0:e3755f5769fe 45 enableMotor =0;
agat 0:e3755f5769fe 46 }
agat 0:e3755f5769fe 47 }
agat 0:e3755f5769fe 48
agat 0:e3755f5769fe 49 void estadoapagado()
agat 0:e3755f5769fe 50 {
agat 0:e3755f5769fe 51 if (boton_inicial==1) {
agat 0:e3755f5769fe 52 enableMotor=1;
aitor01 1:1d515eb7abf3 53 estado= motorpalante;
aitor01 1:1d515eb7abf3 54 t.reset();
agat 0:e3755f5769fe 55 }
agat 0:e3755f5769fe 56 }
agat 0:e3755f5769fe 57
aitor01 1:1d515eb7abf3 58 /*void estadoencendido()
agat 0:e3755f5769fe 59 {
aitor01 1:1d515eb7abf3 60 if (boton_inicial==0) {
agat 0:e3755f5769fe 61 paso(1);
agat 0:e3755f5769fe 62 estado = motorpalante;
agat 0:e3755f5769fe 63
agat 0:e3755f5769fe 64 }
aitor01 1:1d515eb7abf3 65 }*/
aitor01 1:1d515eb7abf3 66
aitor01 1:1d515eb7abf3 67 void estadomotorpalante()
aitor01 1:1d515eb7abf3 68 {
aitor01 1:1d515eb7abf3 69 //if (final2)
aitor01 1:1d515eb7abf3 70 if (boton_inicial==0&&final2==0) {
aitor01 1:1d515eb7abf3 71 paso(1);
aitor01 1:1d515eb7abf3 72
aitor01 1:1d515eb7abf3 73 dirAMotor=1;
aitor01 1:1d515eb7abf3 74 rele =1;
aitor01 1:1d515eb7abf3 75
aitor01 1:1d515eb7abf3 76 } else if (final2==1) {
aitor01 1:1d515eb7abf3 77 int tiempo=t.read();
aitor01 1:1d515eb7abf3 78 pc.printf("El tiempo transcurrido es de %d\n",tiempo);
aitor01 1:1d515eb7abf3 79 pc.printf("La temperatura es de %.4f\n",temperatura);
aitor01 1:1d515eb7abf3 80 //dirAMotor=0;
aitor01 1:1d515eb7abf3 81 wait(2.0);
aitor01 1:1d515eb7abf3 82 //enableMotor=0;
aitor01 1:1d515eb7abf3 83 //rele=0;
aitor01 1:1d515eb7abf3 84
aitor01 1:1d515eb7abf3 85 if (final2==1) {
aitor01 1:1d515eb7abf3 86 estado=atras;
aitor01 1:1d515eb7abf3 87 }
aitor01 1:1d515eb7abf3 88 //Print en pantalla con el Oled.
aitor01 1:1d515eb7abf3 89 }
agat 0:e3755f5769fe 90 }
agat 0:e3755f5769fe 91
aitor01 1:1d515eb7abf3 92 void estadoatras()
aitor01 1:1d515eb7abf3 93 {
aitor01 1:1d515eb7abf3 94 if (final2!=1 && boton_inicial==1 && final1!=1) {
aitor01 1:1d515eb7abf3 95 enableMotor=0;
aitor01 1:1d515eb7abf3 96 rele=0;
aitor01 1:1d515eb7abf3 97 dirAMotor=0;
aitor01 1:1d515eb7abf3 98 estado= estatico;
aitor01 1:1d515eb7abf3 99 } else if (final1 ==1) {
aitor01 1:1d515eb7abf3 100 estado = motorpalante;
aitor01 1:1d515eb7abf3 101 } else {
aitor01 1:1d515eb7abf3 102 paso(0);
aitor01 1:1d515eb7abf3 103 }
aitor01 1:1d515eb7abf3 104 }
agat 0:e3755f5769fe 105
aitor01 1:1d515eb7abf3 106 void muestraTemp(){
aitor01 1:1d515eb7abf3 107 pc.printf("La temperatura es de %.4f\n",temperatura);
aitor01 1:1d515eb7abf3 108 }
agat 0:e3755f5769fe 109
aitor01 1:1d515eb7abf3 110 void medir(){
aitor01 1:1d515eb7abf3 111
aitor01 1:1d515eb7abf3 112 float tension=senal.read()*3.3;
aitor01 1:1d515eb7abf3 113 float Rt= 100e3*((3.3-tension)/tension);
aitor01 1:1d515eb7abf3 114 temperatura = (3950/(log(Rt/100e3)+(3950/298)))-273.1;
aitor01 1:1d515eb7abf3 115 }
agat 0:e3755f5769fe 116 int main()
agat 0:e3755f5769fe 117 {
agat 0:e3755f5769fe 118 pc.baud(115200);
aitor01 1:1d515eb7abf3 119 //visualTemp.attach(&muestraTemp,1.0);
agat 0:e3755f5769fe 120 //tickerMideDistancia.attach(&mideDistancia, 0.5);
agat 0:e3755f5769fe 121 estado=reset;
agat 0:e3755f5769fe 122 step=1;
agat 0:e3755f5769fe 123 enableMotor =1;
agat 0:e3755f5769fe 124 pc.printf("Estado cerrada\n");
aitor01 1:1d515eb7abf3 125 t.start();
agat 0:e3755f5769fe 126 while(1) {
aitor01 1:1d515eb7abf3 127 medir();
agat 0:e3755f5769fe 128 //distancia=usensor.get_dist_cm();
agat 0:e3755f5769fe 129 switch ( estado ) {
aitor01 1:1d515eb7abf3 130
agat 0:e3755f5769fe 131 case reset:
agat 0:e3755f5769fe 132 estadoreset();
aitor01 1:1d515eb7abf3 133 pc.printf("Estado reset\n");
agat 0:e3755f5769fe 134 break;
agat 0:e3755f5769fe 135 case apagado:
agat 0:e3755f5769fe 136 estadoapagado();
aitor01 1:1d515eb7abf3 137 pc.printf("Estado apagado\n");
agat 0:e3755f5769fe 138 break;
aitor01 1:1d515eb7abf3 139 /* case encendido:
aitor01 1:1d515eb7abf3 140 pc.printf("HOLI2");
aitor01 1:1d515eb7abf3 141 estadoencendido();
aitor01 1:1d515eb7abf3 142 break;*/
aitor01 1:1d515eb7abf3 143 case motorpalante:
aitor01 1:1d515eb7abf3 144 estadomotorpalante();
aitor01 1:1d515eb7abf3 145 pc.printf("Estado alante\n");
agat 0:e3755f5769fe 146 break;
aitor01 1:1d515eb7abf3 147 case atras:
aitor01 1:1d515eb7abf3 148 estadoatras();
aitor01 1:1d515eb7abf3 149 pc.printf("Estado atras\n");
aitor01 1:1d515eb7abf3 150 break;
aitor01 1:1d515eb7abf3 151 case estatico:
aitor01 1:1d515eb7abf3 152 pc.printf("Estado estatico\n");
aitor01 1:1d515eb7abf3 153 //estadoestatico();
agat 0:e3755f5769fe 154 break;
agat 0:e3755f5769fe 155 /*case cerrada:
agat 0:e3755f5769fe 156 estadoCerrada();
agat 0:e3755f5769fe 157 break;
agat 0:e3755f5769fe 158 case abriendose:
agat 0:e3755f5769fe 159 estadoAbriendose();
agat 0:e3755f5769fe 160 break;
agat 0:e3755f5769fe 161 case abierta:
agat 0:e3755f5769fe 162 estadoAbierta();
agat 0:e3755f5769fe 163 break;
agat 0:e3755f5769fe 164 case cerrandose:
agat 0:e3755f5769fe 165 estadoCerrandose();
agat 0:e3755f5769fe 166 break;
agat 0:e3755f5769fe 167 default:
agat 0:e3755f5769fe 168 break;
agat 0:e3755f5769fe 169 }*/
agat 0:e3755f5769fe 170 }
agat 0:e3755f5769fe 171 }
agat 0:e3755f5769fe 172 }