Hola y bienvenidos al laboratorio de experimentación tecnológica del Parque Biblioteca Tomás Carrasquilla La Quintana, antes de trabajar con el programa que se estudiará hoy, es recomendable revisar el primer programa realizado que permite controlar el encendido de un led, esto se debe a que, si bien hoy se hará una explicación detallada del programa, será más fácil entenderla si se tiene familiaridad con el ejemplo arriba mencionado.

Teniendo claridad en este aspecto, el programa de hoy será similar, en esta ocasión también se controlará el encendido de un led, pero no se hará a intervalos de tiempo determinados, sino que se tendrá un interruptor que al moverse activará la luz del led y al moverse nuevamente lo apagará, es decir, que funcionará como los interruptores que controlan el encendido de los bombillos en casa.

Antes de empezar la programación del dispositivo es importante distinguir el concepto de señales de entrada y señales de salida, que es uno de los elementos nuevos en este caso, imagine por un momento que usted va a controlar el encendido del bombillo, es decir, que su trabajo será vigilar el interruptor y, cuando alguien lo mueva, encender la luz, este caso se ejemplifica en el diagrama siguiente.

En este diagrama el interruptor representa una señal de entrada, que controla, modifica o da instrucciones al microcontrolador (o a la persona en este caso), el bombillo representa en cambio una señal de salida, porque en este caso es la persona (o el microcontrolador) el que controla el bombillo.

Para ponerlo de forma resumida, si un elemento da instrucciones al microcontrolador esta señal se considera una entrada, en cambio si el microcontrolador da instrucciones a un objeto, la señal será de salida, para nuestro programa el interruptor indica cuando actuar (entrada) mientras que el led es controlado por el Arduino (salida).  Teniendo este concepto claro se puede pasar a la escritura del programa para cumplir esta condición.

Recordemos que lo primero que hay que hacer es abrir el programa de Arduino, en la pantalla inicial siempre tenemos dos áreas marcadas claramente, la configuración del microcontrolador en la sección void setup() y el programa propiamente dicho, en la sección void loop(), el programa que hay que escribir es el siguiente:

int buttonState = 0;

void setup() {

pinMode(13, OUTPUT);

pinMode(2, INPUT);

}

void loop() {

buttonState = digitalRead(2);

if (buttonState == HIGH) {

digitalWrite(13, HIGH);

} else {

digitalWrite(13, LOW);

}

}

Recuerde que al igual que en el primer programa trabajado se recomienda que escriba manualmente los comandos mostrados, esta es la forma en que realmente se da uno cuenta de los errores de programación comunes y que son más fáciles de encontrar y corregir en un programa corto como este.

Una vez el programa esté escrito se debe ver de la siguiente manera:

Observe con cuidado que no todas las palabras aparecen en color negro, es importante que las palabras acá resaltadas en azul y naranja se vean resaltadas en estos colores, de no ser así es probable que haya algún error de escritura, entre los errores más comunes están ignorar las letras mayúsculas en comandos como digitalWrite, asegúrese de que el programa no tenga errores de escritura usando el botón de verificación resaltado en la imagen.

Ahora que hemos reproducido el programa de forma exitosa viene la parte más importante, entenderlo, en este caso vamos a mirar que significa cada línea de código para luego mirar el programa en su conjunto.

Línea Efecto
int buttonState = 0;

 

Indica que el interruptor empieza funcionando en el valor cero (0), que para nuestro caso es lo mismo que decir apagado.
pinMode(13, OUTPUT); Configura el pin número 13 como una salida (OUTPUT), en este pin es donde se conectará el led
pinMode(2, INPUT); Configura el pin número 2 como una entrada (INPUT), en este pin es donde se conectará el interruptor
buttonState = digitalRead(2); digitalRead(2) mira el estado de lo que haya conectado en el pin 2 (un interruptor en nuestro caso) y guarda esta información en la variable llamada buttonState
  if (buttonState == HIGH) Si buttonState indica que el interruptor está encendido (HIGH) ejecuta la instrucción siguiente, en caso de no ser así la instrucción siguiente es ignorada
digitalWrite(13, HIGH); Por el pin número 13 se envía la señal de encendido (HIGH)
else En caso de no cumplirse la condición if (buttonState == HIGH) se ejecuta la siguiente instrucción
digitalWrite(13, LOW); Por el pin número 13 se envía la señal de apagado (LOW)

 

Recuerde que la configuración del dispositivo solo se ejecuta una vez, en cambio lo contenido en el void loop() se ejecuta de forma infinita, reiniciando cuando se llegue al final, dicho en otras palabras, lo que nuestro programa hace de forma continua es mirar si el interruptor está activo (con el digitalRead) y en caso de que si esté activo enciende el led (con digitalWrite) pero en caso contrario lo apaga (también con digitalWrite)..

Se puede observar que este programa es muy sencillo y es similar al primer programa que trabajamos.  Es importante que estén claras las instrucciones antes de hacer la simulación para verlo operando, si tienes alguna duda o no te funciona como debería puedes escribirnos a tecnologia.quintana@bibliomed.gov.co, donde estaremos atentos a resolver tus inquietudes.

En caso de que no tengas dudas al respecto, puedes intentar simular el programa en tinkercad  para verlo funcionando, y si te parece que hacerlo es demasiado complejo, no te preocupes, la próxima semana estudiaremos como se hace paso a paso.

0