 
{"id":3966,"date":"2021-12-19T15:57:47","date_gmt":"2021-12-19T15:57:47","guid":{"rendered":"http:\/\/132.248.251.218\/wpArduino\/index.php\/manual-de-programacion-con-arduino-copy\/practica-visualizacion-de-numeros-copy\/"},"modified":"2023-05-05T00:16:12","modified_gmt":"2023-05-05T00:16:12","slug":"dado-electronico","status":"publish","type":"page","link":"https:\/\/iaciduino.enp.unam.mx\/index.php\/modulo-7-segmentos\/dado-electronico\/","title":{"rendered":"Dado electr\u00f3nico"},"content":{"rendered":"\n<p>Pr\u00e1cticas M\u00f3dulo 7-segmentos<\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-columns are-vertically-aligned-center has-background is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\" style=\"background-color:#f2f2f2\">\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:20%\">\n<figure class=\"wp-block-image alignfull size-large\"><img decoding=\"async\" src=\"https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/01\/ArmandoCircuitosAnimado-1.gif\" alt=\"\"\/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-table is-style-regular\"><table class=\"has-background\" style=\"background-color:#e7f5fe\"><tbody><tr><td>T\u00edtulo de la pr\u00e1ctica:<\/td><td>Dado electr\u00f3nico<\/td><\/tr><tr><td>Objetivo:<\/td><td>El alumno codificar\u00e1 un programa en Arduino que genere n\u00fameros pseudoaleatorios para simular el lanzamiento de un dado.<\/td><\/tr><tr><td>Tiempo estimado:<\/td><td>100 minutos<\/td><\/tr><tr><td>Nivel de dificultad:<\/td><td>Intermedio<\/td><\/tr><\/tbody><\/table><\/figure>\n<\/div>\n<\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#002a7b\" class=\"has-inline-color\">Introducci\u00f3n<\/mark><\/h2>\n\n\n\n<p>\u00bfTe gusta escuchar m\u00fasica? \u00bfAlguna vez has configurado tu aplicaci\u00f3n de m\u00fasica favorita para escuchar una lista de reproducci\u00f3n aleatoria? \u00bfTe has preguntado c\u00f3mo es que tu aplicaci\u00f3n selecciona la siguiente canci\u00f3n?<\/p>\n<p>Sabemos que las computadoras son capaces de recibir datos de entrada, procesarlos y generar informaci\u00f3n de salida. Este proceso es determin\u00edstico, esto es, dado un conjunto de datos de entrada, las salidas siempre van a ser las mismas, es decir, los resultados de una computadora siempre son predecibles. Entonces, surge la pregunta: \u00bfuna computadora puede generar n\u00fameros aleatorios?<\/p>\n<p>Uno de los eventos aleatorios con el que est\u00e1s m\u00e1s familiarizado es con el lanzamiento de un dado. En esta pr\u00e1ctica, programar\u00e1s un display de 7 segmentos que simule el lanzamiento de un dado y te permita verificar si tu respuesta a la pregunta anterior es correcta.<\/p>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#002a7b\" class=\"has-inline-color\">Materiales<\/mark><\/h2>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-4 wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"798\" height=\"600\" data-id=\"3888\" src=\"https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/computadora-1.png\" alt=\"computadora\" class=\"wp-image-3888\" srcset=\"https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/computadora-1.png 798w, https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/computadora-1-300x226.png 300w, https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/computadora-1-768x577.png 768w\" sizes=\"auto, (max-width: 798px) 100vw, 798px\" \/><figcaption class=\"wp-element-caption\">Computadora<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" data-id=\"3782\" src=\"https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/tarjeta_arduino-1024x768.png\" alt=\"tarjeta_arduino\" class=\"wp-image-3782\" srcset=\"https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/tarjeta_arduino-1024x768.png 1024w, https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/tarjeta_arduino-300x225.png 300w, https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/tarjeta_arduino-768x576.png 768w, https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/tarjeta_arduino-1536x1152.png 1536w, https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/tarjeta_arduino-2048x1536.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Tarjeta Arduino UNO<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" data-id=\"3784\" src=\"https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/modulo_7segmentos-1024x768.png\" alt=\"M\u00f3dulo 7-segmentos\" class=\"wp-image-3784\" srcset=\"https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/modulo_7segmentos-1024x768.png 1024w, https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/modulo_7segmentos-300x225.png 300w, https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/modulo_7segmentos-768x576.png 768w, https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/modulo_7segmentos-1536x1152.png 1536w, https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/modulo_7segmentos-2048x1536.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">M\u00f3dulo 7-segmentos<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" data-id=\"3877\" src=\"https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/cable-usb-1024x768.png\" alt=\"cable-usb\" class=\"wp-image-3877\" srcset=\"https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/cable-usb-1024x768.png 1024w, https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/cable-usb-300x225.png 300w, https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/cable-usb-768x576.png 768w, https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/cable-usb-1536x1152.png 1536w, https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/cable-usb-2048x1536.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Cable USB-AB<\/figcaption><\/figure>\n<figcaption class=\"blocks-gallery-caption wp-element-caption\">Haz clic sobre la imagen del material del cual desees obtener mayor informaci\u00f3n.<\/figcaption><\/figure>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4><span style=\"color: #002b7a;\">Programas<\/span><\/h4>\n<p>Arduino IDE. Disponible en: <a href=\"https:\/\/www.arduino.cc\/en\/software\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.arduino.cc\/en\/software<\/a><\/p>\n<\/div><\/div>\n\n\n\n<div style=\"height:51px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#002a7b\" class=\"has-inline-color\">Desarrollo<\/mark><\/h2>\n\n\n\n<p>Vamos a iniciar analizando qu\u00e9 se debe hacer para resolver el problema. Un dado est\u00e1 compuesto de 6 caras. Cada cara tiene un valor distinto (un n\u00famero entero entre 1 y 6). El resultado del lanzamiento del dado es un valor aleatorio entre 1 y 6. Con esta informaci\u00f3n se pueden identificar las entradas, los procesos y las salidas del programa los cuales se muestran en la Tabla 1.<\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table><thead><tr><th class=\"has-text-align-left\" data-align=\"left\">Entradas<\/th><th class=\"has-text-align-left\" data-align=\"left\">Procesos<\/th><th>Salidas<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-left\" data-align=\"left\">Ninguna<\/td><td class=\"has-text-align-left\" data-align=\"left\">Generaci\u00f3n de un n\u00famero aleatorio entre 1 y 6<\/td><td>N\u00famero aleatorio<\/td><\/tr><tr><td class=\"has-text-align-left\" data-align=\"left\"><\/td><td class=\"has-text-align-left\" data-align=\"left\">Mostrar el n\u00famero aleatorio en el display de 7 segmentos<\/td><td><\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Tabla 1 Especificaci\u00f3n de datos de entrada, procesos y datos de salida del programa dado electr\u00f3nico<\/figcaption><\/figure>\n\n\n\n<div style=\"height:51px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Para la programaci\u00f3n del dado se usar\u00e1 el display de 7 segmentos que se encuentra integrado en el <em>m\u00f3dulo 7-segmentos<\/em>. Este m\u00f3dulo est\u00e1 dise\u00f1ado para conectarse a la tarjeta Arduino UNO como un shield.<\/p>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<h4><span style=\"color: #0000ff;\">Conexi\u00f3n del M\u00f3dulo 7-segmentos<\/span><\/h4>\n<p>Conecta el <em>m\u00f3dulo 7-segmentos<\/em> a la tarjeta Arduino UNO como se muestra en la Figura 1. Observa que el lado del m\u00f3dulo que tiene 18 pines debe ser insertado en la l\u00ednea de pines digitales de la tarjeta Arduino y el lado que tiene 8 pines se conecta a los pines de alimentaci\u00f3n.<\/p>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"481\" height=\"381\" src=\"http:\/\/132.248.251.218\/wpArduino\/wp-content\/uploads\/2021\/12\/conexion_modulo7seg.jpg\" alt=\"\" class=\"wp-image-3818\" srcset=\"https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/conexion_modulo7seg.jpg 481w, https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/conexion_modulo7seg-300x238.jpg 300w\" sizes=\"auto, (max-width: 481px) 100vw, 481px\" \/><figcaption class=\"wp-element-caption\">Figura 1 Conexi\u00f3n del m\u00f3dulo 7-segmentos a la tarjeta Arduino UNO<\/figcaption><\/figure><\/div>\n\n\n<p><em>Nota: si no tienes un m\u00f3dulo de 7-segmentos, puedes construir el circuito electr\u00f3nico mostrado en la Figura 2. Toma en cuenta que se est\u00e1 utilizando un display de 7 segmentos de c\u00e1todo com\u00fan.<\/em><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/display_7seg_conexion.png\" alt=\"display_7seg_conexion\"\/><figcaption class=\"wp-element-caption\">Figura 2 Diagrama de conexiones del M\u00f3dulo 7-segmentos<\/figcaption><\/figure><\/div>\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<h4><span style=\"color: #0000ff;\">Configuraci\u00f3n de los pines de conexi\u00f3n del display de 7 segmentos<\/span><\/h4>\n<p>Vamos a identificar a qu\u00e9 pines de la tarjeta Arduino UNO est\u00e1 conectado el display de 7 segmentos.<\/p>\n<p><strong>Ejercicio 1 Identificaci\u00f3n de los pines de conexi\u00f3n de los segmentos del display<\/strong><\/p>\n<p>Observa el diagrama de conexiones de la Figura 2 y llena la siguiente tabla arrastrando el n\u00famero de pin al cuadro del segmento del display al que est\u00e1 conectado.<\/p>\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-49\" class=\"h5p-iframe\" data-content-id=\"49\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Display 7 segmentos. Tabla PINES\"><\/iframe><\/div>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p><strong>Ejercicio 2 Declaraci\u00f3n del arreglo PINES<\/strong><\/p>\n\n\n\n<p>Analiza las caracter\u00edsticas de los datos de la tabla anterior y piensa c\u00f3mo puedes representarlos y almacenarlos en un arreglo unidimensional al que llamaremos PINES. Responde las siguientes preguntas que te ayudar\u00e1n a declarar el arreglo PINES.<\/p>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-50\" class=\"h5p-iframe\" data-content-id=\"50\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Display 7 segmentos. Declaraci\u00f3n arreglo PINES\"><\/iframe><\/div>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<p><strong>Ejercicio 3 Configuraci\u00f3n de los pines de conexi\u00f3n del display de 7 segmentos<\/strong><\/p>\n<p>Ahora procederemos a configurar el modo de comportamiento de los pines. Responde las siguientes preguntas que te orientar\u00e1n para codificar las instrucciones de Arduino correspondientes.<\/p>\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-51\" class=\"h5p-iframe\" data-content-id=\"51\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Display 7 segmentos. Configuraci\u00f3n arreglo PINES\"><\/iframe><\/div>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<p><strong>Ejercicio 4 Activaci\u00f3n del display de 7 segmentos<\/strong><\/p>\n<p>El m\u00f3dulo 7-segmentos tiene integrado un transistor NPN que te permite activar o desactivar el display de 7 segmentos. Vamos a codificar las instrucciones para configurar el pin al cual est\u00e1 conectado el transistor para que se comporte como una salida y posteriormente activar el display. Observa la Figura 2 y responde las siguientes preguntas:<\/p>\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-52\" class=\"h5p-iframe\" data-content-id=\"52\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Display 7 segmentos. Activaci\u00f3n del display\"><\/iframe><\/div>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<h4><span style=\"color: #0000ff;\">Generaci\u00f3n del n\u00famero aleatorio<\/span><\/h4>\n<p>Para programar la generaci\u00f3n del n\u00famero aleatorio que resulte del lanzamiento del dado, primero declararemos una variable a la cual llamaremos numAleatorio. Los valores que puede almacenar esta variable son los n\u00fameros de las caras del dado (1-6), por lo tanto, su tipo de datos ser\u00e1 int. De esta forma, la instrucci\u00f3n de Arduino para declarar la variable es:<\/p>\n<pre><span style=\"color: #3366ff;\">int<\/span> numAleatorio;<\/pre>\n<p>El n\u00famero aleatorio lo vamos a generar con la funci\u00f3n random de Arduino. Su sintaxis es:<\/p>\n<p><strong><span style=\"color: #0000ff;\">Sintaxis de la funci\u00f3n random<\/span><\/strong><\/p>\n\n\n<p class=\"has-white-color has-text-color has-background\" style=\"background-color:#002b7a\">random(min, max);<\/p>\n\n\n<p><strong>Par\u00e1metros<\/strong><\/p>\n<p style=\"padding-left: 40px;\"><strong>min<\/strong> \u2013 l\u00edmite inferior del valor aleatorio (inclusivo)<\/p>\n<p style=\"padding-left: 40px;\"><strong>max<\/strong> \u2013 l\u00edmite superior del valor aleatorio (exclusivo)<\/p>\n<p><strong>Valor de retorno<\/strong><\/p>\n<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Un n\u00famero aleatorio entre min y max-1<\/p>\n<p>Entonces, la instrucci\u00f3n para generar un n\u00famero aleatorio entre 1 y 6 que necesitamos para programar nuestro dado es:<\/p>\n<pre><span style=\"color: #ff6600;\">random<\/span>(1,7);<\/pre>\n<p>El valor de retorno de la funci\u00f3n lo almacenaremos en la variable numAleatorio que definimos previamente. La codificaci\u00f3n de la instrucci\u00f3n de asignaci\u00f3n es:<\/p>\n<pre>numAleatorio = <span style=\"color: #ff6600;\">random<\/span>(1,7);<\/pre>\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<h4><span style=\"color: #0000ff;\">Visualizaci\u00f3n del n\u00famero aleatorio en el display<\/span><\/h4>\n<p>A continuaci\u00f3n, vamos a programar las instrucciones para que podamos visualizar el n\u00famero aleatorio en el display de 7 segmentos. Como ya sabes, esta acci\u00f3n se basa en el encendido y apagado de sus segmentos. Para recordar los segmentos que debes encender o apagar te sugerimos realizar el siguiente ejercicio:<\/p>\n<p><strong>Ejercicio 5 Identificaci\u00f3n del estado de los segmentos del display para representar un d\u00edgito<\/strong><\/p>\n<p>Arrastra la etiqueta 0 a las casillas de los segmentos que deben estar apagados (LOW) y la etiqueta 1 a las casillas de los segmentos que deben estar encendidos (HIGH) para que se pueda visualizar el n\u00famero correspondiente:<\/p>\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-48\" class=\"h5p-iframe\" data-content-id=\"48\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Display 7 segmentos. Tabla d\u00edgitos\"><\/iframe><\/div>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<p><strong>Ejercicio 6 Declaraci\u00f3n del arreglo DIGITOS<\/strong><\/p>\n<p>Analiza las caracter\u00edsticas de los datos de la tabla anterior y piensa c\u00f3mo podr\u00edas representarlos y almacenarlos en un arreglo bidimensional al que llamaremos DIGITOS. Las siguientes preguntas te ayudar\u00e1n a identificar los elementos necesarios para declarar el arreglo:<\/p>\n\n\n<div class=\"h5p-iframe-wrapper\"><iframe id=\"h5p-iframe-53\" class=\"h5p-iframe\" data-content-id=\"53\" style=\"height:1px\" src=\"about:blank\" frameBorder=\"0\" scrolling=\"no\" title=\"Display 7 segmentos. Declaraci\u00f3n arreglo DIGITOS\"><\/iframe><\/div>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<p>Una vez declarado e inicializado el arreglo DIGITOS, el siguiente paso es codificar las instrucciones que permitan la visualizaci\u00f3n del n\u00famero aleatorio en el display de 7 segmentos. Esta acci\u00f3n la realizaremos con el siguiente ciclo for.<\/p>\n<pre><span style=\"color: #339966;\">for<\/span> (int col<span style=\"color: #339966;\">=0<\/span>; col<span style=\"color: #339966;\">&lt;8<\/span>; col<span style=\"color: #339966;\">++<\/span>) {<br><span style=\"color: #ff6600;\">  &nbsp;digitalWrite<\/span>(PINES[col],DIGITOS[numAleatorio][col]);<br>}<br><br><\/pre>\n<p>Te invitamos a revisar el siguiente video para que comprendas c\u00f3mo funciona el for anterior:<\/p>\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Visualizaci\u00f3n de d\u00edgitos en el M\u00f3dulo 7-segmentos\" width=\"720\" height=\"405\" src=\"https:\/\/www.youtube.com\/embed\/xDE94e5Fjss?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe>\n<\/div><figcaption class=\"wp-element-caption\">Visualizaci\u00f3n de d\u00edgitos en el M\u00f3dulo 7-segmentos<\/figcaption><\/figure>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<h4><span style=\"color: #0000ff;\">Codificaci\u00f3n del programa de Arduino<\/span><\/h4>\n<p>Es el momento de unir todas las instrucciones de Arduino que hemos identificado para la soluci\u00f3n del problema en un solo programa. Para ello, sustituye el texto <span style=\"color: #ff0000;\">&lt;&lt;bloque de instrucciones Ejercicio n&gt;&gt;<\/span> con las instrucciones que codificaste en el ejercicio de la pr\u00e1ctica indicado.<\/p>\n<pre>\/*&nbsp; Pr\u00e1ctica Dado electr\u00f3nico<br>*&nbsp;&nbsp; Programa que genera un n\u00famero aleatorio y lo<br>*&nbsp;&nbsp; muestra en un display de 7 segmentos<br>*\/<br><br>\/*&nbsp; Declaraci\u00f3n e inicializaci\u00f3n del arreglo unidimensional PINES<br>* &nbsp;&nbsp;que almacena los n\u00fameros de pines conectados a<br>*&nbsp; &nbsp;cada segmento del display<br>*\/<br><span style=\"color: #ff0000;\">&lt;&lt;bloque de instrucciones Ejercicio 2&gt;&gt;<\/span><br><br>\/*&nbsp; Declaraci\u00f3n e inicializaci\u00f3n del arreglo bidimensional DIGITOS<br>*&nbsp;&nbsp; que almacena el valor del estado de los segmentos<br>*&nbsp;&nbsp; (1-encendido, 0-apagado)<br>*&nbsp;&nbsp; para representar los d\u00edgitos del 0 al 9<br>*\/<br><span style=\"color: #ff0000;\">&lt;&lt;bloque de instrucciones Ejercicio 6&gt;&gt;<\/span><br><br>\/*&nbsp; Declaraci\u00f3n de la variable numAleatorio que almacena<br>* &nbsp; el n\u00famero aleatorio generado por el programa<br>*\/<br>   <span style=\"color: #3366ff;\">int<\/span> numAleatorio;<br><br><span style=\"color: #3366ff;\">void<\/span> <span style=\"color: #339966;\">setup<\/span>(){<br><br>&nbsp; \/\/ Configuraci\u00f3n de los pines de conexi\u00f3n de los segmentos del display de salida<br>  <span style=\"color: #ff0000;\">&lt;&lt;bloque de instrucciones Ejercicio 3&gt;&gt;<\/span><br><br>&nbsp; \/\/Configuraci\u00f3n del pin de conexi\u00f3n del transistor de salida<br>  <span style=\"color: #ff0000;\">&lt;&lt;bloque de instrucciones Ejercicio 4.2&gt;&gt;<\/span><br><br>&nbsp; \/\/Activaci\u00f3n del display de 7 segmentos<br>  <span style=\"color: #ff0000;\">&lt;&lt;bloque de instrucciones Ejercicio 4.3&gt;&gt;<\/span><br><br>}<br><br><span style=\"color: #3366ff;\">void<\/span> <span style=\"color: #339966;\">loop<\/span>(){<br><br>&nbsp; \/\/Generaci\u00f3n de un n\u00famero aleatorio entre 1 y 6<br>  numAleatorio = <span style=\"color: #ff6600;\">random<\/span>(1,7);<br><br>&nbsp; \/\/Visualizaci\u00f3n del n\u00famero aleatorio en el display<br>  <span style=\"color: #ff0000;\">&lt;&lt;Escribe la estructura for que permite visualizar el n\u00famero aleatorio en el display &gt;&gt;<\/span><br><span style=\"color: #ff6600;\">  delay<\/span>(<span style=\"color: #339966;\">1500<\/span>);<br>}<br><br><br><\/pre>\n<p>Captura, compila y ejecuta tu programa. Para ello, realiza las siguientes acciones:<\/p>\n<ol>\n<li>Abre el IDE de Arduino.<\/li>\n<li>Crea un nuevo sketch.<\/li>\n<li>Captura las instrucciones del programa.<\/li>\n<li>Guarda tu programa.<\/li>\n<li>Compila tu programa. En caso necesario, dep\u00faralo hasta que no tenga ning\u00fan error.<\/li>\n<li>Conecta la tarjeta Arduino a tu computadora.<\/li>\n<li>Selecciona el puerto serial (COM) de la computadora asociado a la tarjeta.<\/li>\n<li>Sube el programa a la memoria de la tarjeta Arduino UNO.<\/li>\n<li>Ejecuta tu programa.<\/li>\n<\/ol>\n<p>El resultado de la ejecuci\u00f3n de tu programa deber\u00e1 ser la que se muestra en la Figura 3.<\/p>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/iaciduino.enp.unam.mx\/\/wpArduino\/wp-content\/uploads\/2021\/12\/dado-electronico.gif\" alt=\"\"\/><figcaption class=\"wp-element-caption\">Figura 3 Resultado de la ejecuci\u00f3n del programa dado electr\u00f3nico<\/figcaption><\/figure><\/div>\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<h2><span style=\"color: #002a7b;\">Resultados<\/span><\/h2>\n<p>Vamos a analizar los resultados de tu programa. Para ello, dibuja en una hoja la siguiente tabla:<\/p>\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th class=\"has-text-align-center\" data-align=\"center\">No. de prueba<\/th><th class=\"has-text-align-center\" data-align=\"center\">N\u00famero 1<\/th><th class=\"has-text-align-center\" data-align=\"center\">N\u00famero 2<\/th><th class=\"has-text-align-center\" data-align=\"center\">N\u00famero 3<\/th><th class=\"has-text-align-center\" data-align=\"center\">N\u00famero 4<\/th><th class=\"has-text-align-center\" data-align=\"center\">N\u00famero 5<\/th><\/tr><\/thead><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\">1<\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">2<\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">3<\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">4<\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">&#8230;<\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">n<\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><\/td><\/tr><\/tbody><\/table><figcaption class=\"wp-element-caption\">Tabla 2 Registro de los datos obtenidos en la ejecuci\u00f3n del programa Dado electr\u00f3nico<\/figcaption><\/figure>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<p>En esta tabla registrar\u00e1s los valores obtenidos en las pruebas del lanzamiento del dado que muestre tu programa en el display de 7 segmentos de acuerdo con las siguientes acciones:<\/p>\n<ul>\n<li>Oprime el bot\u00f3n de reinicio de la tarjeta Arduino UNO (Figura 4). Esta acci\u00f3n generar\u00e1 que el microcontrolador detenga el programa que actualmente se est\u00e1 ejecutando y lo ejecute nuevamente desde su inicio.<\/li>\n<\/ul>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" src=\"https:\/\/iaciduino.enp.unam.mx\/wp-content\/uploads\/2021\/12\/boton-reinicio.png\" alt=\"boton-reinicio\"\/><figcaption class=\"wp-element-caption\">Figura 4 Ubicaci\u00f3n del bot\u00f3n de reinicio de la tarjeta Arduino UNO<\/figcaption><\/figure><\/div>\n\n<ul>\n<li>Registra en tu tabla, en la prueba 1, los primeros 5 n\u00fameros que se visualizaron en el display.<\/li>\n<li>Vuelve a oprimir el bot\u00f3n de reinicio de la tarjeta Arduino UNO.<\/li>\n<li>Ahora registra en la prueba 2&nbsp; los primeros 5 n\u00fameros que se visualizaron en el display.<\/li>\n<li>Prueba varias veces el mismo procedimiento y registra los resultados en el n\u00famero de prueba correspondiente.<\/li>\n<\/ul>\n<p>Como te habr\u00e1s dado cuenta, la secuencia de n\u00fameros generados en todos los casos es la misma. Entonces, \u00bfel programa realmente genera n\u00fameros aleatorios?<\/p>\n<p>Vamos a probar lo siguiente:<\/p>\n<ul>\n<li>Modifica tu programa agregando la siguiente l\u00ednea de c\u00f3digo dentro de la funci\u00f3n setup. Recuerda que cada vez que modifiques tu programa debes compilarlo y subirlo nuevamente a la memoria de la tarjeta Arduino.&nbsp;<\/li>\n<\/ul>\n<pre><span style=\"color: #ff6600;\">randomSeed<\/span>(<span style=\"color: #339966;\">30<\/span>);<\/pre>\n<ul>\n<li>Oprime el bot\u00f3n de reinicio de la tarjeta Arduino UNO.<\/li>\n<li>Registra en tu tabla los primeros 5 n\u00fameros que se visualicen en el display.<\/li>\n<\/ul>\n<p>\u00bfLos n\u00fameros que acabas de registrar son iguales a los anteriores? \u00bfHemos logrado generar n\u00fameros aleatorios con la modificaci\u00f3n hecha al programa? Verifiquemos si tu respuesta es correcta.<\/p>\n<ul>\n<li>Repite al menos 3 veces el proceso de reinicio del programa y registra los valores de cada prueba en tu tabla.<\/li>\n<li>Modifica el par\u00e1metro de la funci\u00f3n randomSeed, en lugar de 30 coloca cualquier otro n\u00famero.<\/li>\n<li>Vuelve a repetir al menos 3 veces el proceso de reinicio del programa y nuevamente registra los valores de cada prueba en la tabla.<\/li>\n<\/ul>\n<p>\u00bfQu\u00e9 pas\u00f3 cuando cambiaste el valor del par\u00e1metro de la funci\u00f3n randomSeed por otro n\u00famero? \u00bfLos n\u00fameros obtenidos en cualquiera de los casos de prueba son aleatorios?<\/p>\n<p>De los resultados obtenidos, podemos concluir que el programa NO genera n\u00fameros aleatorios, lo que genera son n\u00fameros pseudoaleatorios.<\/p>\n<p>Los <em>n\u00fameros pseudoaleatorios<\/em>, como su nombre lo indica, realmente no son n\u00fameros aleatorios, aunque lo parecen. Estos n\u00fameros siguen un patr\u00f3n, son peri\u00f3dicos y son generados a partir de algoritmos.<\/p>\n<p>En muchas ocasiones, la generaci\u00f3n de n\u00fameros pseudoaleatorios inicia a partir de un valor arbitrario conocido con el nombre de <em>semilla<\/em>.&nbsp; Con la funci\u00f3n randomSeed se puede definir esta semilla.<\/p>\n<p><strong><span style=\"color: #0000ff;\">Sintaxis de la funci\u00f3n randomSeed<\/span><\/strong><\/p>\n\n\n<p class=\"has-white-color has-text-color has-background\" style=\"background-color:#002b7a\">randomSeed(valor);<\/p>\n\n\n<p><strong>Par\u00e1metros<\/strong><\/p>\n<p style=\"padding-left: 40px;\"><strong>valor<\/strong> \u2013 n\u00famero con el que se inicializa la secuencia pseudoaleatoria<\/p>\n<p>La funci\u00f3n randomSeed inicializa el generador de n\u00fameros pseudoaleatorios de Arduino, haciendo que comience en un punto espec\u00edfico de la secuencia. De esta forma, la funci\u00f3n randomSeed puede ser \u00fatil para generar secuencias de n\u00fameros pseudoaleatorios exactamente iguales en repetidas ocasiones.<\/p>\n<p>Ahora bien, si lo que se requiere es generar secuencias de n\u00fameros pseudoaleatorios distintas, como es el caso de nuestro programa del dado electr\u00f3nico, en lugar de definir la semilla a partir de un valor constante, la vamos a obtener de la lectura de un pin anal\u00f3gico de la tarjeta Arduino que no se est\u00e9 utilizando.<\/p>\n<p>Vamos a probar este \u00faltimo m\u00e9todo en nuestro programa. Para ello, modifica la funci\u00f3n randomSeed de tu programa como se indica a continuaci\u00f3n:<\/p>\n<pre><span style=\"color: #ff6600;\">randomSeed<\/span>(<span style=\"color: #ff6600;\">analogRead<\/span>(A0));<\/pre>\n<p>Repite el proceso de reiniciar la tarjeta Arduino varias veces y registra los n\u00fameros obtenidos en tu tabla. \u00bfSon aleatorios estos n\u00fameros?<\/p>\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<h2><span style=\"color: #002b7a;\">Conclusiones<\/span><\/h2>\n<p>Un <em>n\u00famero aleatorio<\/em> \u00abes aquel n\u00famero que se obtiene netamente al azar, es decir, es todo n\u00famero que pertenezca a un rango de valores o a un conjunto infinito de valores y que tenga la misma probabilidad de ser elegido, adem\u00e1s de que la elecci\u00f3n no dependa de la elecci\u00f3n de otro n\u00famero\u201d (FES Cuautitl\u00e1n, 2018).<\/p>\n<p>Los n\u00fameros pseudoaleatorios son aquellos que siguen un patr\u00f3n, son peri\u00f3dicos y son generados a partir de algoritmos. De esta forma, si se analiza una serie de n\u00fameros pseudoaleatorios suficientemente grande, es posible predecir con certeza el siguiente n\u00famero de la secuencia.<\/p>\n<p>Con estos conceptos en mente, es momento de responder a las preguntas iniciales de la pr\u00e1ctica:<\/p>\n<ol>\n<li>\u00bfUna computadora puede generar <em>n\u00fameros aleatorios<\/em>? Justifica tu respuesta.<\/li>\n<li>\u00bfC\u00f3mo selecciona las canciones una aplicaci\u00f3n de m\u00fasica para generar una lista de reproducci\u00f3n aleatoria?<\/li>\n<\/ol>\n<p>Finalmente, comenta \u00bfqu\u00e9 aprendiste con la elaboraci\u00f3n de esta pr\u00e1ctica?<\/p>\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group has-background\" style=\"background-color:#f2f2f2\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading\"><mark style=\"background-color:rgba(0, 0, 0, 0);color:#002b7a\" class=\"has-inline-color\">Reto Arduino<\/mark><\/h2>\n\n\n\n<p>Modifica el programa del dado electr\u00f3nico para que el lanzamiento del dado no se realice autom\u00e1ticamente, sino que est\u00e9 controlado por el bot\u00f3n B1 del m\u00f3dulo 7-segmentos, con las siguientes consideraciones:<\/p>\n<ul>\n<li>Cuando inicie el programa ninguno de los segmentos del display debe estar encendido.<\/li>\n<li>Cuando el usuario presione el bot\u00f3n B1 se visualizar\u00e1 en el display un n\u00famero al azar entre 1 y 6.<\/li>\n<li>El n\u00famero deber\u00e1 permanecer visible en el display hasta que se vuelva a presionar el bot\u00f3n B1, en cuyo caso aparecer\u00e1 el valor del nuevo lanzamiento.<\/li>\n<\/ul>\n<\/div><\/div>\n\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n<h2><span style=\"color: #002b7a;\">Referencias<\/span><\/h2>\n<p>Arduino. (2021). Language Reference. <a href=\"https:\/\/www.arduino.cc\/reference\/en\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.arduino.cc\/reference\/en\/<\/a><\/p>\n<p>Corrales, R. (2018). \u00bfPor qu\u00e9 las computadoras no pueden generar n\u00fameros aleatorios? <a href=\"http:\/\/revistavacio.com\/ciencia-y-tecnologia\/computadoras-vs-numeros-aleatorios\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/revistavacio.com\/ciencia-y-tecnologia\/computadoras-vs-numeros-aleatorios<\/a>\/<\/p>\n<p>GISI-UNAM Cuautitl\u00e1n. (2018). N\u00fameros aleatorios. <a href=\"http:\/\/virtual.cuautitlan.unam.mx\/intar\/?page_id=379\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/virtual.cuautitlan.unam.mx\/intar\/?page_id=379<\/a><\/p>\n<p>Haahr, M. (2021). Introduction to Randomness and Random Numbers. <a href=\"https:\/\/www.random.org\/randomness\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/www.random.org\/randomness\/<\/a><\/p>\n\n\n<div style=\"height:50px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p><a href=\"https:\/\/iaciduino.enp.unam.mx\/index.php\/modulo-7-segmentos\/visualizacion-de-numeros\/\">&lt; Pr\u00e1ctica Visualizaci\u00f3n de n\u00fameros<\/a><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p class=\"has-text-align-right\"><a href=\"https:\/\/iaciduino.enp.unam.mx\/index.php\/modulo-7-segmentos\/contador_de_vidas\/\">Pr\u00e1ctica Contador de vidas &gt;<\/a><\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Pr\u00e1cticas M\u00f3dulo 7-segmentos T\u00edtulo de la pr\u00e1ctica: Dado electr\u00f3nico Objetivo: El alumno codificar\u00e1 un programa en Arduino que genere n\u00fameros pseudoaleatorios para simular el lanzamiento de un dado. Tiempo estimado: 100 minutos Nivel de dificultad: Intermedio Introducci\u00f3n \u00bfTe gusta escuchar<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":3736,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3966","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/iaciduino.enp.unam.mx\/index.php\/wp-json\/wp\/v2\/pages\/3966","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/iaciduino.enp.unam.mx\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/iaciduino.enp.unam.mx\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/iaciduino.enp.unam.mx\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/iaciduino.enp.unam.mx\/index.php\/wp-json\/wp\/v2\/comments?post=3966"}],"version-history":[{"count":131,"href":"https:\/\/iaciduino.enp.unam.mx\/index.php\/wp-json\/wp\/v2\/pages\/3966\/revisions"}],"predecessor-version":[{"id":6845,"href":"https:\/\/iaciduino.enp.unam.mx\/index.php\/wp-json\/wp\/v2\/pages\/3966\/revisions\/6845"}],"up":[{"embeddable":true,"href":"https:\/\/iaciduino.enp.unam.mx\/index.php\/wp-json\/wp\/v2\/pages\/3736"}],"wp:attachment":[{"href":"https:\/\/iaciduino.enp.unam.mx\/index.php\/wp-json\/wp\/v2\/media?parent=3966"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}