Practicas / Mbed 2 deprecated Maqueta_Combinada_FINAL

Dependencies:   mbed Adafruit_GFX DS1820

Committer:
daniferca
Date:
Thu Dec 16 16:11:20 2021 +0000
Revision:
2:20c2d39d5902
Parent:
1:65e9a9b006c1
Child:
3:b05574b98b47
FINAL_CON_BACKDOOR_TRANSPORTADOR

Who changed what in which revision?

UserRevisionLine numberNew contents of line
daniferca 0:d6db09ba7537 1 #include "mbed.h"
daniferca 0:d6db09ba7537 2 #include "hcsr04.h"
daniferca 0:d6db09ba7537 3 #include "DS1820.h"
daniferca 0:d6db09ba7537 4
daniferca 0:d6db09ba7537 5
daniferca 0:d6db09ba7537 6 #include "Adafruit_SSD1306.h"
daniferca 0:d6db09ba7537 7
daniferca 0:d6db09ba7537 8 class I2CPreInit : public I2C
daniferca 0:d6db09ba7537 9 {
daniferca 0:d6db09ba7537 10 public:
daniferca 0:d6db09ba7537 11 I2CPreInit(PinName sda, PinName scl) : I2C(sda, scl)
daniferca 0:d6db09ba7537 12 {
daniferca 0:d6db09ba7537 13 frequency(100000);
daniferca 0:d6db09ba7537 14 start();
daniferca 0:d6db09ba7537 15 };
daniferca 0:d6db09ba7537 16 };
daniferca 0:d6db09ba7537 17
daniferca 0:d6db09ba7537 18 I2CPreInit gI2C(PB_9,PB_8);
daniferca 0:d6db09ba7537 19
daniferca 0:d6db09ba7537 20 Adafruit_SSD1306_I2c gOled(gI2C,NC,0x78,64,128);
daniferca 0:d6db09ba7537 21
daniferca 0:d6db09ba7537 22
daniferca 0:d6db09ba7537 23 Serial pc(USBTX, USBRX);
daniferca 0:d6db09ba7537 24
daniferca 0:d6db09ba7537 25
daniferca 0:d6db09ba7537 26
daniferca 0:d6db09ba7537 27 Ticker tickerMideDistancia;
daniferca 0:d6db09ba7537 28 unsigned distancia=20;
daniferca 0:d6db09ba7537 29
daniferca 0:d6db09ba7537 30 HCSR04 usensor(D7,D8); //(PinName TrigPin,PinName EchoPin):
daniferca 0:d6db09ba7537 31 DigitalIn finalDer(D2); //Final de carrera DERECHA
daniferca 0:d6db09ba7537 32 DigitalIn finalIzq(D3); //Final de carrera IZQUIERDA
daniferca 0:d6db09ba7537 33 DigitalIn boton(D5); //Boton para iniciar el programa seleccionado
daniferca 0:d6db09ba7537 34 DigitalIn switcher(D9); //Interruptor para indicar que programa usar
daniferca 0:d6db09ba7537 35 DigitalOut step(D13);
daniferca 0:d6db09ba7537 36 DigitalOut dir(D12);
daniferca 0:d6db09ba7537 37 DigitalOut enable(D11);
daniferca 0:d6db09ba7537 38 DigitalOut led(LED1);
daniferca 0:d6db09ba7537 39 DigitalOut myLed1 (D4); //Indicador programa Taladro seleccionado
daniferca 0:d6db09ba7537 40 DigitalOut myLed2 (D6); //Indicador programa Transportador de Piezas seleccionado
daniferca 0:d6db09ba7537 41
daniferca 0:d6db09ba7537 42 DS1820 ds1820(D10); //Substitute PA_9 with actual mbed pin name connected to the DS1820 data pin
daniferca 0:d6db09ba7537 43
daniferca 0:d6db09ba7537 44
daniferca 0:d6db09ba7537 45
daniferca 0:d6db09ba7537 46 float temp = 0;
daniferca 0:d6db09ba7537 47 int contador=0; //Contador de Piezas e Impactos del Taladro
daniferca 0:d6db09ba7537 48 int FUNCIONAR=0; //Variable que de comienzo al programa en funcion del boton
daniferca 0:d6db09ba7537 49
daniferca 0:d6db09ba7537 50
daniferca 0:d6db09ba7537 51 int x=0; //Variable abilitadora programa Transportador de Piezas, en funcion del interruptor
daniferca 0:d6db09ba7537 52 int y=0; //Variable abilitadora programa Taladro, en funcion del interruptor
daniferca 0:d6db09ba7537 53
daniferca 0:d6db09ba7537 54 Timer tiempo; //Temprizador para las acciones del taladro
daniferca 0:d6db09ba7537 55
daniferca 0:d6db09ba7537 56 enum estados {cerrada, abriendose, cerrandose, abierta};
daniferca 0:d6db09ba7537 57 estados estado;
daniferca 0:d6db09ba7537 58
daniferca 0:d6db09ba7537 59
daniferca 0:d6db09ba7537 60 void paso(int d)
daniferca 0:d6db09ba7537 61 {
daniferca 0:d6db09ba7537 62 dir=d;
daniferca 0:d6db09ba7537 63 step=1;
daniferca 0:d6db09ba7537 64 wait_us(100); // Cambio de paso
daniferca 0:d6db09ba7537 65 step=0;
daniferca 0:d6db09ba7537 66 wait_us(900); //Este hay que cambiar
daniferca 0:d6db09ba7537 67 }
daniferca 0:d6db09ba7537 68
daniferca 0:d6db09ba7537 69 void estadoCerrada()
daniferca 0:d6db09ba7537 70 {
daniferca 0:d6db09ba7537 71
daniferca 0:d6db09ba7537 72 if (x==1) { //Entrada al Transportador de Piezas
daniferca 0:d6db09ba7537 73
daniferca 1:65e9a9b006c1 74 if((finalIzq == 1) && (FUNCIONAR==1) && contador==0) { //Inicio en funcion del Final de Carrera de la Izquierda y del Boton
daniferca 1:65e9a9b006c1 75
daniferca 1:65e9a9b006c1 76 wait(0.5); //Tiempo de espera para descargar la Pieza
daniferca 0:d6db09ba7537 77 enable=1;
daniferca 0:d6db09ba7537 78 estado=abriendose;
daniferca 0:d6db09ba7537 79
daniferca 1:65e9a9b006c1 80 gOled.clearDisplay();
daniferca 1:65e9a9b006c1 81 gOled.printf("Programa Transporte");
daniferca 1:65e9a9b006c1 82 gOled.display();
daniferca 1:65e9a9b006c1 83 gOled.setTextCursor(0,0);
daniferca 0:d6db09ba7537 84
daniferca 0:d6db09ba7537 85 }
daniferca 1:65e9a9b006c1 86
daniferca 1:65e9a9b006c1 87 else if (contador>0){
daniferca 1:65e9a9b006c1 88
daniferca 1:65e9a9b006c1 89 wait(0.5); //Tiempo de espera para descargar la Pieza
daniferca 1:65e9a9b006c1 90 enable=1;
daniferca 1:65e9a9b006c1 91 estado=abriendose;
daniferca 1:65e9a9b006c1 92
daniferca 1:65e9a9b006c1 93
daniferca 1:65e9a9b006c1 94 }
daniferca 0:d6db09ba7537 95 }
daniferca 0:d6db09ba7537 96
daniferca 0:d6db09ba7537 97 if(y==1) { //Entrada al Taladro
daniferca 0:d6db09ba7537 98
daniferca 0:d6db09ba7537 99 if((finalIzq == 1) && (FUNCIONAR==1)) { //Inicio en funcion del Final de Carrera de la Izquierda y del Boton
daniferca 0:d6db09ba7537 100 enable=1;
daniferca 0:d6db09ba7537 101 estado=abriendose;
daniferca 0:d6db09ba7537 102
daniferca 1:65e9a9b006c1 103 gOled.clearDisplay();
daniferca 1:65e9a9b006c1 104 gOled.printf("Programa Taladro");
daniferca 1:65e9a9b006c1 105 gOled.display();
daniferca 1:65e9a9b006c1 106 gOled.setTextCursor(0,0);
daniferca 1:65e9a9b006c1 107
daniferca 0:d6db09ba7537 108 }
daniferca 0:d6db09ba7537 109
daniferca 0:d6db09ba7537 110
daniferca 0:d6db09ba7537 111 else if (contador>0){ //Una vez se alcanza la posicion para taladrar, el contador es mayor de 0 y no parara/cumplira esta condicion hasta que al final del programa se iguale el contador a 0
daniferca 0:d6db09ba7537 112
daniferca 0:d6db09ba7537 113 estado=abriendose;
daniferca 0:d6db09ba7537 114
daniferca 0:d6db09ba7537 115
daniferca 1:65e9a9b006c1 116
daniferca 0:d6db09ba7537 117 }
daniferca 0:d6db09ba7537 118
daniferca 2:20c2d39d5902 119
daniferca 2:20c2d39d5902 120
daniferca 0:d6db09ba7537 121 tiempo.reset();
daniferca 0:d6db09ba7537 122 tiempo.start();
daniferca 0:d6db09ba7537 123 }
daniferca 0:d6db09ba7537 124
daniferca 0:d6db09ba7537 125
daniferca 0:d6db09ba7537 126 }
daniferca 0:d6db09ba7537 127
daniferca 0:d6db09ba7537 128 void estadoAbriendose()
daniferca 0:d6db09ba7537 129 {
daniferca 0:d6db09ba7537 130
daniferca 0:d6db09ba7537 131 if(x==1) { //Entrada al Transportador de Piezas
daniferca 0:d6db09ba7537 132
daniferca 0:d6db09ba7537 133 if((finalDer==1)) {
daniferca 0:d6db09ba7537 134
daniferca 0:d6db09ba7537 135 estado=abierta;
daniferca 0:d6db09ba7537 136 enable=0;
daniferca 0:d6db09ba7537 137
daniferca 0:d6db09ba7537 138 }
daniferca 2:20c2d39d5902 139
daniferca 2:20c2d39d5902 140
daniferca 2:20c2d39d5902 141 else if (FUNCIONAR>1){
daniferca 2:20c2d39d5902 142
daniferca 2:20c2d39d5902 143 estado=abierta;
daniferca 2:20c2d39d5902 144
daniferca 2:20c2d39d5902 145 }
daniferca 2:20c2d39d5902 146
daniferca 0:d6db09ba7537 147
daniferca 0:d6db09ba7537 148 else {
daniferca 0:d6db09ba7537 149
daniferca 0:d6db09ba7537 150 gOled.clearDisplay();
daniferca 0:d6db09ba7537 151
daniferca 0:d6db09ba7537 152 paso(1);
daniferca 0:d6db09ba7537 153
daniferca 0:d6db09ba7537 154 }
daniferca 0:d6db09ba7537 155 }
daniferca 0:d6db09ba7537 156
daniferca 0:d6db09ba7537 157
daniferca 0:d6db09ba7537 158 if(y==1) { //Entrada al Taladro
daniferca 0:d6db09ba7537 159
daniferca 0:d6db09ba7537 160
daniferca 0:d6db09ba7537 161 if(tiempo.read() > 4 ){
daniferca 0:d6db09ba7537 162
daniferca 0:d6db09ba7537 163 contador++;
daniferca 0:d6db09ba7537 164 estado=abierta;
daniferca 0:d6db09ba7537 165 enable=0;
daniferca 0:d6db09ba7537 166
daniferca 0:d6db09ba7537 167 }
daniferca 0:d6db09ba7537 168
daniferca 0:d6db09ba7537 169 else if ((contador>0) && (tiempo.read() > 0.6)){
daniferca 0:d6db09ba7537 170
daniferca 0:d6db09ba7537 171 contador++;
daniferca 0:d6db09ba7537 172 estado=abierta;
daniferca 0:d6db09ba7537 173 enable=0;
daniferca 2:20c2d39d5902 174
daniferca 0:d6db09ba7537 175 }
daniferca 2:20c2d39d5902 176
daniferca 0:d6db09ba7537 177 else {
daniferca 0:d6db09ba7537 178
daniferca 0:d6db09ba7537 179 paso(1);
daniferca 0:d6db09ba7537 180
daniferca 0:d6db09ba7537 181
daniferca 0:d6db09ba7537 182 }
daniferca 0:d6db09ba7537 183
daniferca 0:d6db09ba7537 184 }
daniferca 0:d6db09ba7537 185
daniferca 0:d6db09ba7537 186
daniferca 0:d6db09ba7537 187 }
daniferca 0:d6db09ba7537 188
daniferca 0:d6db09ba7537 189 void estadoCerrandose()
daniferca 0:d6db09ba7537 190 {
daniferca 0:d6db09ba7537 191
daniferca 0:d6db09ba7537 192 if(x==1) { //Entrada al Transportador de Piezas
daniferca 0:d6db09ba7537 193
daniferca 2:20c2d39d5902 194 if(finalIzq==1 && contador<3 && FUNCIONAR==1) { //Bucle hasta hasta que el contador alcance 3
daniferca 0:d6db09ba7537 195
daniferca 0:d6db09ba7537 196 estado=cerrada;
daniferca 0:d6db09ba7537 197 enable=0;
daniferca 0:d6db09ba7537 198 }
daniferca 0:d6db09ba7537 199
daniferca 0:d6db09ba7537 200 else if ((finalIzq==1)&& contador>2) { //Cuando el contador alcance 3, se terminara el programa
daniferca 0:d6db09ba7537 201
daniferca 0:d6db09ba7537 202 estado = cerrada;
daniferca 0:d6db09ba7537 203 enable = 0;
daniferca 0:d6db09ba7537 204 contador=0;
daniferca 0:d6db09ba7537 205 FUNCIONAR=0;
daniferca 2:20c2d39d5902 206
daniferca 2:20c2d39d5902 207 }
daniferca 2:20c2d39d5902 208
daniferca 2:20c2d39d5902 209 else if ((finalIzq==1) && (FUNCIONAR>1)) { //
daniferca 2:20c2d39d5902 210
daniferca 2:20c2d39d5902 211 estado = cerrada;
daniferca 2:20c2d39d5902 212 enable = 0;
daniferca 2:20c2d39d5902 213 contador=0;
daniferca 2:20c2d39d5902 214 FUNCIONAR=0;
daniferca 0:d6db09ba7537 215
daniferca 0:d6db09ba7537 216 }
daniferca 0:d6db09ba7537 217
daniferca 0:d6db09ba7537 218 else { //Activar/Mantener movimiento
daniferca 0:d6db09ba7537 219
daniferca 0:d6db09ba7537 220 paso(0);
daniferca 0:d6db09ba7537 221
daniferca 0:d6db09ba7537 222 }
daniferca 0:d6db09ba7537 223 }
daniferca 0:d6db09ba7537 224
daniferca 0:d6db09ba7537 225 if (y==1){ //Entrada al Taladro
daniferca 0:d6db09ba7537 226
daniferca 2:20c2d39d5902 227 if((tiempo.read() > 0.6) && contador<7 ){ //Recorrido limitado por tiempo y contador(menor que 7) para taladro
daniferca 0:d6db09ba7537 228
daniferca 0:d6db09ba7537 229 estado=cerrada;
daniferca 0:d6db09ba7537 230
daniferca 2:20c2d39d5902 231 }
daniferca 2:20c2d39d5902 232
daniferca 0:d6db09ba7537 233
daniferca 0:d6db09ba7537 234 else if ((contador>6)&& (finalIzq==1)){ //Cuando el contador alcance 7 se pulse el final de carrera de la izquierda, se terminara el programa
daniferca 0:d6db09ba7537 235
daniferca 0:d6db09ba7537 236 estado = cerrada;
daniferca 0:d6db09ba7537 237 enable = 0;
daniferca 0:d6db09ba7537 238 contador=0;
daniferca 0:d6db09ba7537 239 FUNCIONAR=0;
daniferca 2:20c2d39d5902 240
daniferca 0:d6db09ba7537 241 }
daniferca 2:20c2d39d5902 242
daniferca 0:d6db09ba7537 243
daniferca 0:d6db09ba7537 244 else {
daniferca 0:d6db09ba7537 245
daniferca 0:d6db09ba7537 246 paso(0); //Activar/Mantener movimiento
daniferca 0:d6db09ba7537 247
daniferca 0:d6db09ba7537 248 }
daniferca 0:d6db09ba7537 249
daniferca 0:d6db09ba7537 250 }
daniferca 0:d6db09ba7537 251
daniferca 0:d6db09ba7537 252 }
daniferca 0:d6db09ba7537 253
daniferca 0:d6db09ba7537 254 void estadoAbierta()
daniferca 0:d6db09ba7537 255 {
daniferca 0:d6db09ba7537 256
daniferca 0:d6db09ba7537 257 if(x==1){ //Entrada al Transportador de Piezas
daniferca 0:d6db09ba7537 258
daniferca 0:d6db09ba7537 259 contador++; //Contador Piezas
daniferca 0:d6db09ba7537 260
daniferca 0:d6db09ba7537 261
daniferca 0:d6db09ba7537 262 gOled.clearDisplay();
daniferca 0:d6db09ba7537 263 gOled.printf("Piezas Transportadas = %d\n",contador);
daniferca 0:d6db09ba7537 264 gOled.display();
daniferca 0:d6db09ba7537 265 gOled.setTextCursor(0,0);
daniferca 0:d6db09ba7537 266
daniferca 0:d6db09ba7537 267
daniferca 0:d6db09ba7537 268 }
daniferca 0:d6db09ba7537 269
daniferca 0:d6db09ba7537 270 if (y==1){ //Entrada al Taladro
daniferca 0:d6db09ba7537 271
daniferca 0:d6db09ba7537 272 gOled.clearDisplay();
daniferca 0:d6db09ba7537 273 gOled.printf("Impactos Taladro = %d\n",contador);
daniferca 0:d6db09ba7537 274 gOled.printf("temp = %3.1f C\r\n", temp);
daniferca 0:d6db09ba7537 275 gOled.display();
daniferca 0:d6db09ba7537 276 gOled.setTextCursor(0,0);
daniferca 0:d6db09ba7537 277 pc.printf("temp = %3.1f C\r\n", temp);
daniferca 0:d6db09ba7537 278
daniferca 1:65e9a9b006c1 279 }
daniferca 0:d6db09ba7537 280
daniferca 0:d6db09ba7537 281
daniferca 0:d6db09ba7537 282 tiempo.reset();
daniferca 0:d6db09ba7537 283 tiempo.start();
daniferca 0:d6db09ba7537 284
daniferca 0:d6db09ba7537 285 enable=1;
daniferca 0:d6db09ba7537 286 estado=cerrandose;
daniferca 0:d6db09ba7537 287
daniferca 0:d6db09ba7537 288 }
daniferca 0:d6db09ba7537 289
daniferca 0:d6db09ba7537 290
daniferca 0:d6db09ba7537 291 int main()
daniferca 0:d6db09ba7537 292 {
daniferca 0:d6db09ba7537 293 pc.baud(115200);
daniferca 0:d6db09ba7537 294 estado=cerrada;
daniferca 0:d6db09ba7537 295 gOled.begin();
daniferca 0:d6db09ba7537 296 gOled.clearDisplay();
daniferca 0:d6db09ba7537 297 gOled.printf("Hola\n");
daniferca 0:d6db09ba7537 298 gOled.display();
daniferca 2:20c2d39d5902 299 ds1820.begin();
daniferca 2:20c2d39d5902 300 ds1820.startConversion();
daniferca 0:d6db09ba7537 301
daniferca 0:d6db09ba7537 302 if (boton == 1){
daniferca 0:d6db09ba7537 303
daniferca 0:d6db09ba7537 304 FUNCIONAR=1;
daniferca 0:d6db09ba7537 305
daniferca 0:d6db09ba7537 306 }
daniferca 0:d6db09ba7537 307
daniferca 0:d6db09ba7537 308
daniferca 0:d6db09ba7537 309
daniferca 0:d6db09ba7537 310 if(x==1) {
daniferca 0:d6db09ba7537 311 gOled.clearDisplay();
daniferca 0:d6db09ba7537 312 gOled.printf("Programa: Transporte de Piezas\n");
daniferca 0:d6db09ba7537 313 gOled.display();
daniferca 0:d6db09ba7537 314 }
daniferca 0:d6db09ba7537 315
daniferca 0:d6db09ba7537 316 if(y==1) {
daniferca 0:d6db09ba7537 317 gOled.clearDisplay();
daniferca 0:d6db09ba7537 318 gOled.printf("Programa: Taladro\n");
daniferca 0:d6db09ba7537 319 gOled.display();
daniferca 0:d6db09ba7537 320 }
daniferca 0:d6db09ba7537 321 tiempo.reset();
daniferca 0:d6db09ba7537 322
daniferca 0:d6db09ba7537 323 pc.baud(115200);
daniferca 0:d6db09ba7537 324
daniferca 2:20c2d39d5902 325 while(1) {
daniferca 2:20c2d39d5902 326
daniferca 2:20c2d39d5902 327
daniferca 0:d6db09ba7537 328
daniferca 0:d6db09ba7537 329 if (switcher ==0){ //Programa Transportador de Piezas
daniferca 0:d6db09ba7537 330
daniferca 0:d6db09ba7537 331 y=0;
daniferca 0:d6db09ba7537 332 x=1;
daniferca 0:d6db09ba7537 333
daniferca 0:d6db09ba7537 334 myLed1=1;
daniferca 0:d6db09ba7537 335 myLed2=0;
daniferca 0:d6db09ba7537 336
daniferca 0:d6db09ba7537 337 }
daniferca 0:d6db09ba7537 338
daniferca 0:d6db09ba7537 339 else if (switcher==1){ //Programa Taladro
daniferca 0:d6db09ba7537 340
daniferca 0:d6db09ba7537 341 y=1;
daniferca 0:d6db09ba7537 342 x=0;
daniferca 0:d6db09ba7537 343
daniferca 0:d6db09ba7537 344 myLed1=0;
daniferca 0:d6db09ba7537 345 myLed2=1;
daniferca 0:d6db09ba7537 346
daniferca 0:d6db09ba7537 347 }
daniferca 0:d6db09ba7537 348
daniferca 0:d6db09ba7537 349 if (boton==1){
daniferca 0:d6db09ba7537 350
daniferca 2:20c2d39d5902 351 FUNCIONAR++;
daniferca 0:d6db09ba7537 352
daniferca 0:d6db09ba7537 353 }
daniferca 0:d6db09ba7537 354
daniferca 0:d6db09ba7537 355
daniferca 0:d6db09ba7537 356 switch ( estado ) {
daniferca 0:d6db09ba7537 357 case cerrada:
daniferca 0:d6db09ba7537 358 estadoCerrada();
daniferca 0:d6db09ba7537 359 break;
daniferca 0:d6db09ba7537 360 case abriendose:
daniferca 0:d6db09ba7537 361 estadoAbriendose();
daniferca 0:d6db09ba7537 362 break;
daniferca 0:d6db09ba7537 363 case abierta:
daniferca 0:d6db09ba7537 364 estadoAbierta();
daniferca 0:d6db09ba7537 365 break;
daniferca 0:d6db09ba7537 366 case cerrandose:
daniferca 0:d6db09ba7537 367 estadoCerrandose();
daniferca 0:d6db09ba7537 368 break;
daniferca 0:d6db09ba7537 369 default:
daniferca 0:d6db09ba7537 370 break;
daniferca 0:d6db09ba7537 371 }
daniferca 0:d6db09ba7537 372
daniferca 2:20c2d39d5902 373
daniferca 0:d6db09ba7537 374
daniferca 0:d6db09ba7537 375 }
daniferca 0:d6db09ba7537 376
daniferca 0:d6db09ba7537 377 }
daniferca 0:d6db09ba7537 378