1 00:00:00,690 --> 00:00:18,390 Hola, en el ejercicio de hoy vamos a ver otra de las utilidades que tiene el cable USB que conecta la placa Arduino al ordenador. 2 00:00:18,390 --> 00:00:36,710 Ya vimos dos de ellas. Vimos que podía, servía para que el ordenador transfiriera el programa hasta el Arduino Board, ¿vale? Y otra posibilidad era también suministrarle energía. Mientras yo tenga el Arduino conectado al ordenador, el ordenador está suministrando energía a la placa. 3 00:00:36,710 --> 00:00:52,990 Bueno, pues existe una tercera, pero vamos a ver en dos prácticas. Vamos a ver cómo se pueden mandar datos desde el Arduino al ordenador, que es lo que veremos en este ejercicio, pero también al revés, desde el ordenador al Arduino utilizando este cable, ¿vale? Es lo que se llama el puerto serie, la comunicación serie, ¿vale? 4 00:00:52,990 --> 00:00:58,789 Bueno, pues entonces, esto es lo que vamos a utilizar y vamos a empezar con la simulación, como siempre. 5 00:00:59,490 --> 00:01:05,370 Vamos a tener un potenciómetro conectado a... ya sabéis cómo funciona el potenciómetro, 6 00:01:05,489 --> 00:01:08,409 uno de los terminales está conectado a tierra y el otro a 5 voltios. 7 00:01:08,870 --> 00:01:13,469 Y este cable del medio iría, por ejemplo, al acero, que es un lector analógico, 8 00:01:13,469 --> 00:01:25,480 Con lo cual, los voltajes que se generan aquí entre 0 y 5 pasan directamente, llegan al Arduino, al conector A0 de lectora analógica, ¿vale? 9 00:01:26,140 --> 00:01:30,980 Entonces, ¿cómo se lee eso? Eso ya lo sabemos, lo voy a enseñar con el código. 10 00:01:31,540 --> 00:01:36,959 Ya hemos visto que se utiliza este bloque de entrada, el leer pasador analógico, en este caso el A0, 11 00:01:37,540 --> 00:01:42,079 y que lo guardábamos en una variable, en este caso la vamos a llamar A. 12 00:01:42,079 --> 00:01:44,079 Así es como se lee un valor analógico. 13 00:01:45,040 --> 00:01:47,359 La parte nueva empieza aquí, en este bloque azul. 14 00:01:48,120 --> 00:01:51,280 ¿Cómo mando yo ese valor que he leído al monitor serie? 15 00:01:51,420 --> 00:01:54,920 Bueno, pues en salida tenemos un bloque que permite enviar, 16 00:01:56,200 --> 00:01:57,939 lo que llamo aquí imprimir en monitor serie, 17 00:01:58,060 --> 00:02:01,519 se refiere que es mandarlos a través del cable USB del ordenador. 18 00:02:01,980 --> 00:02:03,140 Entonces, ¿qué es lo que mandamos? 19 00:02:03,140 --> 00:02:09,430 Pues el contenido de la variable A. 20 00:02:09,729 --> 00:02:13,370 Tal cual viene, tal cual se ha guardado en la cajita A, 21 00:02:13,729 --> 00:02:15,909 sale por el cable USB y va al ordenador. 22 00:02:16,449 --> 00:02:17,830 Esto en la simulación, ¿cómo se ve? 23 00:02:17,949 --> 00:02:22,689 Bueno, pues tenemos, cuando abrís el menú de código, abajo pone Monitor Series. 24 00:02:23,409 --> 00:02:26,710 Y aquí es donde van a ir apareciendo, en esta pantallita, los valores que va leyendo. 25 00:02:27,189 --> 00:02:30,449 Entonces, es muy importante colocar un bloque de espera. 26 00:02:30,569 --> 00:02:32,949 ¿Por qué? Porque en electrónica todo tiene un retardo. 27 00:02:33,289 --> 00:02:38,150 Si yo leo, el ordenador y Arduino necesitan un tiempo para leer y para mandarse ese dato. 28 00:02:38,250 --> 00:02:41,250 Yo no puedo inmediatamente mandar otra orden de lectura. 29 00:02:41,250 --> 00:02:43,250 Tengo que darle tiempo a la electrónica a que responda. 30 00:02:44,050 --> 00:02:46,110 Entonces, en la simulación, ¿qué os estaría pasando? 31 00:02:46,110 --> 00:02:54,430 Bueno, pues si yo lanzo la simulación, estoy leyendo del cable a cero, lo guardo en la cajita y esa cajita la mando al monitor serie. 32 00:02:54,569 --> 00:02:59,389 Y efectivamente aquí me aparece el 880 todo el rato. ¿Por qué? Porque este número es el 880. 33 00:02:59,830 --> 00:03:03,909 Acordaros que los valores analógicos se codificaban entre 0 y 1023. 34 00:03:03,909 --> 00:03:05,750 0 sería los 0 voltios 35 00:03:05,750 --> 00:03:07,009 1023, 5 36 00:03:07,009 --> 00:03:09,490 512 sería la mitad 37 00:03:09,490 --> 00:03:10,810 2,5 38 00:03:10,810 --> 00:03:13,469 127, que es un cuarto, sería 39 00:03:13,469 --> 00:03:14,610 1,25, ¿vale? 40 00:03:15,289 --> 00:03:17,830 estamos leyendo un valor analógico, lo que pasa es que codificado 41 00:03:17,830 --> 00:03:19,229 entre valores entre 0 y 1023 42 00:03:19,229 --> 00:03:21,389 si yo muevo esto, por ejemplo, a la izquierda 43 00:03:21,389 --> 00:03:23,129 veis que el número está cambiando 44 00:03:23,129 --> 00:03:25,550 675, 695, ahora 45 00:03:25,550 --> 00:03:27,710 hablemos menos, cuanto más acerque 46 00:03:27,710 --> 00:03:29,710 al 0, más bajo es este valor 47 00:03:29,710 --> 00:03:31,569 ¿vale? luego eso tiene 48 00:03:31,569 --> 00:03:32,229 sentido 49 00:03:32,229 --> 00:03:35,610 lo que pasa es que claro, esto si lo vemos aquí 50 00:03:35,610 --> 00:03:37,830 ves que estoy haciendo algo en el ordenador 51 00:03:37,830 --> 00:03:39,509 y que sale por la pantalla del ordenador 52 00:03:39,509 --> 00:03:41,110 aquí no lo veo yo 53 00:03:41,110 --> 00:03:43,689 no lo veo yo 54 00:03:43,689 --> 00:03:45,610 el sentido real a esto, bueno pues vamos a ir 55 00:03:45,610 --> 00:03:47,349 al Arduino de verdad 56 00:03:47,349 --> 00:03:49,770 voy a ir no solo a los bloques 57 00:03:49,770 --> 00:03:51,069 sino al bloque más texto 58 00:03:51,069 --> 00:03:53,550 y tengo aquí, esta es la función 59 00:03:53,550 --> 00:03:55,930 que quiero llevarme 60 00:03:55,930 --> 00:03:57,469 esto estaba 61 00:03:57,469 --> 00:03:59,169 en la parte anterior, bueno 62 00:03:59,169 --> 00:04:01,629 esto es lo que me interesa 63 00:04:01,629 --> 00:04:10,469 Cojo el código, lo copio, tal cual, y me lo voy a llevar a la IDE de Arduino, que es el programa este que conocíamos. 64 00:04:11,930 --> 00:04:13,129 Programación Arduino IDE. 65 00:04:14,169 --> 00:04:15,069 Queremos que se abra. 66 00:04:17,540 --> 00:04:20,439 Yo no necesito realmente entender el código. 67 00:04:21,019 --> 00:04:26,459 Aunque si le echo un vistazo, veis que estas tres líneas corresponden a los tres bloques que hemos añadido. 68 00:04:26,540 --> 00:04:28,579 El analog read es leer la variable esta. 69 00:04:28,980 --> 00:04:30,819 El serial print es imprimir monitor serie. 70 00:04:30,819 --> 00:04:31,879 Y el delay es el retardo. 71 00:04:31,879 --> 00:04:35,620 entonces lo que voy a hacer es borrar el código que había antes 72 00:04:35,620 --> 00:04:37,079 pego el nuevo 73 00:04:37,079 --> 00:04:39,720 la variable b no la necesito 74 00:04:39,720 --> 00:04:41,879 está porque había usado antes el código de otra manera 75 00:04:41,879 --> 00:04:43,120 entonces este es mi programa 76 00:04:43,120 --> 00:04:44,079 tal cual está 77 00:04:44,079 --> 00:04:47,100 leo, si fijaros, a es igual a analogRig a 0 78 00:04:47,100 --> 00:04:48,579 estoy leyendo eso en la variable 79 00:04:48,579 --> 00:04:50,600 mando esa variable por el puerto serie 80 00:04:50,600 --> 00:04:53,000 y un delay de milisegundos 81 00:04:53,000 --> 00:04:55,160 o sea que hay una correspondencia 82 00:04:55,160 --> 00:04:57,500 y todo esto es dentro de un bucle que se va repitiendo 83 00:04:57,500 --> 00:04:59,540 o sea que no es tan difícil entender este código 84 00:04:59,540 --> 00:05:00,860 bueno, vamos a compilarlo 85 00:05:00,860 --> 00:05:02,319 como siempre para asegurar que todo va bien 86 00:05:02,319 --> 00:05:07,040 no está dando problemas 87 00:05:07,040 --> 00:05:11,149 entonces, oye esto no 88 00:05:11,149 --> 00:05:13,269 lo que os voy a mostrar es esto 89 00:05:13,269 --> 00:05:14,990 que es donde tengo aquí mi Arduino 90 00:05:14,990 --> 00:05:17,649 conectado a mi potenciómetro 91 00:05:17,649 --> 00:05:19,069 ¿vale? veis que tengo tres cables 92 00:05:19,069 --> 00:05:21,410 este está a 5 voltios 93 00:05:21,410 --> 00:05:22,610 está ahí 94 00:05:22,610 --> 00:05:24,990 no sé si se ve muy bien, pero vamos, voy a darle 95 00:05:24,990 --> 00:05:27,290 al autoenfoque, ya que estamos 96 00:05:27,290 --> 00:05:31,620 vamos a verlo bien, la opción de enfocar 97 00:05:31,620 --> 00:05:38,250 o hay mucha luz o no, vale, he enfocado bien 98 00:05:38,250 --> 00:05:40,449 ¿veis? el cable morado está a los 5 voltios 99 00:05:40,449 --> 00:05:41,589 el cable negro a tierra 100 00:05:41,589 --> 00:05:58,170 y el cable azul está conectado a A0, lo que corresponde aquí en el potenciómetro con el cable morado que viene aquí a la línea de 5 voltios, 101 00:05:58,509 --> 00:06:04,009 el cable negro viene a la de tierra y el cable azul es el que viene aquí a leer del potenciómetro en medio. 102 00:06:04,009 --> 00:06:08,050 Luego tengo el mismo esquema del conexionado en la simulación que aquí. 103 00:06:08,629 --> 00:06:12,050 Olvidaos del resto de cositas que hay ahí, porque no las estamos usando, el resto de componentes. 104 00:06:12,550 --> 00:06:16,269 Entonces, lo que vamos a hacer ahora es, este código que ya lo he compilado, lo voy a mandar al Arduino. 105 00:06:16,670 --> 00:06:20,350 En cuanto lo mande, vais a ver que parpadean algunas luces, eso es porque lo está recibiendo. 106 00:06:21,529 --> 00:06:24,649 ¿Veis ese parpadeo de que está la transmisión en marcha? 107 00:06:26,089 --> 00:06:27,649 Y esto ya estaría funcionando. 108 00:06:28,050 --> 00:06:30,370 ¿Dónde puedo ver yo los valores que me están llegando? 109 00:06:30,370 --> 00:06:43,410 Bueno, pues aquí en el ID de Arduino, a la izquierda, si hablo herramientas, monitor serie, aquí es donde debería estar viendo, efectivamente, ahí están, 473, 473, 473. 110 00:06:43,730 --> 00:06:48,689 Ese es el valor que me está llegando, y fijaos que me está llegando a mi ordenador, no a ninguna simulación. 111 00:06:49,149 --> 00:06:55,329 Entonces, si yo muevo esto a la izquierda, me da un valor mayor porque hacia la izquierda están los 5 voltios. 112 00:06:55,329 --> 00:07:08,290 Si lo sigo moviendo más hacia la izquierda, sigue subiendo el valor, lo muevo más y al final llega al 1023, que es el valor máximo. Lo voy a mover ahora hacia la derecha y me estaré acercando hacia el cero, con lo cual los valores van bajando. 113 00:07:08,290 --> 00:07:26,290 ¿Lo veis? Lo bueno es, esto a mí es una cosa interesantísima, a mí me lo parece, que es cómo está un elemento externo al ordenador, como es la placa Arduino, está leyendo valores analógicos y los está enviando al ordenador a través de este cable y aparecen en la pantalla del ordenador aquí. 114 00:07:26,290 --> 00:07:28,829 efectivamente hay una comunicación serie 115 00:07:28,829 --> 00:07:30,709 a través de este puerto serie 116 00:07:30,709 --> 00:07:32,529 entre mi placa Arduino y el ordenador 117 00:07:32,529 --> 00:07:33,230 ¿vale? 118 00:07:34,569 --> 00:07:36,269 bueno, pues este es 119 00:07:36,269 --> 00:07:38,470 un ejemplo bien sencillo 120 00:07:38,470 --> 00:07:39,870 de... voy a apagar esto 121 00:07:39,870 --> 00:07:42,350 esto es un ejemplo bien sencillo 122 00:07:42,350 --> 00:07:43,970 de como 123 00:07:43,970 --> 00:07:47,529 los bloques 124 00:07:47,529 --> 00:07:50,850 de como utilizar la comunicación puerto serie 125 00:07:50,850 --> 00:07:53,050 el ejercicio que os pido es un poco más complicado 126 00:07:53,050 --> 00:07:54,930 pero no mucho más, os voy a pedir 127 00:07:54,930 --> 00:07:56,970 que coloquéis un segundo potenciómetro 128 00:07:56,970 --> 00:07:58,550 clicaríais y arrastraríais 129 00:07:58,550 --> 00:08:06,370 Un extremo lo conectaréis a tierra, otro a 5 voltios, como siempre, aquí tenéis la línea de 5 voltios, aquí la de tierra, y el terminal del medio iría, por ejemplo, a A1. 130 00:08:06,970 --> 00:08:15,410 Entonces, ¿qué vais a hacer? Bueno, lo vais a hacer, si ahora estáis leyendo una variable, estoy leyendo en A, tendríais una segunda variable en B que leería A1. 131 00:08:15,670 --> 00:08:20,290 Entonces lo tendríais aquí añadido, leeríais en A, en la variable A, A0, y en la variable B, A1. 132 00:08:20,829 --> 00:08:27,170 ¿Y qué haríais? Pues como ahora, imprimiríais A, mandaríais A por el puerto serie, y mandaríais B por el puerto serie también. 133 00:08:27,170 --> 00:08:29,370 en vez de sacar un valor, estaríamos sacando dos 134 00:08:29,370 --> 00:08:33,120 y luego, por supuesto, un esperar 135 00:08:33,120 --> 00:08:35,299 bueno, ninguna dificultad hasta ahora 136 00:08:35,299 --> 00:08:37,100 sería simplemente duplicar estos dos bloques 137 00:08:37,100 --> 00:08:39,279 que ya tenemos, bueno, creo que hagáis una cosita 138 00:08:39,279 --> 00:08:41,200 más, también muy sencilla, es utilizar 139 00:08:41,200 --> 00:08:42,879 un bloque sí, ¿para qué? 140 00:08:43,019 --> 00:08:44,559 para que mandéis por el puerto serie 141 00:08:44,559 --> 00:08:46,960 para que consideréis tres posibilidades 142 00:08:46,960 --> 00:08:49,080 si A es mayor que B 143 00:08:49,080 --> 00:08:51,200 mandaréis un mensaje 144 00:08:51,200 --> 00:08:53,059 también con el bloque este de imprimir 145 00:08:53,059 --> 00:08:55,240 el monitor serie, lo que pasa es que lo que imprimiréis aquí 146 00:08:55,240 --> 00:08:56,740 sería un texto, ¿vale? no una variable 147 00:08:56,740 --> 00:08:59,580 es que por ejemplo en Word podéis poner cualquier texto 148 00:08:59,580 --> 00:09:01,299 si A es mayor que B 149 00:09:01,299 --> 00:09:03,919 imprimiríais en el monitor serie A es mayor que B 150 00:09:03,919 --> 00:09:05,919 y veríais que aparecería aquí en la simulación 151 00:09:05,919 --> 00:09:07,919 aparecerían A, B y el mensaje 152 00:09:07,919 --> 00:09:08,779 A es mayor que B 153 00:09:08,779 --> 00:09:11,580 si A es igual a B, mandaréis un mensaje 154 00:09:11,580 --> 00:09:13,460 imprimir el monitor serie A es igual a B 155 00:09:13,460 --> 00:09:15,960 y si B es mayor que A, mandaríais un mensaje 156 00:09:15,960 --> 00:09:17,059 B es mayor que A 157 00:09:17,059 --> 00:09:19,940 ¿vale? pues un ejercicio facilísimo 158 00:09:19,940 --> 00:09:21,360 si habéis entendido esto y habéis 159 00:09:21,360 --> 00:09:23,120 os he dado prácticamente el código 160 00:09:23,120 --> 00:09:25,659 o sea que no tiene ninguna dificultad 161 00:09:25,659 --> 00:09:26,759 Y eso es lo que tenéis que mandar 162 00:09:26,759 --> 00:09:27,220 ¿Vale? 163 00:09:28,039 --> 00:09:28,879 Venga, hasta luego