Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Monitores en Serie
Proyecto Integrador Arquitectura de Computadores
Seleccionando dos secuencias
El primer circuito creado para realizar las dos secuencias distintas con los pulsadores
fue el siguiente:
PÁGINA 1
La programación de este circuito fue elaborado siguiendo un video tutorial de:
https://www.youtube.com/watch?v=lrkG_-CyENY, ya que, queríamos que la secuencia
cambie inmediatamente al pulsar el botón, esto se logró utilizando una técnica de
"multi-tasking" utilizando delay, cabe recalcar que es la técnica de multi-tasking más
"arcaica" o simple ya que existen otras utilizando distintas funciones como “milis()” o
“micros()” pero se optó por esta ya que viene más al caso y es lo que se ha mostrado y
utilizado en las actividades anteriores.
El multi tasking se lleva a cabo en función del tiempo que necesitemos para las
funcionalidades del circuito, partiendo de la base de un bajo delay que permitirá
ejecutar en seguida el siguiente ciclo del loop principal de Arduino, utilizando
contadores debemos tener en cuenta el tiempo que queremos para las funcionalidades
del ciclo, es decir, si queremos encender por 1 segundo el led y consideramos un delay
de 20 en un inicio, deberíamos hacer la acción en cuanto el contador llega a los 50 [50
x 20 = 1000], por lo que cada encendido se ejecutará cada 1000 milisegundos, pero, con
la ventaja de poder recibir siempre informacion cada los 20 milisegundos considerados
con el delay inicial.
PÁGINA 2
Agregar el monitor serial no supuso
ninguna complicación ya que la
programación del botón permite
que al pulsar ocurra lo siguiente:
COMPLICACIONES
Otro problema a considerar fue que los tiempos de ejecución eran muy pequeños entre
un ciclo y otro del loop principal de Arduino, por lo que, al dejar pulsado el botón por
mucho tiempo se imprime múltiples veces el texto de "Botón X fue pulsado" lo cual
puede llegar a ser innecesario, pero a nuestro parecer, la inmediatez que permite los
pequeños tiempos de delay son mas pros que contras, ya que la secuencia se ejecuta
inmediatamente y termina la otra mostrando un flujo de circuito y programa bastante
atractivo.
PÁGINA 3
Encendiendo a través del Monitor en Serie
Esta parte del informe comenzó probando el código dado de ejemplo y estudiándolo
para entender cómo funciona la lectura a través del Monitor en Serie (escrito en código
como “Serial.read()”) . Lo destacable de este ejemplo es el uso de la variable “char”, o
carácter en español, lo cual significa que el monitor serial sólo leerá un carácter o letra,
siendo inútil el ingreso de cualquier “String”, “Integer”, “Float”, etc.
A la hora de realizar nuestro propio circuito y código nos planteamos la idea de leer
variables tipo “String” en lugar de “char”, lo cual nos generó una gran cantidad
problemas. Primeramente, se intentó definir la variable “char[]” llamada “leer” la cual
recibiría una secuencia de “chars” a través del monitor serial y luego ésta se compararía
con la secuencia esperada de “char[]”, para la lectura utilizamos “Serial.read()”.
Teniendo definida esta parte del código intentamos aplicarlo al Arduino y nos
resultaba en errores, intentamos cambiando la secuencia de lugar dentro del código e
intentar convertir “Integers” a “String” pues este era el error que nos entregaba el
Arduino IDE, ambas soluciones resultaron sin éxito.
PÁGINA 4
Nos ayudamos en una variable entera contador
para controlar la cantidad de veces que se repetirá
cada condicional, empezando esta variable en cero
y sumándosele uno cada vez que termine un ciclo.
Esta variable luego será evaluada por un pequeño
condicional “if”, el cual determinará que, si
contador es mayor que 2, “leer” volverá a estar
vacía, de forma que vuelva a entrar al primer ciclo
“if”, defina contador como cero y espere órdenes
del teclado nuevamente.
PÁGINA 5
Conclusión
A modo de conclusión es muy importante conocer la técnica empleada para realizar
“multi tasking” en Arduino ya que permite una fluidez en la ejecución del circuito y
nos deja lograr con toda la efectividad el propósito del mismo, sin depender de la
suerte o del conocimiento del código para efectuar bien la transición entre los distintos
estados del dispositivo.
Por un lado comprendimos por completo el correcto uso de Strings a base de fallo y
error, como también la definición de variables en su lugar correspondido, pues no da
igual ubicarlas en el void setup(), void loop() como fuera de ambos. Por otro,
aprendimos las distintas funcionalidades básicas del “Serial” las cuales nos abren las
puertas a muchas más ideas de circuitos las cuáles no hubieramos pensado de otra
forma.
PÁGINA 6