Tag Archives: C/C++

Punteros a función y structs con Arduino

En este artículo presentamos una extensión al programa de Control remoto Arduino + LCD aprovechando el uso de punteros a función. Es recomendable darle una mirada al programa de ese artículo para comparar con este, y entender cómo evolucionó. De todas formas se puede leer este artículo en forma independiente para tener un ejemplo de uso de punteros a función. Pero el circuito está explicado en ese artículo y no se repetirá aquí.

En el programa utilizamos una estructura cuyo tipo llamamos State y de la cual creamos una sola global variable state. En ella encapsulamos el estado de la lógica del display. En el programa anterior el objeto de control del display era una variable global. Ahora lo incluimos en la estructura state para encapsular la información. Si bien es común en los programas de Arduino tener muchas variables globales, eso no es una buena práctica de programación. En este caso al encapsular las variables que tienen que ver con la lógica del display en una estructura, el código queda más ordenado. Aunque la estructura en sí siga siendo global. Pero ese punto es imposible de solucionar porque Arduino llama constantemente a la función loop() y carece de punto de entrada como una aplicación estándar de C/C++.
Arduino LCD Puntero a funcion

Continue reading Punteros a función y structs con Arduino

Control remoto infrarrojo + LCD + Arduino

Si bien ya hay un artículo Control remoto infrarrojo con Arduino donde abordé el tema, quería escribir una variante que sirviera para dar paso a un artículo más avanzado de programación.

En este artículo emplearemos un LCD y un decodificador infrarrojo VS1838 para recibir pulsaciones de teclas de un control remoto, decodificarlas y generar una salida en la pantalla LCD de acuerdo al mando recibido.

El circuito a utilizar tiene muchas conexiones pero es simple ya que en su mayoría se trata de conexiones directas al Arduino. Usaremos un potenciómetro de 10KΩ para controlar el contraste del display LCD. Y una resistencia de 220Ω para limitar la corriente del led de backlight del mismo.

Circuito control remoto arduino y LCD

Continue reading Control remoto infrarrojo + LCD + Arduino

Jugando con threads en C++11

Una buena noticia de C++11 es que se incorporó la biblioteca pthreads al nuevo estándar. Esto quiere decir que ya no es necesario implementar un encapsulamiento propio como hacíamos algunos años atrás. Este artículo (breve) ilustra el uso de la nueva clase threads y permite jugar un poco con el comportamiento del multitasking para comprender algunas particularidades que debemos tener en cuenta a la hora de crear aplicaciones concurrentes.

Continue reading Jugando con threads en C++11

Puntero automático con contador de referencias

C++ es un lenguaje que no tiene manejo automático de memoria incorporado en su versión más pura. Es decir, en los compiladores o IDEs más populares entre quienes se dedican a este lenguaje. Existen algunas implementaciones de garbage collectors para C++ y las versiones más nuevas del estándar incluyen una implementación de puntero automático en la biblioteca de plantillas STL. Pero consideraría correcta la afirmación general de que el manejo de memoria en el lenguaje es manual.

La semana pasada estaba pensando en un ejercicio muy simple que requiriese conocimiento de varios aspectos del lenguaje en una cantidad de líneas reducida. Y se me ocurrió que programar un puntero automático podría cumplir con la premisa. Este es el resultado.

Continue reading Puntero automático con contador de referencias