Publi

  • Recibiendo cadenas de texto completas con Arduino por USB (I)

    Uno de los problemas de trabajar con Arduino con el puerto serie es la recepción de cadenas de caracteres. De serie, con las bibliotecas disponibles podemos leer:

    • Caracteres de uno en uno
    • Valores numéricos tipo int

    Otro tipo de entradas es fácil de leer con un poco de esfuerzo, por eso se me ocurrió crear una función que lea un chorro de caracteres desde el Serial, y lo almacene en un array de char (una cadena de caracteres de toda la vida).… Leer artículo completo

  • Memoria dinámica con Arduino en C++

    Uno de los problemas al programar en C++ con Arduino es la utilización de memoria dinámica. Podemos comprobar que el uso de malloc / realloc / free está soportado, pero no new y delete.

    La ventaja, en Arduino, para utilizar new y delete es que éstos llaman al constructor y al destructor respectivamente, lo cual nos permite poder crear objetos de forma dinámica.

    Para crear los operadores new y delete, he utilizado malloc() y free(), lo malo es que no hacemos comprobación de errores, por lo que, cuando falle algo, los resultados serán inesperados, aunque podremos crear alguna función que detenga la ejecución del programa cuando ocurra algún error.… Leer artículo completo

  • Creando bibliotecas o librerías para Arduino

    Aunque en inglés library, es biblioteca (ese lugar donde hay tantos libros y se requiere silencio), y no librería (ese lugar donde se venden libros), a la RAE le da igual, y no quiero entrar mucho en eso…
    Una de las ventajas de los lenguajes modernos es que no tenemos que escribir todo el código junto, incluso muchas partes de código no son nuestras; existen bibliotecas con funcionalidades que podemos llamar desde nuestros programas, y de hecho si queremos programar bien, uno de nuestros deberes es la reutilización de código, para lo cual, nosotros podemos crear nuestras propias bibliotecas y utilizarlas en nuestros programas… o compartirlas con otros desarrolladores.… Leer artículo completo

  • Tamaños de variables en Arduino

    Si estamos acostumbrados a programar para procesadores de 32 ó 64bits, tal vez creamos que en un Arduino podemos almacenar números extremadamente grandes. ¡ pues no ! Estamos ante procesadores sencillos, de 8bit, puede que sean demasiado… de los 80 (más grandes en los 80), pero dado lo pequeño que puede llegar a ser, puede valernos para fabricar cualquier gadget/utensilio/aparato… e incluso para aprender… que para eso estamos aquí.

    Para ver los tamaños de las variables aquí presentes podemos hacer el siguiente programa:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    // Presentar en el serial el tamaño de una variable o un tipo
    // de variable.
    Leer artículo completo
  • Arduino: Usando el serial para comunicarnos con el ordenador

    Es interesante ver cómo los programas que corren con Arduino pueden hacer uso del puerto serie para comunicarnos con el ordenador. No sólo vale para hacer la programación del chip, sino que podemos intercambiar información, variar el comportamiento del programa… o simplemente tener un canal para depurar nuestro programa mostrando el estado de las variables en cualquier momento.

    La configuración es muy sencilla, sólo necesitamos especificar la velocidad del puerto serie cuando queramos iniciar la comunicación.… Leer artículo completo

  • Preparando nuestro entorno para Arduino sin Java

    Arduino Emacs

    Como comenté en el post anterior, la plataforma Arduino viene con un IDE hecho en Java, no es muy completo, pero nos hace el apaño, aunque, como es mi caso, estoy acostumbrado a Emacs. Aunque esta guía no estará limitada a este editor, ni a Ubuntu (o basados en él).

    El objetivo, es usar nuestro IDE o editor preferido para trabajar con estos pequeños bichos programables.

    En principio tenemos que instalar las herramientas para compilar los programas para la plataforma (esto es común con todas las instalaciones).… Leer artículo completo

  • Un nuevo juguete… Arduino Diecimila

    Arduino DiecimilaGracias a mi amigo David Morán conozco Arduino. Arduino es una plataforma de hardware libre. En este caso formado por una pequeña placa con un micro-controlador, varios puertos de entrada y salida, un interfaz serie para programación o energía y una toma de corriente, que puede ser la base de gadgets, utensilios, juguetes, autómatas programables de cualquier tipo; además, se compone de un entorno de desarrollo con el que podemos realizar nuestros proyectos en multitud de lenguajes y plataformas.… Leer artículo completo

  • Sabayon, a medio camino entre la cocina y la oficina

    Zabaglione
    El sabayón es un postre italiano del siglo XVI… bueno y también una distribución Linux bastante completa, aunque no se oiga mucho hablar de ella, ni ha salido en las listas anuales de mejor distribución del año ni nada, creo que es una de las que tenemos que tener en cuenta.

    Es cierto, que en el perfil de usuario de esta distribución no entra cualquier persona, ya que, aunque te da muchas cosas hechas, también hay muchas otras que hay que retocar (nada es a gusto de todo el mundo).… Leer artículo completo

  • Extraer 10 elementos ordenados de grandes colecciones de datos

    En ocasiones podemos tener una colección grande de información (de varios millones de elementos), y debemos obtener los diez primeros (por ejemplo) menores.
    Por poner un ejemplo rápido, vamos a utilizar números, tenemos una colección de 15 números y necesitamos extraer los 5 menores:

    1832312113126153146549234852154030209834

    En este caso, queremos obtener: 20, 21, 30, 34, 98

    El problema es la optimización, necesitamos hacerlo en el menor tiempo posible, utilizando la menor cantidad de operaciones, tal vez haya un método mejor que el que voy a proponer, aunque este no es malo del todo.… Leer artículo completo

  • Almacenando elementos a pares en C++

    En numerosas ocasiones necesitamos almacenar dos datos de diferente o igual tipo bajo la misma variable. Es más, en ocasiones estarán relacionados y no debemos separarlos o no tendría sentido.

    La forma más inmediata es almacenar cada dato por su lado y diseñar los algoritmos de modo que siempre vayan los dos datos juntos, aunque tendremos un problema:

    • Será difícil de mantener, tenemos siempre que asegurar que los datos siempre vayan juntos.
    Leer artículo completo