Saltar la navegación

Bote de bolas

ejemplo

Vamos a construir, paso a paso, un bote de bolas con luces dentro para aulas multisensoriales.
Creación a base de materiales de bajo coste. 
El uso adecuado de estos botes queda en manos de los especialistas y terapeutas.
Se plantea su uso como un estimulo más. La interacción en este caso queda limitada a poder coger el bote y moverlo de lugar. Hay otros proyectos en los que hay mayor interacción.
Las luces son tiras de leds direccionables y la programación está dentro de un arduino nano.
Todos los materiales se describen a continuación. 

pot 1pot 2

Vamos a necesitar un bote. Hay muchos modelos y suelen ser muy baratos.
Para poder trabajar en su interior si tiene la boca ancha será mejor. Lo más importante es que cierre bien, medida de seguridad para cuando lo dejemos a niños pequeños y que no se pueda abrir accidentalmente.
El bote tiene que ser de plástico y transparente.

tiras

luces led: link

Los leds deben de ser direccionables, leds del tipo WS2811, WS2811b o WS2812. 
Lo más sencillo es que las tiras sean para 5V (5 voltios). Hay otra opción que es de 12.
Estas tiras pueden ser de 1 m, de 3 m, de 5 m, etc. Pueden tener 30, 60 144 leds por metro.
Para que quede claro, una tira de 1 m con 30 leds (que no es necesario que sean waterproof), será suficiente para este proyecto.
Las tiras de leds se pueden enganchar unas con otras así pues, si el bote es muy grande, mejor poner dos tiras o más.
A tener en cuenta, las tiras tienen en un extremo el origen donde conectar los cables y no en el otro. Tiene un orden, suelen llevar unas flechas en la misma tira para indicarlo.

pelotas

pelotas de ping-pong: link

Para que las pelotas de ping-pong se ajusten a la pared es conveniente crear un cilindro interior donde pondremos la tira de leds

estructuraboles

estructura

nano

arduino nano: link

puesta en marcha

Una vez puesta la/las tira/as en la estructura hay que conectar un arduino que ya lleve la programación (se explica más adelante),
para comprobar que funciona correctamente.

Para la programación se necesita tener instalado Arduino en nuestro ordenador. 
Necesitaremos unas librerías que sean compatibles con el tema leds. Hay dos librerías
que nos ayudan pues entre otras cosas llevan unos ejemplos cosa que nos permite no preocuparnos
mucho de la programación. Se puede utilizar ejemplos de ambas libreras.

Estas dos librerías son: Adafruit Neopixel y FastLed.

libreria 1

libreria 2

Hay que elegir el tipo de placa utilizada

escollir 1

hay más factores a elegir, en este caso elegimos la versión antigua dado que trabajamos con
Arduinos Nanos comprados en AliExpress

elegir 2
Y finalmente seleccionamos el puerto
escojer 3

Conectar arduino con la tira es muy sencillo, las tiras llevan 3 cables (rojo, verde y blanco) que hay que conectarlo
con el Arduino Nano. El cable rojo va a 5V (5 voltios), el cable blanco va a GRN (ground) y el del medio va al pin que dentro de la programación será por donde le llega la información. 

pins

arduino dentro

Ejemplo de código de FastLed que se puede copiar y subir al Arduino

//A partir de ejemplo de la libreria FastLED modificado por sacosta.org, 
//con el objetivo de realizar una sala multisensorial
 
#include <FastLED.h>
 
#define LED_PIN     6
#define NUM_LEDS    120
#define BRIGHTNESS  64
#define LED_TYPE    WS2811
#define COLOR_ORDER GRB
CRGB leds[NUM_LEDS];
 
#define UPDATES_PER_SECOND 200
 
CRGBPalette16 currentPalette;
TBlendType    currentBlending;
 
extern CRGBPalette16 myRedWhiteBluePalette;
extern const TProgmemPalette16 myRedWhiteBluePalette_p PROGMEM;
 
 
void setup() {
    delay( 3000 ); // power-up safety delay
    FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip );
    FastLED.setBrightness(  BRIGHTNESS );
    
    currentPalette = PartyColors_p;
    currentBlending = LINEARBLEND;
}
 
 
void loop(){
    static uint8_t startIndex = 0;
    startIndex = startIndex + 1; /* motion speed */
    
    FillLEDsFromPaletteColors( startIndex);
    
    FastLED.show();
    FastLED.delay(25000 / UPDATES_PER_SECOND);
}
 
void FillLEDsFromPaletteColors( uint8_t colorIndex)
{
    uint8_t brightness = 255;
    
    for( int i = 0; i < NUM_LEDS; i++) {
        leds[i] = ColorFromPalette( currentPalette, colorIndex, brightness, currentBlending);
        colorIndex += 3;
    }
}
 
 
// There are several different palettes of colors demonstrated here.
//
// FastLED provides several 'preset' palettes: RainbowColors_p, RainbowStripeColors_p,
// OceanColors_p, CloudColors_p, LavaColors_p, ForestColors_p, and PartyColors_p.
//
// Additionally, you can manually define your own color palettes, or you can write
// code that creates color palettes on the fly.  All are shown here.
 
// This function sets up a palette of black and white stripes,
// using code.  Since the palette is effectively an array of
// sixteen CRGB colors, the various fill_* functions can be used
// to set them up.
void SetupBlackAndWhiteStripedPalette()
{
    // 'black out' all 16 palette entries...
    fill_solid( currentPalette, 16, CRGB::Black);
    // and set every fourth one to white.
    currentPalette[0] = CRGB::White;
    currentPalette[4] = CRGB::White;
    currentPalette[8] = CRGB::White;
    currentPalette[12] = CRGB::White;
    
}

ejemplo