Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: Adafruit_GFX
main.cpp@1:1d515eb7abf3, 2021-12-15 (annotated)
- 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?
User | Revision | Line number | New 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 | } |