1 00:00:00,110 --> 00:00:05,910 Hola, muy buenas. Hasta ahora hemos utilizado circuitos en los que sólo había actuadores 2 00:00:05,910 --> 00:00:09,949 y hemos realizado programas para gobernar estos actuadores. 3 00:00:10,470 --> 00:00:14,730 A este tipo de programas se les conoce como de lazo abierto, 4 00:00:15,070 --> 00:00:20,789 porque el control sobre los actuadores no depende de la información que nos pueda dar ningún sensor. 5 00:00:21,390 --> 00:00:25,929 En contra, hay otro tipo de programas en los que el control de los actuadores 6 00:00:25,929 --> 00:00:29,289 viene determinado por la información que reciben los sensores. 7 00:00:29,690 --> 00:00:33,530 A ese tipo de programas se les conoce como de lazo cerrado 8 00:00:33,530 --> 00:00:37,390 y son ampliamente utilizados en el mundo de la robótica. 9 00:00:38,310 --> 00:00:42,850 En esta práctica utilizaremos sensores digitales muy sencillos, los pulsadores. 10 00:00:43,369 --> 00:00:48,549 A pesar de que son elementos muy simples, hay que tener en cuenta algunos detalles importantes. 11 00:00:48,770 --> 00:00:52,710 La primera idea que podemos tener a la hora de utilizar un pulsador 12 00:00:52,710 --> 00:00:55,310 es montar un circuito como el que se muestra en la pantalla. 13 00:00:55,929 --> 00:01:03,710 Realmente aquí no tenemos un pulsador, tenemos un interruptor, pero a los efectos del circuito eléctrico es similar. 14 00:01:03,710 --> 00:01:12,530 Bien, pues cuando nosotros cerremos el interruptor, en el pin 4 habrá 5 voltios y por tanto veremos que la entrada digital está a nivel alto. 15 00:01:13,170 --> 00:01:22,129 El problema lo tenemos cuando abrimos el interruptor. ¿A qué voltaje está el pin 4? Pues realmente no lo sabemos porque se quedaría al aire. 16 00:01:22,129 --> 00:01:29,230 Y esto es un motivo de fallo muy habitual en los circuitos. Además, un fallo que nos resulta muchas veces difícil de ver. 17 00:01:30,069 --> 00:01:38,849 Para solucionar este problema se pueden emplear dos circuitos. El circuito conocido como de pull-up y el circuito conocido como de pull-down. 18 00:01:39,750 --> 00:01:49,329 En el circuito de pull-up pondríamos a continuación del polo positivo de la pila una resistencia y de ahí una salida hacia nuestra entrada digital. 19 00:01:49,329 --> 00:01:54,790 Y de ese mismo punto pondríamos el interruptor, el pulsador, conectado a tierra. 20 00:01:55,230 --> 00:02:01,290 De esta manera, cuando el pulsador esté abierto, como aparece en la figura, no va a haber corriente por el circuito. 21 00:02:01,790 --> 00:02:07,109 Tenemos que entender que las entradas digitales del Arduino funcionarían como un voltímetro. 22 00:02:07,670 --> 00:02:13,830 Y ya dijimos que en los voltímetros la corriente que pasa por ellos es prácticamente cero. 23 00:02:13,830 --> 00:02:17,569 entonces como no puede haber corriente por este pin 24 00:02:17,569 --> 00:02:21,449 no puede haber corriente por el interruptor porque está abierto 25 00:02:21,449 --> 00:02:23,990 la corriente en este circuito sería cero 26 00:02:23,990 --> 00:02:27,969 y si aplicamos la ley de Ohm sobre esta resistencia 27 00:02:27,969 --> 00:02:36,830 os recuerdo que la ley de Ohm nos decía que el voltaje es igual a la intensidad de corriente por el valor de la resistencia 28 00:02:36,830 --> 00:02:41,050 si la corriente es cero, pues cero por lo que sea, va a haber cero voltios 29 00:02:41,050 --> 00:02:48,310 Por tanto, el voltaje que va a encontrar el pin 4 es el de la pila, 5 voltios, estaría a nivel alto. 30 00:02:49,030 --> 00:02:57,430 Sin embargo, cuando cerramos el interruptor, lo que sucede es que va a haber corriente que atraviesa la resistencia, 31 00:02:58,090 --> 00:03:03,349 atraviesa el interruptor y va al polo negativo de la pila que está conectada a tierra. 32 00:03:03,349 --> 00:03:16,090 De hecho, podemos darnos cuenta de que cuando cerramos el interruptor, realmente estamos conectando nuestro pin a tierra, puesto que el voltaje que hay en un interruptor suponemos que es cero. 33 00:03:16,430 --> 00:03:31,810 Bien, pues entonces, en un circuito de pull-up, si el interruptor está abierto, el voltaje en el pin de entrada sería 5 voltios, mientras que si está cerrado, el voltaje sería de 0 voltios. 34 00:03:31,810 --> 00:03:35,370 Bueno, otro montaje similar sería el de pull-up 35 00:03:35,370 --> 00:03:38,050 En este caso podemos ver que es parecido al anterior 36 00:03:38,050 --> 00:03:39,889 Nada más que cambiando de orden las cosas 37 00:03:39,889 --> 00:03:46,629 Tendríamos que el pin 4 se conecta a una de las salidas del interruptor 38 00:03:46,629 --> 00:03:50,069 Que a su vez está conectado al polo positivo de la pila 39 00:03:50,069 --> 00:03:56,430 Y en la misma conexión que el pin 4 conectamos una resistencia en un extremo y en el otro a tierra 40 00:03:56,430 --> 00:03:59,229 Nuestro circuito funcionaría de la siguiente manera 41 00:03:59,229 --> 00:04:08,030 Si yo tengo el interruptor abierto en la entrada digital tendría 0 voltios, si cierro el interruptor en la entrada digital tendría 5 voltios. 42 00:04:08,270 --> 00:04:14,210 Bueno, en definitiva cualquiera de estos dos circuitos no van a resolver el problema con los interruptores o con los pulsadores. 43 00:04:14,669 --> 00:04:16,949 Bueno, pues vamos a probar esto que hemos dicho. 44 00:04:17,990 --> 00:04:22,689 Nos venimos a Tinkercad, creamos un nuevo proyecto, le vamos a llamar pulsadores. 45 00:04:22,689 --> 00:04:29,329 y vamos a poner la placa de Arduino, nuestra placa de conexiones, y vamos a utilizar un pulsador. 46 00:04:29,689 --> 00:04:34,670 Este pulsador tiene cuatro patitas, no sé si se aprecia bien, ahí las vemos, 47 00:04:35,310 --> 00:04:38,370 y es porque es un pulsador doble, tenemos dos pulsadores en uno. 48 00:04:38,750 --> 00:04:41,889 Nosotros solamente vamos a utilizar uno de los dos extremos. 49 00:04:43,050 --> 00:04:48,769 Bien, pues vamos a hacernos el montaje sencillo, el que dijimos la primera vez, y vamos a ver qué pasa. 50 00:04:48,769 --> 00:04:51,829 Para probarlo vamos a utilizar un LED 51 00:04:51,829 --> 00:04:55,850 De tal manera que en una posición se encenderá el LED y en la otra se apagará 52 00:04:55,850 --> 00:04:59,769 Le ponemos por aquí, cerquita, porque luego vamos a poner más circuitos 53 00:04:59,769 --> 00:05:01,829 Y vamos a poner una resistencia 54 00:05:01,829 --> 00:05:06,329 La vamos a dar un valor adecuado, por ejemplo 250 ohmios 55 00:05:06,329 --> 00:05:12,079 Y vamos a conectar el circuito 56 00:05:12,079 --> 00:05:14,459 Bueno, si nos fijamos en estas placas 57 00:05:14,459 --> 00:05:18,240 Pues ya vimos que todos estos puntos van a estar enlazados en línea 58 00:05:18,240 --> 00:05:20,600 Y vemos que aquí nos aparece un más 59 00:05:20,600 --> 00:05:24,959 aunque no es obligatorio porque no deja de ser un dibujo sobre una placa 60 00:05:24,959 --> 00:05:29,980 suele ser recomendable que si tenemos circuitos en los que vamos a necesitar un valor de referencia 61 00:05:29,980 --> 00:05:33,699 de por ejemplo 5 voltios que tenemos aquí en nuestra placa 62 00:05:33,699 --> 00:05:39,860 pues vamos a conectarles desde ahí hasta aquí 63 00:05:39,860 --> 00:05:43,800 entonces cada vez que necesitemos un valor de 5 voltios en algún sitio 64 00:05:43,800 --> 00:05:48,399 pues un trocito de cable de ahí por ejemplo a esta patada aquí 65 00:05:48,399 --> 00:06:05,180 Ahora vamos a hacer lo mismo para el valor negativo de nuestro voltaje GND, pues vamos a coger y al otro, al del negativo, le vamos a poner un cablecito, de tal manera que cuando necesitemos un voltaje negativo, pues lo vamos a coger de ahí arriba. 66 00:06:05,180 --> 00:06:07,139 seguimos avanzando 67 00:06:07,139 --> 00:06:09,839 en nuestra primera aproximación del circuito 68 00:06:09,839 --> 00:06:11,480 en la que dijimos que no nos va a funcionar 69 00:06:11,480 --> 00:06:12,300 lo vamos a probar 70 00:06:12,300 --> 00:06:14,300 vamos a coger este pin del pulsador 71 00:06:14,300 --> 00:06:18,779 y lo vamos a conectar a la entrada digital 12 72 00:06:18,779 --> 00:06:20,920 o bueno, a la que vosotros queráis, es igual 73 00:06:20,920 --> 00:06:23,339 fijaros como puedo ir doblando el cable 74 00:06:23,339 --> 00:06:26,120 para que no pase por encima de los elementos 75 00:06:26,120 --> 00:06:28,240 eso simplemente se hace haciendo clic 76 00:06:28,240 --> 00:06:33,399 bien, y a continuación vamos a poner nuestro circuito del LED 77 00:06:33,399 --> 00:06:35,560 este pin al negativo 78 00:06:35,560 --> 00:06:37,819 y este se lo vamos a conectar al 11 79 00:06:37,819 --> 00:06:39,500 de tal manera que vamos a escribir 80 00:06:39,500 --> 00:06:41,560 el valor que encontremos 81 00:06:41,560 --> 00:06:43,920 en el pin 12 en el pin 11 82 00:06:43,920 --> 00:06:45,540 si ese valor 83 00:06:45,540 --> 00:06:46,939 es un valor alto 84 00:06:46,939 --> 00:06:49,439 el led se encenderá y si es bajo 85 00:06:49,439 --> 00:06:50,560 pues estará apagado 86 00:06:50,560 --> 00:06:52,480 bueno, pues vamos al código 87 00:06:52,480 --> 00:06:55,079 ya sabemos que nosotros 88 00:06:55,079 --> 00:06:56,879 vamos a utilizar el texto 89 00:06:56,879 --> 00:06:59,459 pues como siempre nos aparece el programa por defecto 90 00:06:59,459 --> 00:07:01,300 y vamos a ir modificando cosas sobre él 91 00:07:01,300 --> 00:07:03,259 lo primero, vamos a cambiarle el comentario 92 00:07:03,259 --> 00:07:21,459 Vamos a poner que se trata del programa de pulsadores. A continuación nos vamos a crear las variables de los pines. Voy a crearme una primera variable de tipo entero, por eso pongo in, con el nombre pinLED y le voy a asignar el valor del pin al que tengo conectado el LED, en este caso el 11. 93 00:07:21,459 --> 00:07:28,319 Voy a crearme otra variable que la voy a llamar pinPulsa y le voy a asignar el valor 12. 94 00:07:29,139 --> 00:07:41,660 Llegamos a la función de setup. Vamos a tener un pin en modo salida que va a ser nuestro pinLED pero el otro pin ya no será de salida sino que será de entrada. 95 00:07:41,660 --> 00:07:50,860 Y mal va a ser que no sea input. Eso sí, que no se me olvide que este es el pinPulsa. 96 00:07:51,459 --> 00:08:18,980 Bien, si no sabemos qué valores hay que poner aquí, pues nada, hacemos uso de la referencia, en la referencia vemos que aquí tenemos la función pinMode, pinchamos sobre ella y aquí nos dan información sobre la función, necesita dos parámetros, el parámetro pin, el parámetro mode y nos dice que lo que es el primer parámetro, el número al que está conectado y el modo que admite tres valores, input, output o input pullup, luego veremos qué es esto. 97 00:08:18,980 --> 00:08:30,879 Bueno, volvemos y nos vamos a nuestro circuito. Pues efectivamente aquí teníamos que poner input. Ahora vamos a leer el valor en nuestro pin 12 para saber si hemos pulsado o no hemos pulsado. 98 00:08:31,500 --> 00:08:42,419 Y esto lo vamos a hacer creándonos una variable que la voy a llamar val, por ejemplo. Y, hombre, si tenemos una función de digitalWrite, mal va a ser que no haya una función de digitalRead. 99 00:08:42,419 --> 00:09:01,600 Vamos, de todas formas, a verlo en la referencia. Sí, efectivamente, aquí hay una función que se llama digitalRead. Podemos entrar dentro y podemos ver su sintaxis, lo que significan los parámetros, los valores que devuelve, fijaros que devuelve alto o bajo, y bueno, aquí tenemos un código de ejemplo parecido al que estamos utilizando nosotros. 100 00:09:01,600 --> 00:09:09,940 Lo único que se crea en la variable aquí arriba, en lugar de dentro del look como lo estamos haciendo nosotros, pero por el resto es totalmente equivalente. 101 00:09:11,120 --> 00:09:19,220 Bueno, una cosa curiosa de esta función de DigitalRead es que devuelve un valor, a diferencia del resto de las funciones que hemos estado utilizando hasta ahora. 102 00:09:19,379 --> 00:09:20,600 Aquí tenemos que poner pinPulsa. 103 00:09:22,460 --> 00:09:30,759 Bueno, por último lo que nos quedará es decir que al pinLet le ponemos el valor que acabamos de leer y todo lo demás nos sobra. 104 00:09:30,759 --> 00:09:50,639 Fuera. Bueno, vamos a probar qué hace este programa. Lo ejecutamos y vemos que por defecto el LED está encendido y ya no nos cuadra mucho porque nosotros hicimos este circuito pensando que cuando pulsáramos se encendiera el LED y sin embargo está todo el rato encendido. 105 00:09:50,639 --> 00:09:58,379 Bien, esto era por el problema que adelantaba antes, de que al tener una entrada al aire, pues no funciona bien nuestro circuito. 106 00:09:59,000 --> 00:10:03,179 Bueno, vamos a hacer un pequeño cambio sobre el circuito para que funcione de manera adecuada. 107 00:10:03,179 --> 00:10:11,279 Pues vamos a coger una resistencia y vamos a poner un terminal en GND y el otro en el terminal del pulsador. 108 00:10:11,500 --> 00:10:18,720 El valor de esta resistencia normalmente se pone elevado para que la corriente por la resistencia sea pequeña y no se gaste energía de manera absurda. 109 00:10:18,720 --> 00:10:23,159 Vamos a ejecutar ahora nuestro programa y vamos a ver qué sucede 110 00:10:23,159 --> 00:10:26,019 Por defecto está apagado y si pulsamos se enciende 111 00:10:26,019 --> 00:10:32,100 Bien, realmente lo que estamos haciendo aquí es el circuito de pull down que vimos anteriormente 112 00:10:32,100 --> 00:10:37,759 Fijaros como con una sencilla resistencia logramos resolver el problema que teníamos con nuestro circuito 113 00:10:37,759 --> 00:10:40,840 Otra alternativa es hacer un circuito de pull up 114 00:10:40,840 --> 00:10:45,120 Para ello vamos a hacer otro montaje al lado de este con el circuito de pull up 115 00:10:45,120 --> 00:10:56,840 Vamos a copiarnos el pulsador, el LED, la resistencia del LED, lo conectamos adecuadamente poniendo como pin del LED el 9 y como pin del pulsador el 10. 116 00:10:56,980 --> 00:11:06,799 Bueno, ahora en este caso hay que poner la resistencia del pulsador a la pata positiva y el otro terminal del pulsador a la pata negativa. 117 00:11:07,279 --> 00:11:09,220 Y con esto tendríamos el circuito de pull-up. 118 00:11:09,460 --> 00:11:13,419 Ahora vamos a añadirle cosas al programa para utilizar también este pulsador. 119 00:11:13,419 --> 00:11:17,860 Lo primero que vamos a hacer va a ser cambiar el nombre de las variables de antes para no liarnos. 120 00:11:18,100 --> 00:11:24,399 En la de antes utilizábamos un circuito de pulldown, pues vamos a llamarle pinlet down y pinpulsa down. 121 00:11:24,639 --> 00:11:29,879 Y no se me puede olvidar nunca cambiar el resto de las variables. 122 00:11:33,490 --> 00:11:37,409 Y ahora vamos a crear nosotras dos variables parecidas a estas. 123 00:11:37,950 --> 00:11:41,629 Ahora la vamos a llamar en lugar de down, up, todo lo demás igual. 124 00:11:42,070 --> 00:11:43,710 Y lo único que cambiamos es down por up. 125 00:11:43,710 --> 00:11:52,909 Tenemos que ponerlo también a los valores adecuados. En este caso el de app sería el 9 y el pulsa del app el 10. 126 00:11:53,029 --> 00:12:04,389 Y ahora tenemos que configurar adecuadamente los pines. Fijaros que es copiar y cambiar el nombre de las variables y tendremos que hacer lo mismo con esta parte del código de aquí. 127 00:12:04,389 --> 00:12:08,629 leeremos el del app y escribiremos el del app 128 00:12:08,629 --> 00:12:11,309 si queréis para separarlo todo 129 00:12:11,309 --> 00:12:14,549 pues vamos a llamar a esta variable val también como val down 130 00:12:14,549 --> 00:12:17,490 y a esta variable de aquí pues val app 131 00:12:17,490 --> 00:12:18,950 probemos a ver qué pasa 132 00:12:18,950 --> 00:12:22,149 por defecto sin pulsar nada la del app está encendida 133 00:12:22,149 --> 00:12:24,149 y ahora cuando pulsemos se apagará 134 00:12:24,149 --> 00:12:26,029 cuando soltemos se enciende 135 00:12:26,029 --> 00:12:28,110 a diferencia de la de down 136 00:12:28,110 --> 00:12:32,029 que cuando pulsamos se enciende y cuando soltamos se apaga 137 00:12:32,029 --> 00:12:33,649 en principio es como tiene que funcionar 138 00:12:33,649 --> 00:12:43,549 Y por último vamos a poner otro circuito más, pero haciendo uso del modo Input Pull Up que nos ofrece nuestra función Pin Mode. 139 00:12:43,990 --> 00:12:51,610 En este modo lo que hace Arduino es que se configura electrónicamente para poner una resistencia en el pulsador y no tenerla que poner nosotros. 140 00:12:51,970 --> 00:12:58,929 Vamos a verlo. Vamos a copiar este circuito de Pull Up exactamente igual, aquí al lado, pero sin poner la resistencia del pulsador. 141 00:12:58,929 --> 00:13:07,970 Y vamos a conectar esta salida de mi pulsador al pin 8 y esta salida del LED al pin 7. 142 00:13:08,269 --> 00:13:09,850 Bueno, y vamos con el código. 143 00:13:10,490 --> 00:13:12,629 Bueno, pues ahora nos crearemos dos nuevas variables. 144 00:13:12,870 --> 00:13:16,070 En este caso le vamos a quitar lo del UP y el DOWN. 145 00:13:16,210 --> 00:13:21,309 Ya sabemos que es el que por defecto no monta Arduino sin necesidad de la resistencia. 146 00:13:21,590 --> 00:13:23,049 Y le vamos a asignar los valores adecuados. 147 00:13:23,049 --> 00:13:29,190 al pin del pulsador sería el valor 8 y al pin del LED sería el pin 7. 148 00:13:29,409 --> 00:13:32,529 Y le damos otras dos líneas para los modos, ¿no? 149 00:13:33,210 --> 00:13:37,370 Y aquí le quitamos el app y aquí también le quitamos el app 150 00:13:37,370 --> 00:13:43,070 y le tenemos que poner con el valor que vimos anteriormente, con inputPullApp. 151 00:13:44,049 --> 00:13:48,090 Bueno, y por último, pues vamos a utilizar aquí otras dos líneas de código. 152 00:13:48,490 --> 00:13:51,649 Aquí le quitaremos el app para llamarle solo val, aquí también. 153 00:13:51,649 --> 00:13:56,350 Y aquí escribiremos sobre el LED de la derecha el valor que acabamos de leer. 154 00:13:56,710 --> 00:14:01,149 Bueno, tenemos tres ejemplos de cómo podemos utilizar nuestros pulsadores. 155 00:14:01,669 --> 00:14:06,629 Por defecto estos dos funcionarán igual, la única diferencia es que nos hemos ahorrado esta resistencia. 156 00:14:07,129 --> 00:14:10,649 Bueno, espero que hayáis entendido el funcionamiento básico de este tipo de interruptores. 157 00:14:11,049 --> 00:14:16,129 En las siguientes prácticas seguiremos trabajando con pulsadores para ver algunos detalles de su utilización. 158 00:14:17,309 --> 00:14:19,769 Bueno, ahora os toca a vosotros montar este circuito. 159 00:14:19,769 --> 00:14:20,809 Un saludo.