Publi

  • Utilizar float con sprintf() y derivados en Arduino

    globo-de-aire
    El objetivo de la plataforma Arduino es que los programas sean pequeños, ya que tienen que caber en pocos Kbs. Un pequeño problema que tenemos con eso es que muchas bibliotecas no están implementadas completamente, sino que las encontramos en su versión light, en las que implementan sólo las funcionalidades más normales.
    Un ejemplo de ello son los comandos printf() y scanf() cuya funcionalidad no cubre los valores de punto flotante (float, double), y que si hacemos el siguiente programa:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void setup()
    {
      Serial.
    Leer artículo completo
  • C.I. XIV: Arduino 1.0 disponible, Ubuntu Operation NightLight, gobernadores de CPU, Como funciona el Servicio FTP y más

    Estos son los enlaces que he visto interesantes durante la semana:

    • Arduino IDE 1.0 disponible: muchos de los que programamos en esta plataforma lo agradecerán. Sobre todo porque en la librería Ethernet han implementado DHCP, lo cual es muy interesante. Aunque el entorno, como IDE, le siguen faltando muchas opciones.
    • Uno de los actos de presentación del Nokia Lumia (Nuevo Teléfono con Windows Phone) era una presentación sobre el edificio en Londres donde trabaja Canonical.
    Leer artículo completo
  • [Arduino] Utilizando la memoria Flash en lugar de la SRAM para constantes

    temp_ardublogOtra cosa no, pero los Arduino no son conocidos por su gran memoria RAM, y es que, por ejemplo en la serie Diecimila, con el Atmega168 tenemos 1Kb de RAM, con el Atmega328, hay 2Kb de RAM, aunque puede que para algunos de nuestros programas nos quedemos un poco cortos.

    Una gran ayuda para esto puede ser utilizar las constantes que cree nuestro programa, en forma numérica de tabla de valores constante, o de cadena de caracteres, por ejemplo, para enviar mensajes predeterminados por el Serial, decir el nombre de la aplicación, la versión, etc.… Leer artículo completo

  • Listas enlazadas en Arduino (primera versión)

    Es parte de un proyecto personal que quiero compartir. Se trata de una clase para utilizar listas enlazadas desde Arduino, aunque la memoria RAM de estos bichillos no sea gran cosa (1K para la versión Diecimila), puede dar para mucho, y es que hay ocasiones en las que podemos necesitar esta flexibilidad a la hora de almacenar y acceder a la información (aunque no pueda ser mucha).

    La clase ha sido desarrollada utilizando templates, por lo que podréis particularizar esta clase para cualquier tipo de dato que estéis manejando.… Leer artículo completo

  • C.I. XII: La evolución de la web, 20 aniversario de Linux, DateTime para php, instalar Arch Linux, Creando una aplicación en Android y un pedal con Arduino

    Me gustaría esta vez compartir algunos enlaces que me han llamado la atención:

    Leer artículo completo
  • 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