Saltar al contenido

Cómo hacer un slow dance frame diy

Hace bastante tiempo intentamos crear el slow dance frame pero no conseguimos obtener un buen resultado y al final lo dejamos sin terminar. Sin embargo, hace tan solo unos pocos días lo sacamos de la caja en la que estaba guardado y le dimos otra oportunidad. Fuimos capaces de encontrar los errores y solucionarlos, así que aquí te voy a dejar todos los recursos necesarios para que tu también lo puedas desarrollar, ya que el efecto que produce (efecto estroboscópico) es muy bonito.

Si no te quieres perder ningún proyecto DIY porque te encanta aprender a hacer cosas nuevas, ¡suscríbete al canal!

Resumen del proyecto slow dance frame

Este proyecto es el segundo de la serie de réplicas caseras y hoy vamos a intentar repetir un producto muy interesante Se trata del slow dance frame, o como lo suelen llamar marco slow motion. 

El efecto que produce este marco se llama efecto estroboscópico. No hay ningún truco de cámara y el vídeo tampoco está a cámara lenta. Realmente el objeto que pones el marco se mueve muy rápido, pero gracias a la iluminación que hemos puesto, nuestro cerebro no es capaz de procesar el movimiento real del objeto y lo vemos a cámara lenta.

Este efecto sucede cuando un objeto se mueve y se ilumina con unas frecuencias determinadas. Si la frecuencia de parpadeo de los leds coincide con la frecuencia de movimiento, conseguimos ver el objeto parado. En cambio, si estas dos frecuencias están un poco desfasadas, es decir, una es un poco más rápida que la otra, obtenemos el efecto slow motion (efecto estroboscópico). 

El marco original se puede comprar en Internet por unos 399$. Nosotros vamos a intentar hacer una réplica con el mismo funcionamiento pero mucho más barato y facilitando todos los recursos necesarios para que tú también puedas repetir el proyecto, así que ¡vamos allá!

Materiales necesarios para crear el slow dance frame

  • Listón de madera. En nuestro caso es de 15 y 55 mm de ancho y grueso.
  • Driver L298N.
  • Tira LED de 12V de un solo color. Nosotros al principio probamos con una tira LED WS2811 y este fue un error, ya que no se encendía y apagaba lo suficientemente rápido. 
  • Electroimán.
  • Imanes pequeños.
  • Trozo de metal de unos 6-8 cm de largo y flexible. Nosotros hemos utilizado la hoja de un cúter. 
  • Un Arduino Nano.
  • Fuente de alimentación de 12V.
  • Cables

Para hacer la guía de los leds en la madera nosotros hemos utilizado una fresadora o router. Realmente no es necesario hacerlo, pero queda un acabado más bonito y profesional porque de esta forma no se ve la tira led. Si no tienes la posibilidad de hacer este agujero, no te preocupes y pega la tira led directamente sobre la madera. 

Esquema eléctrico

Esquema eléctrico slow dance frame

El esquema eléctrico no es muy complicado. Básicamente hay que conectar el driver L298N a Arduino, y la tira LED y el electroimán a las 2 salidas del driver. Además, hay que alimentar tanto a Arduino como al driver con la fuente de alimentación de 12 voltios. 

Código

Si estás utilizando exactamente los mismos componentes que nosotros y has seguido al pie de la letra el esquema eléctrico, no necesitas modificar nada del código. La única variable con la que puedes jugar es «DEF_OFFSET». Esta variable guarda el desfase entre la frecuencia de movimiento y la frecuencia de parpadeo de los leds. La unidad es microsegundos. 

Cuanto mayor sea el desfase, más rápido verás que se mueve el objeto, y cuanto más pequeño sea, más lento parecerá que se mueve. Nosotros hemos conseguido los resultados más óptimos con valores entre 100 y 250.

Si has cambiado algún componente electrónico como por ejemplo el driver tendrás que hacer las modificaciones necesarias. Si tienes cualquier problema y no consigues que funcione siempre puedes ponerte en contacto con nosotros. 

De todas formas, si no sabes cómo subir un programa a Arduino o tienes algunas dudas, puedes revisar nuestro post de introducción a Arduino

#define DRV_1 6
#define DRV_2 7
#define DRV_LEDS 5

#define EXPO 600 
#define PERIOD 5000 
#define DEF_OFFSET 100   //Entre 100 y 250


boolean flashState, motorState;
uint8_t valColor;
uint16_t flashDelay, lightTimer;
uint32_t lightPrev, motorPrev;


void setup() {
  pinMode(DRV_1, OUTPUT);
  pinMode(DRV_2, OUTPUT);
  pinMode(DRV_LEDS, OUTPUT);
  delay(500);
  bitWrite(PORTD, DRV_LEDS, 1);
  flashDelay = PERIOD * 2 + DEF_OFFSET;
  delay( 3000 ); // power-up safety delay
}

void loop() {
  if (micros() - lightPrev >= lightTimer) {
    lightPrev = micros();
    flashState = !flashState;
    bitWrite(PORTD, DRV_LEDS, flashState);
    if (flashState) lightTimer = EXPO;
    else lightTimer = flashDelay - EXPO;
  }

  if (micros() - motorPrev >= PERIOD){
    motorPrev = micros();
    motorState = !motorState;
    
    bitWrite(PORTD, DRV_1, motorState);
    bitWrite(PORTD, DRV_2, !motorState);
  }
}