miércoles, 15 de abril de 2015

Arduino Shield. Programa 3

En este tercer programa vamos a ver como podemos enviar datos al display para generar dígitos correspondientes a números. Tal como ya hemos visto, para iluminar uno de los 8 segmentos del display basta con enviar un 1 por la salida correspondiente a dicho segmento. Si volvemos a mirar el esquema de nuestro Shield, los pines a los que se encuentra conectados nuestro display van desde el pin 3 al pin 10. Este último pin es donde va conectado el punto. Y el resto de segmentos (desde el segmento A al G) van conectados, por orden, desde el pin 3 al pin 9. Así que si por ejemplo queremos ver el dígito 1 en el display, basta con iluminar los segmentos B y C enviando un nivel alto por los pines 4 y 5 de Arduino.



El programa correspondiente para poder ver el dígito uno en el display lo tenemos a continuación:

// Prog 3

int n;

void setup() 
   {
  // Configuramos pines del 3 al 10 como salida
  for (n=3;n<11;n++)   pinMode(n, OUTPUT);
 
    }


void loop()
{
digitalWrite(4,HIGH);
digitalWrite(5,HIGH);
}




Ahora, como propuesta de ejercicio, crea el programa capaz de hacer que aparezcan por el display los dígitos 1, 2 y 3 separados por una pausa de un segundo.

jueves, 9 de abril de 2015

Arduino Shield. Programa 2

Continuamos haciendo pruebas en nuestro Shield. Esta vez vamos a terminar de probar el Display. Para ello vamos a crear un programa que encienda y apague en secuencia cada uno de los segmentos que forman el Display. Y además, que esté todo el tiempo haciendo lo mismo.


Para  hacer esto más sencillo vamos a emplear una estructura de control como es el bucle FOR. Esta estructura nos permite ejecutar una tarea o varias mientras se cumpla la condición que nosotros hemos programado en el bucle. Para ello nos valemos de una variable, la iniciamos con un valor y hacemos que dicho valor cambie (se incremente o decremente) mientras este valor que toma la variable cumpla una determinada condición. En el momento que la condición programada no se cumpla, se termina de ejecutar la tarea o tareas programadas en el bucle FOR. Cada vez que la variable cambie se ejecutarán las tareas programadas.

La construcción de la estructura FOR es la siguiente:
              for (inicialización de la variable; condición ; incremento o decremento)

Esta estructura de control nos va a permitir encender y apagar los segmentos del display con unas pocas líneas de código. Si no la utilizáramos la cantidad de líneas de código sería mayor.

Así es como queda entonces nuestro programa:

/*
PROGRAMA 2
*/

void setup()
    {
       
        for (int n=3;n < 10;n++) pinMode(n, OUTPUT);
    }
   
void loop()
    {
        for (int pin=3;pin < 10;pin++)
        {
            digitalWrite(pin, HIGH);
            delay(200);
            digitalWrite(pin, LOW);
            delay(400);
        }
       
    }

   
Podemos observar que la estructura FOR la utilizamos 2 veces. La primera a la hora de configurar los pines del Arduino donde tenemos conectado el Display y la segunda dentro de la función LOOP ( ).

Como ambas estructuras de control son iguales, la única diferencia es la cantidad de tareas que ejecutan, podemos comprobar como en la inicialización también aprovechamos para declarar la variable. Así iniciamos la variable con el valor 3 (que se corresponde con el pin donde tenemos conectado el segmento "a"), la condición que debe cumplirse para que se siga en el bucle FOR es que la variable sea menor que 10, y el cambio en el valor de la variable será el incremento en una unidad. Por tanto las tareas programadas se realizarán mientras la variable sea menor que 10, y esta variable, cada vez que se ejecuten las tareas, se incrementará en una unidad comenzando por el valor 3 y terminando en el 9.