Digispark, un arduino mínimo

Junto con el Digix que vimos en un artículo anterior, trajimos unos equipos muy pequeños llamados Digispark.

wpid-20140209_124635-1.jpg

El DigiSpark no esta pensado para igualar las capacidades de un Arduino Uno, por ejemplo. Su ventaja está en la portabilidad y la familiaridad de uso pues ocupa el mismo Arduino IDE (aunque no es compatible con todos los sketchs)

 

En este artículo mostramos como se usa el IDE y mostramos un ejemplo de configuración, todo despues del salto

Materiales

  • DigiSpark
  • Wing shield
  • LED RGB cátodo comun
  • Batería 9V
  • PC con Windows7
  • Acceso a Internet

Hardware

Sus principales características son:

  • Soporte para el Arduino IDE 1.0+ (OSX/Win/Linux)
  • Alimentación via USB o fuente Externa – 5v or 7-35v (selección automática – 12v o menor es recomendado)
  • Regulador USB incorporado de 500ma 5V
  • 6 Pines de I/O (2 se usan para USB solo si el programa se comunica activamente via USB, de otra manera se pueden usar los 6)
  • 8k de Memoria Flash (cerca de 6k despues del bootloader)
  • I2C y SPI (via USI, Universal Serial Interface)
  • PWM en 3 pins (es posible mas usando Software PWM)
  • ADC en 4 pines
  • LED de alimentación y Test/Status LED (en Pin1)

Digispark posee un microcontrolador Atmel Attiny 85 en una placa muy pequeña,  además tiene shields especiales para hacer demostraciones o para extender las funciones básicas.

El kit viene con sus piezas separadas y se deben soldar, lo que no toma mucho tiempo y es fácil de hacer.
Aquí mostramos el digispark y el wing shield.

Abajo esta el DigiSpark arriba esta el WingShield y una moneda de 100pesos :)
Abajo esta el DigiSpark arriba esta el WingShield y una moneda de 100 pesos 🙂

 

Para programar de manera mas fácil viene un accesorio que es un conector USB con interruptor, lo mostramos en la siguiente foto.

Herramienta para programacion del DigiSpark
Herramienta para programación del DigiSpark

El pinout es el siguiente,

  • Todos los Pines se  pueden usar como Digital I/O
  • Pin 0 → I2C SDA, PWM (LED en Modelo B)
  • Pin 1 → PWM (LED on Modelo A)
  • Pin 2 → I2C SCK, Analog
  • Pin 3 → Analog In (también es USB+ cuando USB esta en uso)
  • Pin 4 → PWM, Analog (también es USB- cuando USB esta en uso)
  • Pin 5 → Analog In

 

Software

En relación al software lo mejor es bajar el siguiente archivo trae versión personalizada y otros ejecutables. Este es el link, asi evitamos conflictos con instalaciones anteriores.

Primero se instalan los drivers. Se descomprime el archivo que se baja, se va a la carpeta Digispark-> Windows Driver, ejecutar el archivo InstallDriver.exe.

Ahora se va a la carpeta \DigisparkArduino-Win32\Digispark-Arduino-1.0.4 y se ejecuta Arduino.exe ese es nuestro IDE.

En el arduino IDe se selecciona Tools->Boards->DigiSpark y Tools->Programmer->DigiSpark

La programación no es igual que Arduino se debe compilar el programa y luego se conecta el Digispark, tienes 5 segundos para conectar, por eso es util el accesorio de programacion que trae un interruptor para el USB.

Ejemplos de sketch se encuentran en este link

Ejemplo práctico

Nosotros probamos un triple Hola Mundo para mostrar la  funcionalidad. Usamos un LED RGB que en realidad son tres led en uno, como se muestra en la siguiente figura,

Led RGB
Led RGB

 

Una vez programado, conectamos el Wingshield con Digispark y la bateria de 9V

 

wpid-20140209_122015-1.jpg
Prueba de LED

 

Ahora en color VERDE
Ahora en color VERDE

El sketch es el siguiente

#include <DigisparkRGB.h>
/*
 Digispark RGB

 This example shows how to use soft PWM to fade 3 colors.
 Note: This is only necessary for PB2 (pin 2) - Blue, as Red (pin 0) and Green (pin 1) as well as pin 4 support the standard Arduino analogWrite() function.

 This example code is in the public domain.
 */
byte RED = 0;
byte BLUE = 2;
byte GREEN = 1;
byte COLORS[] = {RED, BLUE, GREEN};

// the setup routine runs once when you press reset:
void setup()  { 
  DigisparkRGBBegin();
} 

void loop ()
{
//direction: up = true, down = false
boolean dir = true;
int i = 0;

while(1)
{
fade(COLORS[i%3], dir);
i++;
dir = !dir;
}
}
void fade(byte Led, boolean dir)
{
int i;

//if fading up
if (dir)
{
for (i = 0; i < 256; i++)  { DigisparkRGB(Led, i); DigisparkRGBDelay(25);//1); } } else { for (i = 255; i >= 0; i--) 
{
DigisparkRGB(Led, i);
DigisparkRGBDelay(25);//1);
}
}
}

 

 

Author: Manuel Carrasco

Ingeniero Eléctrico, Institutano, instructor certificado Cisco, en twitter @mcarrasco con comentarios y opiniones personales.

2 thoughts

  1. Bueno. Abres una ventana a la robótica. Tienes posibilidad para realizar talleres de introducción al uso de estos pack y a montaje ?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *