A sample text widget

Etiam pulvinar consectetur dolor sed malesuada. Ut convallis euismod dolor nec pretium. Nunc ut tristique massa.

Nam sodales mi vitae dolor ullamcorper et vulputate enim accumsan. Morbi orci magna, tincidunt vitae molestie nec, molestie at mi. Nulla nulla lorem, suscipit in posuere in, interdum non magna.

Arduino AFAQ: el USB de arduino

En las primeras placas Arduino, el microcontrolador (normalmente ATMega 168 y Atmega328) no es capaz de conectar directamente vía USB, por lo que es necesario añadir un segundo chip de comunicaciones.

El chip usb que tiene arduino UNO (y los anteriores) sólo es capaz de servir como alimentación y como comunicación entre la placa y el ordenador. Esto se debe a la capacidad del chip que incorpora (un ATMega16U en las últimas versiones y un chip específico FTDI en las primeras) está limitado a esa funcionalidad.

El nuevo chip ATmega32u4 que incorporan las placas nuevas, sustituyendo tanto a nuestro querido ATMega328 como al chip de comunicaciones, permite más funcionalidad además de la comunicación y alimentación: es capaz de funcionar como un ratón o un teclado, es decir, podemos decidir al conectarlos al pc de qué manera actúa. Normalmente usaremos sólo el modo de comunicaciones pero si queremos podemos usar los otros modos.

¿Qué utilidad tiene emular un teclado? pues podemos “engañar” al pc y hacer que nuestra placa envíe el equivalente de una pulsación de tecla con lo que podrías hacer que se “escribiera” un fichero en nuestro PC con los datos que leemos en la placa.

¿qué utilidad tiene emular un ratón? Imagínate preparar un sistema para discapacitados que simule un ratón por ejemplo filtrando los movimientos de la cabeza o algo así. Para ello tendríamos que usar un sensor y procesar esos datos y enviarlos imitando un ratón.

Sobre que unas placas usen el ATMeta16u2 u otro es un tema de costes y mientras el fabricante nos proporcione el driver para conectarlo al IDE a nosotros nos es transparente.

Refactorizando código Arduino

Configuración SprinterSi hay algo bueno de impartir cursos es la posibilidad de aprender con todo lo que hacen los alumnos. Hoy en el curso Avanzado de Arduino hemos estado viendo como optimizar y refactorizar código arduino.

Vamos a ver el ejemplo que no es otro que el código que permite hacer que un led se encienda o apague al plusar un pulsador. La parte que nos interesa es esta, donde se hace el enclavamiento, usando una variable Estado_Led que guarda el valor de este.

if (Estado_Led==0) // Y el Led esta apagado...
{
     digitalWrite(Pin_Led,HIGH); //Encendemos el Led
     Estado_Led=1; //Ponemos un 1 a la variable del Led conforme está encendido
     delay(tiempo); //Tiempo prudencial para evitar falsos contactos o lectoras del pulsador
}
else // Y el Led esta encendido...
{
     digitalWrite(Pin_Led,LOW); //Apagamos el Led
     Estado_Led=0; //Ponemos un 0 a la variable Led conforme esta apagado
     delay(tiempo); //Tiempo prudencial para evitar falsos contactos o lectoras del pulsador
}

 

Tanto en el código del  if como en el del else hacemos lo mismo. Voy a cambiarlo lévemente (o por LOW y 1 por HIGH

if (Estado_Led==LOW) // Y el Led esta apagado...
{
      Estado_Led=HIGH; //Ponemos un 1 a la variable del Led conforme está encendido
      digitalWrite(Pin_Led,HIGH); //Encendemos el Led
}
else // Y el Led esta encendido...
{
      Estado_Led=LOW; //Ponemos un 0 a la variable Led conforme esta apagado
      digitalWrite(Pin_Led,LOW); //Apagamos el Led
}
// Se hace delay en los 2 casos y lo sacamos fuera
delay(tiempo); //Tiempo prudencial para evitar falsos contactos o lectoras del pulsador

Si ahora nos fijamos loo que estamos haciendo es un digitalWrite del nuevo valor de Estado_Led, con lo que podemos sacar el digital write porque también es común.
Quedaría así:

if (Estado_Led==LOW) // Y el Led esta apagado...
{    Estado_Led=HIGH; }
else // Y el Led esta encendido...
{    Estado_Led=LOW;  }
digitalWrite(Pin_Led,Estado_Led); //Apagamos el Led
delay(tiempo); //Tiempo prudencial para evitar falsos contactos o lectoras del pulsador

Todavía se puede reducir más pues aplicando las léyes de la lógica booleana lo que estamos haciendo es invertir el valor de Estado_Led y eso se hace con el operador !
Lo dejamos así

Estado_Led=!Estado_Led;
digitalWrite(Pin_Led,Estado_Led); //Apagamos el Led
delay(tiempo); //Tiempo prudencial para evitar falsos contactos o lectoras del pulsador

JAVACASM

Usar S4A (scratch for arduino) en ubuntu (linux) de 64 bits

Scratch es un entorno de programación visual que permite crear programas interactivos de forma sencilla. Se le ha dotado de un interface muy amigable donde se puede programar sin  introduzcir comandos ni código, sino que los programas se construyen añadiendo bloques que tienen su propio significado, lo que lo hace muy adecuado para que lo utilicen personas que no están acostumbradas a programar e incluso niños.

Dado que internamente funciona como un entorno de ejecución de máquinas virtuales, se pueden utilizar distintas máquinas virtuales lo que le da una gran versatilidad. Existe una versión S4A  (scratch for arduino) que permite la interacción con arduino, permitiendo que lo programemos de la misma manera sencilla.

Vamos a ver cómo ejecutar S4A (scratch for arduino) en una máquina Linux (Ubuntu) de 64 bits.

Si intentamos instalar el paquete que proporcionan los creadores de S4A obtenemos un error de que la arquitectura i386 no está instalada

El problema viene de que S4A está necesita las librerías de 32bits … Siempre me ha parecido una chapuza añadir la arquitectura de 32 bits y las librerías necesarias para que un programa funcione.

La solución que vamos a usar aprovecha que scratch es un entorno de ejecución de máquinas virtuales. S4A contiene el entorno de ejecución (de 32bits) y la máquina virtual.

Lo que haremos será usar la máquina virtual que tiene el paquete scratch  con la imagen de S4A. Veamos como hacerlo:

Instalamos la version de 64 bits de scratch

sudo apt-get install scratch

Descargamos el paquete de S4A y lo descomprimimos en nuestra carpeta

Copiamos el script que ejecuta scratch y lo modificamos para que arranque la imagen de S4A

cp /usr/bin/scratch ./S4A

Lo editamos y cambiamos

IMAGE="/usr/share/scratch/Scratch.image"

por

IMAGE="/home/javacasm/Descargas/s4a/S4A.image"

Con esto podremos utilizar sin problema S4A en nuestra máquina de 64bits

JAVACASM

Arduino cumple 10 años

Mi referencia más antigua sobre arduino es del 20 de enero del 2006, lo he buscado en gmail con la búsqueda “arduino before:2007/1/1″

No son los 10 años que hoy cumple Arduino, sólo son 8 años y unos meses… durante estos 10 años son muchas las horas dedicadas a aprender a usarlo y también muchas las dedicadas a enseñar a usarlo.

Son muchos los post sobre el tema, primero en e-interiores y luego en el cacharreo, explicando lo que había aprendido

Deben ser varios cientos de alumnos en las distintas ediciones de los distintos cursos. Gracias a todos por vuestro interés

También son muchos los amigos que esta afición/oficio me ha dado. Un abrazo a todos ellos :)

Para festejarlo acabo de subir las presentaciones del curso básico de arduino a slideshare

Podéis ver los actos del día de hoy en la siguiente web

Hapy Arduino Day 2014

Curso presencial de Arduino Práctico en Granada

Arduino Práctico A primeros de julio, del 7 al 11 tendré el honor de impartir  un curso de 20 hoas de Arduino Práctico organizado por Fundación General UGR-Empresa y la OSL.

Empezaremos el día 7 y durante 20 horas, hasta el día 11 de julio, aprenderemos a realizar proyectos con Arduino, comenzando por aprender conceptos de programación y de electrónica para realizar los mismos.

El curso se realizará en la Facultad de Ciencias de la Universidad de Granada en horario de tarde.

No son necesarios conocimientos previos, puesto que empezaremos desde 0.

No es la primera vez que montamos un curso sobre Arduino presencial. Se han realizado 4 ediciones del mismo con distintos niveles. El año pasado hicimos un curso de arduino avanzado y anteriormente un curso de introducción de arduino.

Si quieres ir practicando sólo tienes que descargar el entorno con todo lo necesario que ha montado Arduino y ver los ejemplos que contiene. A partir de ahí seguiremos con el resto de material y con los ejercicios online.

Más información sobre matrículas en la página de curso, el Poster y el Tríptico. Por supuesto puedes contactar conmigo