Práctica Dirigida 1
¡Hola a todos!
El propósito de esta página es postear aprendizajes, diseños y los recursos utilizados en las diversas actividades de la práctica dirigida 1.
Antes de empezar a trabajar con la placa Circuit Playground, voy a retomar un aspecto muy importante, el cual se relaciona sobre cómo debe estructurarse un programa en Arduino.
Estructura de los códigos en Arduino: un código Arduino es una serie de comandos de programación que le dirán a nuestro microcontrolador como configurarse al iniciarse y qué acciones tiene que realizar mientras esté en funcionamiento. Estos comandos utilizados en Arduino son sentencias muy fáciles e intuitivas. El bloque de código debe tener 2 partes, o funciones principales, que siempre debemos incluir.
3. Existen otras partes del código que no son obligatorias pero que podemos necesitar, según el código lo requiera, para organizarlo todo. Estas zonas pueden ser un espacio para el título, el autor, librerías, definiciones (variables que vayamos a usar en el programa), una zona para funciones a las que el programa irá llamando.
Otro elemento importante son las librerías, las que son una serie de sentencias y funciones específicas de cada elemento o shield que conectemos a Arduino, que no están dentro de las propias de la IDE, y que realizarán acciones específicas de cada uno facilitándonos mucho la programación.
Las sentencias se dividen por su manera de funcionar dentro del programa, pudiendo dividirlas en 3 grandes grupos:
Puntos importantes para tomar en consideración para trabajar con la placa Circuit Playground:
Puntos importantes por tomar en consideración cuando programemos en Arduino:



2. Sensor interruptor:
La programación de este sensor, tiene como objetivo indicarnos en qué posición está el interruptor o deslizador; si es de lado derecho o el izquierdo. Cuando está de lado izquierdo, tiene un símbolo de + impreso en la placa y reporta 1; sino reporta 0, es decir, que está de lado derecho. A continuación les explica cómo se programa este sensor:
Video del deslizador / sensor interruptor
En este ejercicio de programación, estuve analizando la diferencia de agregarle slash // al comando o procedimiento sensor_botones_contacto(); ubicado dentro del procedimiento void loop, que se ejecuta de manera cíclica y continúa y el resultado es el siguiente: la primera imagen es con slash y la segunda sin slash; es decir, el slash anula el procedimiento, es decir, Arduino lo toma en cuenta como un comentario.
El propósito de esta página es postear aprendizajes, diseños y los recursos utilizados en las diversas actividades de la práctica dirigida 1.
Antes de empezar a trabajar con la placa Circuit Playground, voy a retomar un aspecto muy importante, el cual se relaciona sobre cómo debe estructurarse un programa en Arduino.
Estructura de los códigos en Arduino: un código Arduino es una serie de comandos de programación que le dirán a nuestro microcontrolador como configurarse al iniciarse y qué acciones tiene que realizar mientras esté en funcionamiento. Estos comandos utilizados en Arduino son sentencias muy fáciles e intuitivas. El bloque de código debe tener 2 partes, o funciones principales, que siempre debemos incluir.
- Primero void setup(): dentro de esta función principal escribiremos las sentencias de configuración que necesitaremos para que Arduino trabaje correctamente. Éstas se ejecutarán al iniciar Arduino y una única vez. Con ellas, por ejemplo, asignaremos la característica de entrada/salida a los pines, el modo de comunicación serial, activaremos los sensores que vayamos a necesitar, escribiremos órdenes de inicio del programa…etc. Algunas de estas sentencias pueden ser: pinMode( , ), Serial.begin(,), sensors.begin(,)...
- La segunda función principal es void loop() . Ésta debe ir siempre después de void setup(). En ella escribiremos todas las sentencias, bucles y llamadas a funciones que necesitemos que Arduino repita constantemente. Se escribirán en orden de ejecución. Ejemplo de éstas pueden ser digitalWrite( , ), Serial.print(“ “), if( )…
3. Existen otras partes del código que no son obligatorias pero que podemos necesitar, según el código lo requiera, para organizarlo todo. Estas zonas pueden ser un espacio para el título, el autor, librerías, definiciones (variables que vayamos a usar en el programa), una zona para funciones a las que el programa irá llamando.
Otro elemento importante son las librerías, las que son una serie de sentencias y funciones específicas de cada elemento o shield que conectemos a Arduino, que no están dentro de las propias de la IDE, y que realizarán acciones específicas de cada uno facilitándonos mucho la programación.
Sentencias básicas, funciones y librerías
Para poder realizar un código en Arduino debemos tener las herramientas con las que decirle a nuestro microcontrolador que es lo que debe hacer en cada momento. Estas herramientas son las sentencias y funciones .Las sentencias se dividen por su manera de funcionar dentro del programa, pudiendo dividirlas en 3 grandes grupos:
- Estructurales : Nos dan la forma computacional del código y las operaciones lógicas a ejecutar. Con éstos son con los que le marcamos al programa qué camino debe seguir el código al ejecutarse y qué operaciones debe hacer. Algún ejemplo de las más usadas son if, for, while, +, -, =, *, /, ==, >, < …
- Variables : Con éstas definiremos qué tipo y qué características tendrán los valores que vamos a usar en el código. Pueden ser números, caracteres o estados. Podemos encontrarnos aquí las sentencias int, float, HIGH, LOW, char, string, true, false…
- Funciones : Nos permiten realizar una serie de operaciones concretas y volver a la zona del código en la que se ejecutó. Existen funciones que están propiamente definidas ya por Arduino como tales y también podemos crearnos nuestras propias funciones para que sean llamadas en las zonas de setup o loop cuando lo necesitemos. Son muy útiles cuando necesitamos realizar un grupo de acciones varias veces en distintas zonas del código. También es una buena forma de ahorrar líneas y de organizarse. Ejemplo de funciones tenemos pinMode, digitalWrite, delay, max, sin, cos, analogWrite…
Puntos importantes para tomar en consideración para trabajar con la placa Circuit Playground:
1. Controlando sensores (contacto, sonido y luz), es importante tomar en consideración lo siguiente:
- Que los sensores digitales (botones y el interruptor/deslizador), son los que reportan valores lógicos, como verdadero o falso, es decir, reportan si el botón está presionado o no, también si el interruptor o deslizador está de lado izquierdo o del lado derecho.
- Sensores análogicos: son los que reportan valores entre 0 y 1023, los cuales responden a distintos niveles que capturan del ambiente, en relación a lo que ellos miden, por ejemplo el sensor de luz, sonido y temperatura. Entre menos luz o sonido, el valor estará más cercano al cero.
Las sentencias se dividen por su manera de funcionar dentro del programa, pudiendo dividirlas en 3 grandes grupos:
- Estructurales : nos dan la forma computacional del código y las operaciones lógicas a ejecutar. Con éstos son con los que le marcamos al programa qué camino debe seguir el código al ejecutarse y qué operaciones debe hacer. Algún ejemplo de las más usadas son if, for, while, +, -, =, *, /, ==, >, < …
- Variables : Con éstas definiremos qué tipo y qué características tendrán los valores que vamos a usar en el código. Pueden ser números, caracteres o estados. Podemos encontrarnos aquí las sentencias int, float, HIGH, LOW, char, string, true, false…
- Funciones : Nos permiten realizar una serie de operaciones concretas y volver a la zona del código en la que se ejecutó. Existen funciones que están propiamente definidas ya por Arduino como tales y también podemos crearnos nuestras propias funciones para que sean llamadas en las zonas de setup o loop cuando lo necesitemos. Son muy útiles cuando necesitamos realizar un grupo de acciones varias veces en distintas zonas del código. También es una buena forma de ahorrar líneas y de organizarse. Ejemplo de funciones tenemos pinMode, digitalWrite, delay, max, sin, cos, analogWrite…
Compilación y carga.
Una vez que hayamos escrito nuestro código en la IDE Arduino, procederemos a verificar que está correctamente escrito. Para ello pulsamos el botón
arriba a la izquierda. Arduino leerá el texto y nos dirá si es correcto o no. Para ello lo que hará será compilarlo, que significa traducir el código del lenguaje de programación a un lenguaje que entienda el microcontrolador directamente.
En el caso de contener un error nos aparecerá en la consola una explicación orientativa del error.
2. Iniciando con la programación de la Circuit Playground:.
En el caso de contener un error nos aparecerá en la consola una explicación orientativa del error.
2. Iniciando con la programación de la Circuit Playground:.
- Luego de abrir el software IDE de Arduino y de conectar la placa Circuit Playground a la portátil, es importante tener presente que, antes de iniciar con la programación, se debe incluir la librería "Adafruit Circuit Playground", la cual se encuentra en el menú "Programa".
- También tenemos que activar el puerto donde conectamos la placa Circuit Playground, desde el menú "Herramientas"
- El procedimiento (void setup), nos permite abrir los puertos de comunicación entre la placa y la portátil, así como la de trasmisión de datos; es decir, inicializar el monitor serial y comenzar con la Circuit Playground. También es importante tener presente que, Arduino lo primero que hace cuando arranca es ir al void setup(). Éste es uno de los pasos esenciales del funcionamiento del programa. El void setup() es la parte que inicializa las configuraciones de los diferentes elementos del programa de Arduino; por ejemplo la configuración de un pin o establecer la velocidad de comunicación. Además, el void setup() sólo se ejecuta una vez en el inicio y no se volverá a ejecutar hasta que Arduino se apagué y vuelva a arrancar o bien cuando se resetea.
- El void loop() es el segundo paso esencial para el funcionamiento de un programa. Aquí es donde se ejecutan las acciones del programa. Como su nombre lo indica, este procedimiento se ejecuta una y otra vez. Recordemos que en un programa de Arduino todo el código se ejecuta línea a línea; es decir, después de ejecutar el void setup() en el arranque, continua con la void loop(). Nuevamente resalto que el void loop permite que lo programado en él sea cíclico, por ejemplo la programación de sensores.
Puntos importantes por tomar en consideración cuando programemos en Arduino:
- Los puntos y comas son uno de los elementos más importantes para escribir código en Arduino, pues se usan para separar las diferentes líneas de código en un programa e indica a Arduino donde termina su comando.
- También, a veces puede ser útil poner notas o escribir comentarios de un código, ya sea para uno mismo o para otra persona. Si se escribe el texto dentro de su programa Arduino piensa que es de código e intenta ejecutar lo que está escrito, por lo tanto, nos indicará un mensaje de error. Hay dos maneras de escribir mensajes en el código y ocultarlo a Arduino; la primera de ellas es el uso del slash (doble barra / /) delante de cualquier mensaje, esto nos permite ocultar el mensaje a Arduino, pero lo deja visible para el programador.
- Si deseamos ocultar los mensajes de más de una línea, tenemos que utilizar / * y * /. Para marcar el inicio de un mensaje que se oculta, se usa / * y para marcar el final del mensaje, utilizamos el / *.
- En Arduino existen variables globales y locales. Si la declaramos al inicio del programa, es decir, antes del void setup(), es una variable global. Una variable global es accesible desde cualquier parte del programa. Por otro lado, las variables locales sólo pueden usarse dentro de la función o el procedimiento en la que se declararon. Algunos tipos de variables en Arduino son:
- int: abreviatura del número entero, se usa para guardar datos numéricos sin decimales, su rango oscila entre -32767 a 32767), por ejemplo: int sensor = 0;
- long: permite almacenar variables más grandes que la del tipo "int", es decir, la variable de tipo "long" extiende el rango de valores enteros de 2147483647 a – 2147483647, es decir, nos permitirá usar valores entre – 2147483647 y 2147483647), por ejemplo: long number = 9000;
- byte (para ahorrar espacio en la memoria de Arduino, es útil almacenar las variables como bytes. Un byte es un número entero de 8 bits con un rango de 0 a 255. Con un byte ocuparemos 8 bits de la memoria de Arduino y podremos representar cualquier número entero entre 0 y 255), por ejemplo: byte number = 150;
- float (permite guardar números con decimales, una variable float tiene mayor resolución que los enteros (int, long, byte) y se guardan como un valor de 32 bits en el rango desde 3.4028235E+38 a – 3.4028235E+38; es decir, podemos guardar un número decimal pero sólo en ese rango. Los números decimales (float) ocupan mucha memoria de Arduino. Usar decimales es mucho más lento que usar enteros, pues Arduino necesita más tiempo para realizar cálculos con éstos), por ejemplo: float number = 2.33:
1. Programando el procedimiento para el sensor de botones de contacto:
- Para ello se utiliza la palabra void y el nombre del procedimiento (no debe llevar espacios), por ejemplo: void sensor_botones_contacto()
- Seguidamente se programa el algoritmo que vamos a desarrollar, incluyendo las variables locales, en este caso son de tipo entero y su función es la de capturar y guardar el valor del sensor de contacto, por lo que se crean dos variables, una para el lado derecho y otra para el lado izquierdo:
- Luego se imprime en el monitor serial el valor que reporta cada una de las variables, con el comando: Serial.println("Valor del botón derecho: "); y se le agrega una pausa: delay (500) para que las vaya imprimiendo.
- Para ver la ejecución del procedimiento anterior, este se debe llamar en el procedimiento principal, es decir, en el void loop.

1. Reto sensor de contacto:
En la programación de este reto, pude visualizar que debemos respetar las mayúsculas y minúsculas en los bloques o comandos de programación; además, al guardar este reto, también visualicé que dependiendo del tamaño del archivo, me generaba un error, cuando le reduje el nombre, ya no presentaba dicho problema al subirlo al programa.
Video del monitor serial reportando los valores de ambos sensores.
Comentario sobre el video sensores (derecho e izquierdo)
Como se visualiza en el video, el monitor serial reporta los valores de ambos sensores (derecho e izquierdo) en pantalla. Al presionarse un sensor, el valor reportado va a ser uno y cero sino se presiona.
Observaciones sobre la programación del reto sensor de contacto
1. En la programación de este reto, pude visualizar que debemos respetar las mayúsculas y minúsculas en los bloques o comandos de programación.
2. Al guardar este reto, también visualicé que dependiendo del tamaño del nombre del archivo, me genera un error de compilado para la tarjeta Circuit Playground. Al reducirle el tamaño del nombre, dejó de presentar dicho problema al compilarlo / subirlo al programa. A continuación les muestro una imagen del problema.
2. Al guardar este reto, también visualicé que dependiendo del tamaño del nombre del archivo, me genera un error de compilado para la tarjeta Circuit Playground. Al reducirle el tamaño del nombre, dejó de presentar dicho problema al compilarlo / subirlo al programa. A continuación les muestro una imagen del problema.

2. Sensor interruptor:
La programación de este sensor, tiene como objetivo indicarnos en qué posición está el interruptor o deslizador; si es de lado derecho o el izquierdo. Cuando está de lado izquierdo, tiene un símbolo de + impreso en la placa y reporta 1; sino reporta 0, es decir, que está de lado derecho. A continuación les explica cómo se programa este sensor:
- Se inicia con el nombre del procedimiento: void sensor_interruptor ()
- Se crea una variable local entera para capturar el valor del sensor interruptor: int valor_interruptor = CircuitPlayground.slideSwitch();
- Pasamos a programar la condición, donde si el valor que tiene la variable es igual a cero, nos reporte que el deslizador está de lado derecho y que lo imprima en el monitor serial y sino, que reporte que el deslizador está de lado izquierdo en el monitor serial.
- Luego de creado el procedimiento, lo llamamos en el void loop(), es decir, en el procedimiento donde se ejecutan las acciones del programa y que como ya lo había mencionado anteriormente, este se ejecuta de manera cíclica.
- A continuación una imagen con toda la programación de este sensor
Programación completa del deslizador / sensor interruptor
Comentario sobre el uso del slash para anular un procedimiento
En este ejercicio de programación, estuve analizando la diferencia de agregarle slash // al comando o procedimiento sensor_botones_contacto(); ubicado dentro del procedimiento void loop, que se ejecuta de manera cíclica y continúa y el resultado es el siguiente: la primera imagen es con slash y la segunda sin slash; es decir, el slash anula el procedimiento, es decir, Arduino lo toma en cuenta como un comentario.
3. Reto de Neopixeles
Este ejercicio de programación me permitió conocer cómo cambiarle el color y el tiempo de ejecución a los neopixeles.
4. Sensor de luz
Una aplicabilidad de este sensor la podemos visualizar con los mercurios de luz; por ejemplo, cuando va a llover, las nubes se mueven y oscurece el ambiente, por lo tanto, los mercurios se encienden, cosa similar ocurre en la mañana, cuando el sol sale, el mercurio se apaga.
La programación que se muestra en la siguiente imagen, nos permite visualizar, en el monitor serial, la intensidad de la luz captada por el sensor activado.
5. Sensor de temperatura
Este ejercicio de programación me permitió observar desde el monitor serial, como el sensor de temperatura, valga la redundancia, medía la temperatura del entorno. Considero que una aplicabilidad de este sensor podría ser para medir las condiciones climáticas o meteorológicas de una zona determina, es decir, algo muy similar a lo que utiliza el Instituto Meteorológico Nacional; además, también podemos usar este sensor para detectar la presencia de un ser vivo, entre otros ejemplos.
6. Sensor de sonido
Algunas posibles aplicaciones de este sensor podrían ser para medir la contaminación sónica que emiten los medios de transporte y en el hogar, en el caso de un bebé, podría ser que, si el niño se despierta y empieza a llorar, entonces que se active el sensor y suene una canción para que se relaje y se vuelva a dormir.
Video sensor de sonido
7. Reto 1 Sensor de Inclinación: Neopixel y Parlante.
Fue muy interesante resolver este reto y concluyo que se puede visualizar en la vida real, por ejemplo en el tacómetro de un avión cuando se inclina para aterrizar.
Muchas gracias.
Saludos.
Este ejercicio de programación me permitió conocer cómo cambiarle el color y el tiempo de ejecución a los neopixeles.
Video neopixeles
4. Sensor de luz
Una aplicabilidad de este sensor la podemos visualizar con los mercurios de luz; por ejemplo, cuando va a llover, las nubes se mueven y oscurece el ambiente, por lo tanto, los mercurios se encienden, cosa similar ocurre en la mañana, cuando el sol sale, el mercurio se apaga.
La programación que se muestra en la siguiente imagen, nos permite visualizar, en el monitor serial, la intensidad de la luz captada por el sensor activado.
Video sensor de luz
5. Sensor de temperatura
Este ejercicio de programación me permitió observar desde el monitor serial, como el sensor de temperatura, valga la redundancia, medía la temperatura del entorno. Considero que una aplicabilidad de este sensor podría ser para medir las condiciones climáticas o meteorológicas de una zona determina, es decir, algo muy similar a lo que utiliza el Instituto Meteorológico Nacional; además, también podemos usar este sensor para detectar la presencia de un ser vivo, entre otros ejemplos.
Video Sensor de temperatura
6. Sensor de sonido
Algunas posibles aplicaciones de este sensor podrían ser para medir la contaminación sónica que emiten los medios de transporte y en el hogar, en el caso de un bebé, podría ser que, si el niño se despierta y empieza a llorar, entonces que se active el sensor y suene una canción para que se relaje y se vuelva a dormir.
Fue muy interesante resolver este reto y concluyo que se puede visualizar en la vida real, por ejemplo en el tacómetro de un avión cuando se inclina para aterrizar.
Video Sensor de Inclinación
Saludos.











Comentarios
Publicar un comentario