Posts

    Prueba de motor servo con Arduino

    Los motores servo o servo mecanismos son dispositivos que permiten girar un eje en forma controlada una determinada cantidad de grados, mediante una señal eléctrica. Estos motores no giran continuamente como un motor convencional sino que se mueven a una posición determinada que permanecen allí hasta que se envía una señal que mueve el eje a un ángulo distinto. Incluso es muy común que los servos tengan una capacidad de giro limitada que no llega a los 360 grados.

    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. Si te interesa este artículo te recomiendo leer también esta nota sobre problemas con float en Golang.

    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.

    Obtener la dirección MAC local en C/C++

    Este extracto de código muestra cómo obtener a dirección de hardware del adaptador de red en C/C++ en sistemas POSIX. Debería funcionar también en Windows, usando Cygwin o similar. #include <netdb.h>#include <unistd.h>#include <string.h>#include <sys/fcntl.h>#include <sys/errno.h>#include <sys/ioctl.h>#include <sys/socket.h>#include <arpa/inet.h>#include <net/if.h>#include <stdio.h> int main(int argc, char ** argv) { struct ifreq ifr; int s; if ((s = socket(AF_INET, SOCK_STREAM,0)) < 0) { perror("socket"); return -1; } strcpy(ifr.ifr_name, argv[1]); if (ioctl(s, SIOCGIFHWADDR, &ifr) < 0) { perror("ioctl"); return -1; } unsigned char *hwaddr = (unsigned char *)ifr.

    Arduino, control remoto infrarrojo y LCD

    El artículo sobre el uso de un VS1838 para recibir señales de un control remoto con Arduino que escribí el en noviembre de 2013 se hizo muy popular. Y recibí varias consultas sobre la posibilidad de adaptar el programa para hacer algo útil con la señal recibida. Así que preparé este ejemplo ilustrativo. Aquí se combina el programa que decodifica las teclas presionadas en el control remoto, con la biblioteca que permite escribir en una pantalla de cristal líquido (que también utilicé en el artículo sobre el sensor DHT11).