Publi

  • Luces del coche fantástico con Arduino (I)

    Leds con Arduino

    Un pequeño proyecto con Arduino, para probar todas las salidas con posibilidad de PWM (pulse width modulation), es como una salida parecida a analógica, aunque lo que estamos haciendo es enviar pulsos cuadrados, el valor medio de la tensión será la tensión analógica que buscamos.

    Os acordáis de aquella serie de los 80, El Coche Fantástico, en la que podíamos ver unas luces que se desplazaban de derecha a izquierda dejando un rastro, en eso me basé.… Leer artículo completo

  • Dialogando con HardwareSerial y SoftwareSerial más fácil

    A la hora de dialogar con los Serials en Arduino, durante estos días he desarrollado funciones para leer cadenas completas de texto desde el Serial y para escribir con la sintaxis de printf(), ya que esto es mucho más fácil cuando se trata de formatear texto.

    Bien, ahora se trata de unirlo todo y de dar soporte a cualquier Serial, ya sea HardwareSerial o SoftwareSerial sin complicarnos mucho la vida, con la posibilidad de cambiar esta entrada/salida en cualquier momento y así hacer nuestro programa más flexible.… Leer artículo completo

  • Formateando la salida en el Serial para Arduino [ parte II ]

    El lunes pasado empecé contando formas para formatear la salida en el Serial para Arduino y me dejé dos métodos en el tintero, relacionados con codificar a mano nuestra propia función tipo printf():

    printf() usando como salida el Serial

    Es fácil de programar, sólo necesitamos un rato para tenerla lista, recae por completo en la biblioteca HardwareSerial, y específicamente en el objeto Serial (aunque podremos cambiarlo cuando queramos si vamos a utilizar otro puerto serie); de primeras, si necesitamos otro puerto, tendremos que cambiar todo el código, con lo que no es demasiado reutilizable.… Leer artículo completo

  • Formateando la salida en Serial para Arduino [1ª parte] ( y no sólo para Arduino )

    Arduino - Minicom - Emacs Una de las cosas que más echo de menos programando con Arduino es el formateo de texto de cara al serial, ya que éste sólo permite cadenas de texto o números, y no todo junto. En principio es comprensible, el sistema debe estar en un tamaño muy reducido, y esta característica engordará el binario. como mínimo 1.5Kb; Podemos optar por varias soluciones que explicaré en este post:

    • sprintf()
    • Usando la clase String
    • vsnprintf()
    • Inventar nuestro printf() particular con salida a cadena
    • Inventar nuestro printf() particular con salida a Serial

    Usando sprintf()

    Esta forma es muy sencilla y engordará nuestro ejecutable 1.5Kb aproximadamente.… Leer artículo completo

  • 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