Lámpara restaurada y reconvertida a rgb

Esta pequeña lámpara la compré hace años con mis amigos.

Es una baratija, pero como le guardo cariño y no quise tirarla porque ya no funcionaba, pues decidí arreglarla pintándola de color plateado y mejorarla con 3 leds RGB de 3W cada uno.

Para poder controlarlo todo con un solo potenciómetro usé arduino; el arduino más barato y pequeño del mercado: attiny85

Sus ventajas son el precio y el tamaño. Por menos de 2€ la podemos encontrar en aliexpress.

Su mayor desventaja es que no tiene comunicación en serie nativa de arduino si no usa liberías propias. También me ha dado muchos problemas en la comunicación i2c.



Y este es el resultado final:

Le he añadido una función extra que no está en el vídeo:

Cuando el potenciómetro está en el valor máximo hace un avance automático y progresivo de los colores.

Os dejo el código para generar un degradado de todos los colores ya que no encontré por internet algo parecido y tuve que hacerlo.

No era algo como anidar bucles ya que eso no haría un degradado de colores, sino que haría una especie de degradado con saltos entre colores diferentes y quedaría un efecto feo.

En su lugar hay que rellenar un color y vaciar el anterior:

void run_colors()
{
  //ROJO A AMARILLO
  r=255;
  g=0;
  b=0;
  for(g=0;g<255;g++)
  {
    analogWrite(pin_r, r);     analogWrite(pin_g, g);    analogWrite(pin_b, b);
    delay(50);
  }
  if(pot_range_down(704))return; //si hemos variado el potenciómetro salimos de la función
  //AMARILLO A VERDE 
  for(r=255;r>0;r--)
  {
    analogWrite(pin_r, r);     analogWrite(pin_g, g);    analogWrite(pin_b, b);
    delay(50);
  }
  if(pot_range_down(704))return;
  //VERDE A CYAN
  for(b=0;b<255;b++)
  {
    analogWrite(pin_r, r);     analogWrite(pin_g, g);    analogWrite(pin_b, b);
    delay(50);
  }
  if(pot_range_down(704))return;
  //CYAN A AZUL
  for(g=255;g>0;g--)
  {
    analogWrite(pin_r, r);     analogWrite(pin_g, g);    analogWrite(pin_b, b);
    delay(50);
  }
  if(pot_range_down(704))return;
  //AZUL A MAGENTA
  for(r=0;r<255;r++)
  {
    analogWrite(pin_r, r);     analogWrite(pin_g, g);    analogWrite(pin_b, b);
    delay(50);
  }
  if(pot_range_down(704))return;
  //MAGENTA A ROJO
  for(b=255;b>0;b--)
  {
    analogWrite(pin_r, r);     analogWrite(pin_g, g);    analogWrite(pin_b, b);
    delay(50);
  }  
 
}

Deja un comentario

Tu dirección de correo electrónico no será publicada.

*

code

nasa pic of the day
  • wordpress plugin for embedding github content

  • (N)o (A)(R)(P) (A)ttacks

  • some of my scripts for dayly use

  • android beacon position triangulation app

  • example of dynamic scrolling tabs and dynamic sliding tabs for android studio

  • script for changing your login screen to last nasa uploaded picture

  • (D)iablo (2) (g)ame (l)ist (s)niffer

  • wordpress plugin for a widget with the last nasa uploaded picture.

  • draw a star field in js moving in the desired direction

  • quadcopter made with arduino (arduino pro micro + modules)

  • unsorted things