LECTURA DE NÚMEROS POR TECLADO

El objetivo de esta práctica es visualizar en un display de 7 segmentos un dígito del 0 al 9 que se haya introducido previamente por teclado.

 

1. Circuito: Cómo realizar el circuito

Para realizar este circuito necesitas los siguientes materiales:

Para trabajar en una protoboard, es importante conocer las conexiones que existen en ella. Puedes utilizar el siguiente enlace para leer información detallada sobre las conexiones de la protoboard.

Cada patilla del display está conectada a un segmento. La distribución de las patillas viene indicada en las especificaciones del display. En el que hemos utilizado se corresponde con este esquema:

Conectamos el  display a los pines de la placa Arduino como se muestra en la imagen.

¡Ya sólo nos queda programar!

Para programar la placa Arduino puedes utilizar diferentes lenguajes. Nosotros nos vamos a centrar en dos opciones

  • MBlock – programación basada en bloques
  • Arduino IDE – programación basada en líneas de código

3. Programación con mBlock

El objetivo de este programa es muy sencillo: conseguir que el display muestre un dígito comprendido entre el 0 y el 9 que previamente introdujimos por teclado.

El primer paso es configurar la tarjeta, sigue los pasos que te indicamos en «Mblock: primeros pasos«  Una vez configurada la tarjeta comenzamos con la programación.

El primer paso es realizar la lectura de datos por teclado. Esta lectura se realiza a través de una interacción con los personajes. Pulsa en la pestaña objetos y haz clic sobre el personaje «panda». Será él quien nos pida que introduzcamos un número por teclado.

Pulsa en eventos y arrastra «cuando clic en bandera» a la zona de programación. A continuación pulsa en sensores y arrastra el bloque «pregunta» junto debajo del evento «cuando clic en bandera». Puedes cambiar la pregunta e introducir el texto que quieras. Nosotros hemos puesto «Dime un número». Cuando presionemos la bandera verde, el panda nos pedirá un número y aparecerá una caja de texto donde escribiremos nuestra respuesta.

Cuando el panda recibe una respuesta, procede a comprobar si ésta se encuentra entre los números -1 y 10, ya que son los dígitos que podemos mostrar en el display.

En caso de no estar en este rango, mostramos un mensaje de error utilizando el bloque «decir» que localizarás en la sección apariencia. En caso de que la respuesta esté dentro del rango esperado, procedemos a enviar un mensaje a la placa con el número guardado en la variable «respuesta». Puedes encontrar el bloque enviar en la sección «eventos». Enviamos el número redondeado para evitar el uso de cantidades con decimales.

A continuación pulsamos en dispositivos y volvemos al código de la placa Arduino pulsando sobre la placa. Vamos a utilizar como base el ejercicio anterior, reutilizando el bloque display:

Mantenemos el bloque «cuando clic en bandera» y los bloques que inicializan las variables de los números con su combinación de segmentos.

La placa debe recibir el número que se ha introducido por teclado. En eventos tenemos un bloque que se llama «al recibir». Arrastramos este bloque al espacio de programación, al pulsar sobre «mensaje» podemos introducir un nuevo mensaje. Pulsa sobre nuevo mensaje e introduce el mensaje 0

Cuando reciba el mensaje 0, será por que el usuario introdujo este dígito por teclado. Por lo tanto pasaremos a llamar al bloque display visualizando el dígito 0. Haremos esto para todos los dígitos, del 0 al 9.

Pulsa la bandera verde y comprueba el resultado.

Al trabajar con bloques personalizados, algoritmos y parámetros, hemos podido reutilizar y aprovechar el ejercicio anterior de forma mucho más sencilla.

4. Programación con Arduino IDE

Vamos a realizar el mismo programa, utilizando líneas de código con Arduino IDE

El primer paso es configurar la tarjeta, sigue los pasos que te indicamos en «Arduino IDE: primeros pasos«.

Una vez configurada la tarjeta comenzamos con la programación. Recuerda que al trabajar con código debemos respetar la sintaxis: Cuidado con las letras mayúsculas y minúsculas y con los signos de puntuación. ¡Son importantes!.

Para resolver este ejercicio tenemos que hacer uso de la comunicación Serie. Dentro de setup configuramos el puerto serie: Serial.begin(9600);

En loop, realizamos la lectura del dígito cuyo código ascii debe estar entre 48 y 57. Una vez recibido un dígito correcto, procedemos a realizar la llamada correspondiente a la función display en función del dígito recibido.

int dato = 11;

void setup(){ pinMode(7, OUTPUT); // segmento a pinMode(8, OUTPUT); // segmento b pinMode(9, OUTPUT); // segmento c pinMode(10, OUTPUT); // segmento d pinMode(11, OUTPUT); // segmento e pinMode(12, OUTPUT); // segmento f pinMode(13, OUTPUT); // segmento g
Serial.begin(9600); } void display(int a, int b, int c, int d, int e, int f, int g) { digitalWrite(7, a); // enciende o apaga un segmento digitalWrite(8, b); digitalWrite(9, c); digitalWrite(10, d); digitalWrite(11, e); digitalWrite(12, f); digitalWrite(13, g); } void loop() { // bucle infinito

while(dato<48 or dato>57){
dato=Serial.read(); // leemos un dato del teclado }

switch (char(dato)){
case '0':
display(1,1,1,1,1,1,0); // escribe 0 delay(1000);
break;
case '1':
display(0,1,1,0,0,0,0); // escribe 1 delay(1000);
break;
case '2':
display(1,1,0,1,1,0,1); // escribe 2 delay(1000);
break;
case '3':
display(1,1,1,1,0,0,1); // escribe 3 delay(1000);
break;
case '4':
display(0,1,1,0,0,1,1); // escribe 4 delay(1000);
break;
case '5':
display(1,0,1,1,0,1,1); // escribe 5 delay(1000);
break;
case '6':
display(1,0,1,1,1,1,1); // escribe 6 delay(1000);
break;
case '7':
display(1,1,1,0,0,0,0); // escribe 7 delay(1000); break;
case '8':
display(1,1,1,1,1,1,1); // escribe 8
delay(1000);
break;
case '9':
display(1,1,1,0,0,1,1); // escribe 9 delay(1000);
break;
}
dato=11;
}

Pulsa en el icono subir, y comprueba el resultado.