1 00:00:01,580 --> 00:00:07,259 Hola, en esta práctica vamos a ver cómo generar salidas analógicas. 2 00:00:07,759 --> 00:00:12,960 En la anterior vimos cómo utilizar una entrada analógica, cómo podíamos leer un valor analógico, 3 00:00:13,039 --> 00:00:18,879 es decir, un valor que estuviera comprendido en un rango de valores, en este caso entre 0 y 5, 4 00:00:18,879 --> 00:00:26,899 cualquiera de los valores intermedios, entre 0 y 5 voltios, podemos leerlo utilizando las entradas analógicas 5 00:00:26,899 --> 00:00:31,920 estas que están aquí abajo, ¿vale? Que ya lo escuchamos en su momento, en la práctica 6 00:00:31,920 --> 00:00:36,479 anterior, quiero decir, utilizamos este potenciómetro para generar esos valores entre 0 y 5 y el 7 00:00:36,479 --> 00:00:43,619 Arduino los leía. Bueno, ¿cómo generar salidas analógicas? Pues lo primero que necesitamos 8 00:00:43,619 --> 00:00:48,000 saber es dónde estarían esas salidas analógicas, porque las salidas analógicas tienen sus 9 00:00:48,000 --> 00:00:53,859 propios conectores. Y si uno echa un vistazo a la placa de Arduino, pues no ve unas salidas 10 00:00:53,859 --> 00:00:59,359 que ponga analógicas. Bueno, pues sí que están. Son estos, en los pines estos digitales 11 00:00:59,359 --> 00:01:06,180 del 0 al 13, si os fijáis, hay unos que tienen a la izquierda del número una línea ondulada. 12 00:01:06,760 --> 00:01:18,379 Esos conectores, el 11, el 10, el 9, el 6, el 5 y el 3, permiten generar señales pseudoanalógicas, 13 00:01:18,379 --> 00:01:23,700 es decir, no son analógicas del todo, pero se comportan como si lo fueran. Utilizan una 14 00:01:23,700 --> 00:01:28,019 técnica que pone aquí PWM que son las siglas en inglés de modulación por 15 00:01:28,019 --> 00:01:34,780 anchura de pulso, Pulse Modulation, Width Modulation y esa técnica en qué consiste 16 00:01:34,780 --> 00:01:38,359 bueno pues tengo aquí una página web donde lo vais a ver muy bien la idea es que esos 17 00:01:38,359 --> 00:01:43,260 esos pines sólo pueden en principio sacar y generar valores entre 0 y de 0 o 5 18 00:01:43,260 --> 00:01:48,939 voltios pero lo que sí hacen es modificar generan señales periódicas y 19 00:01:48,939 --> 00:01:52,920 lo que van haciendo es modificar el ciclo de trabajo que se llama aquí vale 20 00:01:52,920 --> 00:01:59,659 duty cycle. Cuanto más tiempo esté la señal arriba, ese valor medio, que viene aquí en 21 00:01:59,659 --> 00:02:04,420 verde como promedio, más alto será. Si tengo solo un 10%, pues la señal será un 10% de 22 00:02:04,420 --> 00:02:11,599 5 voltios. Si tengo al 30%, este ciclo de trabajo, la señal media, el promedio será 23 00:02:11,599 --> 00:02:18,879 un 30% de los 5 voltios y así sucesivamente. Acordaros que cuando estudiamos la alterna 24 00:02:18,879 --> 00:02:22,800 dijimos que el valor medio era el valor de la corriente continua precisamente 25 00:02:22,800 --> 00:02:25,219 entonces, jugando con estos ciclos 26 00:02:25,219 --> 00:02:28,719 en los que la anchura del pulso varía 27 00:02:28,719 --> 00:02:31,319 podemos hacer que el valor medio suba o baje 28 00:02:31,319 --> 00:02:35,219 y eso es la técnica de modulación por anchura de pulso 29 00:02:35,219 --> 00:02:38,060 entonces, si volvemos a la simulación 30 00:02:38,060 --> 00:02:40,900 ¿cómo puedo sacar yo señales? 31 00:02:41,900 --> 00:02:44,300 ¿cómo puedo controlar qué bloques necesito? 32 00:02:44,500 --> 00:02:46,919 ¿qué bloques puedo usar para generar esas salidas? 33 00:02:46,919 --> 00:02:56,219 Bueno, lo primero de todo es que este LED no va a estar conectado al 13, sino al 11, porque el 11 es uno de los que me permite generar salidas analógicas. 34 00:02:56,520 --> 00:03:06,759 Entonces, si me voy al código, quito los bloques que vienen por defecto, como siempre, y en las salidas tengo aquí uno que pone definir pasador, el que sea, en 0. 35 00:03:07,580 --> 00:03:18,139 Fijaros que no me deja coger cualquier pasado, solo unos muy concretos que coinciden con los que tienen el guión este ondulado delante. 36 00:03:18,139 --> 00:03:21,639 Entonces, como mi LED está conectado al 11, pues le pongo aquí el 11. 37 00:03:22,319 --> 00:03:28,900 Entonces, yo puedo sacar valores, puedo mandar, aquí no voy a escribir en este bloque, no voy a escribir valores, 38 00:03:29,099 --> 00:03:33,759 no voy a escribir 3.3, ni 4.2, ni 1.7, ahí no escribo el voltaje. 39 00:03:33,759 --> 00:03:52,360 Porque de nuevo, igual que cuando leíamos voltajes, el Arduino nos lo codificaba en valores que iban comprendidos del 0 al 1023, aquí el valor que yo le doy lo voy a codificar entre 0 y 255 y él ya lo traducirá, entre comillas, a valores entre 0 y 5 voltios. 40 00:03:52,360 --> 00:04:00,599 Por ejemplo, si aquí escribo 2.55 y le doy a iniciar simulación, vais a ver que el LED brilla al máximo. 41 00:04:01,120 --> 00:04:09,419 Si pongo la mitad, que es el número redondo, el 128, y le doy a iniciar simulación, pues ya no brilla al máximo. 42 00:04:09,620 --> 00:04:12,520 Brilla una cosa, tiene un brillo intermedio. 43 00:04:13,020 --> 00:04:18,800 Si tengo la simulación y pongo, yo que sé, por ejemplo, 50, va a brillar, pero muchísimo menos. 44 00:04:18,800 --> 00:04:30,569 ¿Veis? Cuando los valores son bajos se nota un poquito menos, pero bueno, se va notando que brilla cada vez menos cuanto más bajo sea este valor. 45 00:04:30,689 --> 00:04:35,250 Y el valor máximo que puede tener es 255, eso es lo que corresponde a los 5 voltios. 46 00:04:36,290 --> 00:04:45,730 Entonces, en este ejercicio que tengo aquí, lo que yo quiero es leer un valor analógico en acero, lo que viene del potenciómetro, 47 00:04:45,730 --> 00:04:51,850 y a partir de ese valor voy a mandar el valor correspondiente al LED para que brille. 48 00:04:51,949 --> 00:04:56,170 Es decir, yo con mi potenciómetro voy a controlar el brillo, la intensidad del brillo del LED. 49 00:04:56,610 --> 00:04:57,269 ¿Y eso cómo se hace? 50 00:04:58,870 --> 00:05:02,089 Pues muy fácil. Vamos a necesitar dos bloques. 51 00:05:02,290 --> 00:05:06,629 Bueno, lo primero antes de eso, vamos a necesitar una variable que ya la tenemos aquí creada, 52 00:05:06,730 --> 00:05:09,750 que se llama input, para guardar el valor de la lectura. 53 00:05:09,750 --> 00:05:29,569 Y lo vamos a leer igual que antes. Antes teníamos un bloque para leer el pasador analógico a cero, porque está conectado aquí al a cero, y lo que hacíamos era guardar esa variable, esa lectura en la variable input. 54 00:05:29,569 --> 00:05:41,350 Y ahora, a partir de esa lectura que tenemos guardada en la cajita input, lo que vamos a hacer es generar un valor que mandaremos al conector 11. 55 00:05:41,889 --> 00:05:48,089 Lo que pasa es que tenemos que tener en cuenta una cosa, que estamos leyendo valores entre 0 y 1023, o sea, 1024 valores. 56 00:05:48,529 --> 00:05:54,029 Y los valores que yo tengo aquí son 256 valores, es decir, entre 0 y 255. 57 00:05:54,029 --> 00:06:04,550 Bueno, pues lo que tengo que hacer para adecuar esto al rango de valores es los 1024 valores que tengo aquí, voy a dividirlos entre 4. 58 00:06:06,170 --> 00:06:13,029 Así paso de tener valores de 0 a 1023 a tenerlos de 0 a 255, más o menos. 59 00:06:14,149 --> 00:06:17,470 Ya redondará el Arduino cuando haga la división, ¿vale? 60 00:06:17,470 --> 00:06:33,189 Entonces, con estos dos bloques, uno que me lee la entrada analógica en acero, la guarda en la entrada, y este que lo que hace es divide eso que tengo en la variable entrada, en esa cajita, entre comillas, lo divide entre cuatro y lo manda al pasador. 61 00:06:33,189 --> 00:06:45,769 Entonces, con estas dos instrucciones, ya estaría leyendo un valor analógico con el primero y sacando ese valor analógico directamente hacia el LED. Vamos a ver la simulación. Le damos a iniciar simulación. 62 00:06:47,470 --> 00:06:55,230 Y efectivamente el LED está brillando al máximo porque tenía yo el carril colocado ahí. 63 00:06:55,329 --> 00:07:00,370 A medida que lo voy llevando hacia la izquierda, vais a ver que el LED se va a ir apagando. 64 00:07:00,490 --> 00:07:01,470 O debería irse apagando. 65 00:07:02,569 --> 00:07:03,850 Y efectivamente se va apagando. 66 00:07:05,389 --> 00:07:07,550 Va a estar que se apague del todo cuando está en el cero, ¿vale? 67 00:07:07,550 --> 00:07:13,730 Pues así, con esos simplemente dos bloques y utilizando una variable, ya podemos controlar. 68 00:07:13,730 --> 00:07:17,990 estamos leyendo una variable analógica y generando una salida analógica 69 00:07:17,990 --> 00:07:20,370 y estamos controlando el brillo del LED 70 00:07:20,370 --> 00:07:25,930 bueno, pues este es el ejemplo que os acabo de mostrar 71 00:07:25,930 --> 00:07:29,850 este no es el ejercicio, el ejercicio que vamos a hacer es distinto 72 00:07:29,850 --> 00:07:33,290 pero es muy parecido, vamos, voy a guardar el código un momento 73 00:07:33,290 --> 00:07:37,850 y en los componentes voy a buscar uno que se llama 74 00:07:37,850 --> 00:07:41,629 LED RGB, es un LED con cuatro patitas 75 00:07:41,629 --> 00:07:52,790 Aquí está. Voy a hacer zoom. Se llama LED RGB porque combina cuatro colores. RGB, red, green and blue. Rojo, verde y azul. 76 00:07:53,250 --> 00:07:56,949 Entonces, este es el verde, este es el azul y este es el rojo. 77 00:07:57,329 --> 00:08:03,670 Entonces, con estos tres patitas puedo generar cualquier color, porque cualquier color es combinación de rojo, verde y azul. 78 00:08:04,110 --> 00:08:11,490 Por cada una de las patitas lo que vamos a hacer es meter la intensidad con la que queremos que brille el rojo, que brille el verde o que brille el azul. 79 00:08:11,629 --> 00:08:19,790 Esta patita es el cátodo, sería el equivalente al cátodo de un LED normal, 80 00:08:19,790 --> 00:08:25,209 es el que lo que podemos hacer es conectar a la resistencia de protección. 81 00:08:25,430 --> 00:08:30,610 Entonces, lo que haríamos, por ejemplo, es quitamos este LED, conectaríamos nuestro LED aquí, 82 00:08:30,829 --> 00:08:40,950 el cátodo conectado a la resistencia, y aquí entraría una salida analógica procedente del Arduino 83 00:08:40,950 --> 00:08:46,789 con la que controlaríamos el azul, esta del 9, del 10, por ejemplo, controlaría el verde, 84 00:08:47,389 --> 00:08:52,570 y una viniendo del 9 iría aquí y controlaría, por ejemplo, la intensidad del rojo. 85 00:08:53,470 --> 00:08:56,990 Entonces tendríamos esas tres salidas conectadas a estos tres. 86 00:08:57,309 --> 00:08:59,870 Y luego tendríamos, igual que tenemos aquí un potenciómetro, 87 00:09:00,009 --> 00:09:03,850 necesitaríamos un segundo y un tercero, y estaríamos leyendo tres valores, 88 00:09:04,289 --> 00:09:07,190 uno en A0, otro en A1 y otro en A2. 89 00:09:07,190 --> 00:09:10,129 entonces tendríamos tres variables 90 00:09:10,129 --> 00:09:13,210 en una guardaríamos la intensidad del rojo 91 00:09:13,210 --> 00:09:15,649 en otra guardaríamos la intensidad del verde 92 00:09:15,649 --> 00:09:17,370 y en otra guardaríamos la intensidad del azul 93 00:09:17,370 --> 00:09:21,409 que los estaríamos controlando, mandando desde estos tres potenciómetros 94 00:09:21,409 --> 00:09:24,669 y a su vez nosotros los reenviaríamos al RGB 95 00:09:24,669 --> 00:09:27,590 y lo que veríamos es que 96 00:09:27,590 --> 00:09:31,230 se combinarían distintos 97 00:09:31,230 --> 00:09:33,070 aparecerían distintos colores 98 00:09:33,070 --> 00:09:34,950 para que os hagáis una idea 99 00:09:34,950 --> 00:09:37,370 voy a salir de aquí y os voy a enseñar 100 00:09:37,370 --> 00:09:39,129 ya una práctica ya hecha, pero sin 101 00:09:39,129 --> 00:09:41,590 el código, para dejaros algo que hacer 102 00:09:41,590 --> 00:09:43,409 la tengo por aquí 103 00:09:43,409 --> 00:09:45,830 entrada analógica 104 00:09:45,830 --> 00:09:46,809 tal, tal, tal 105 00:09:46,809 --> 00:09:48,870 a ver si la encuentro 106 00:09:48,870 --> 00:09:50,970 vale, para que veáis el resultado 107 00:09:50,970 --> 00:09:57,700 aquí está 108 00:09:57,700 --> 00:09:59,379 entonces, este 109 00:09:59,379 --> 00:10:01,799 voy a ver si me deja simular 110 00:10:01,799 --> 00:10:04,100 lo voy a simular, para que veáis la simulación 111 00:10:04,100 --> 00:10:06,460 este es el resultado 112 00:10:06,460 --> 00:10:08,399 esto es lo que vosotros deberíais obtener 113 00:10:08,399 --> 00:10:15,070 Entonces, si le doy a iniciar simulación 114 00:10:15,070 --> 00:10:16,629 Lo que estoy haciendo es 115 00:10:16,629 --> 00:10:17,809 Controlando 116 00:10:17,809 --> 00:10:21,169 Bueno, fijaros que aquí he puesto resistencias 117 00:10:21,169 --> 00:10:22,389 En cada una de las 118 00:10:22,389 --> 00:10:23,470 De los LEDs 119 00:10:23,470 --> 00:10:25,970 Es mejor, es más seguro hacerlo así, ¿vale? 120 00:10:26,129 --> 00:10:27,429 No hagáis como lo he hecho antes 121 00:10:27,429 --> 00:10:29,970 Poner una resistencia de protección en una, otra en otra y otra en otra 122 00:10:29,970 --> 00:10:31,610 Y luego los tres potenciómetros 123 00:10:31,610 --> 00:10:34,470 Entonces yo, por ejemplo, voy a poner los tres a cero 124 00:10:34,470 --> 00:10:37,570 ¿Qué ocurre si tengo los tres a cero? 125 00:10:37,649 --> 00:10:40,289 Que estoy mandando cero de rojo 126 00:10:40,289 --> 00:10:43,389 0 de verde y 0 de azul 127 00:10:43,389 --> 00:10:44,450 el led se apaga 128 00:10:44,450 --> 00:10:46,250 la simulación aquí va un poco lenta 129 00:10:46,250 --> 00:10:49,490 si muevo este led al máximo 130 00:10:49,490 --> 00:10:51,590 perdón, este potenciamiento al máximo 131 00:10:51,590 --> 00:10:53,750 se pone rojo, este es el control de los rojos 132 00:10:53,750 --> 00:10:57,190 si yo muevo este 133 00:10:57,190 --> 00:10:58,529 y pongo este al máximo 134 00:10:58,529 --> 00:11:00,389 este es el de los azules, vais a ver 135 00:11:00,389 --> 00:11:01,350 se pone azul 136 00:11:01,350 --> 00:11:03,769 es el único que está al máximo 137 00:11:03,769 --> 00:11:06,289 lo pongo a 0 138 00:11:06,289 --> 00:11:08,190 tarda un poquillo en apagarse 139 00:11:08,190 --> 00:11:10,870 Porque lleva retardos 140 00:11:10,870 --> 00:11:12,789 Como estas resistencias creo que me equivoqué 141 00:11:12,789 --> 00:11:13,769 Que no son de 220 142 00:11:13,769 --> 00:11:16,450 Pero bueno, poned resistencias de 220 vosotros y ya está 143 00:11:16,450 --> 00:11:17,549 Y ahora esta 144 00:11:17,549 --> 00:11:20,509 Es el green 145 00:11:20,509 --> 00:11:21,529 El verde, ¿vale? 146 00:11:21,549 --> 00:11:22,590 Yo con esto estoy controlando 147 00:11:22,590 --> 00:11:24,529 Entonces, por ejemplo, si mezclo 148 00:11:24,529 --> 00:11:27,909 Voy a poner este a cero 149 00:11:27,909 --> 00:11:29,649 Si mezclo rojo y azul 150 00:11:29,649 --> 00:11:31,470 ¿Qué harán estos dos? ¿Qué debería obtener? Morado 151 00:11:31,470 --> 00:11:33,730 Bueno, pues voy a poner, subo el rojo 152 00:11:33,730 --> 00:11:35,789 Subo el azul 153 00:11:35,789 --> 00:11:37,409 Y debería obtener un morado 154 00:11:37,409 --> 00:11:40,070 y efectivamente lo que estoy obteniendo, estoy combinando 155 00:11:40,070 --> 00:11:41,990 colores, si pongo todos 156 00:11:41,990 --> 00:11:43,850 al máximo, debería tener 157 00:11:43,850 --> 00:11:45,690 una luz blanca que combine 158 00:11:45,690 --> 00:11:47,870 todos los colores, vamos a esperar que coja un poco 159 00:11:47,870 --> 00:11:49,990 de, ahí está, la luz blanca 160 00:11:49,990 --> 00:11:51,549 que combina todos los colores, bueno, pues 161 00:11:51,549 --> 00:11:53,870 ese es el resultado, ese es el montaje que tenéis 162 00:11:53,870 --> 00:11:55,309 que hacer y el cómo tenéis que 163 00:11:55,309 --> 00:11:57,970 programarlo lo dejo 164 00:11:57,970 --> 00:11:59,570 a vosotros, si sabéis controlar 165 00:11:59,570 --> 00:12:02,070 un LED de un color, sabéis repetir 166 00:12:02,070 --> 00:12:04,070 esto tres veces para un LED 167 00:12:04,070 --> 00:12:05,669 de RGB como este, vale 168 00:12:05,669 --> 00:12:09,370 bueno, pues es el ejercicio, fácil, fácil, fácil