Saltar la navegación

Código Efecto Random

Librerias necesarias

Para realizar esta practica vamos a necesitar la librería Adafruit_NeoPixel.h. Para poder instalarla deberemos ir a
Herramientas del Menú principal, Administración de Bibliotecas, se abrirá el cuadro de diálogo que podéis ver, 
donde vamos a buscarla e instalarla. 

llibreries

Códigos

Os presentamos dos opciones.
En la primera la tira de leds se va llenando de colores diferentes de forma aleatoria.
No hay control. Los colores irán cambiando de forma automática.
El efecto lo podéis ver en este vídeo

 

Código Primera Opción

//divideix la tira en 6 trams (variable numtrams)
//asigna un color al atzar entre 14 colors(funció set color)  a un led al atzar (funció np) de cada un dels trams

#include <Adafruit_NeoPixel.h>#define PIN 6   // pin 6 de arduino a in tira
#define NUMPIXELS      60 // numero de pixels
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int numtrams=6;
int delayval = 300; // tiempo de regeneración de color
int numcolor=0;//a utilizar en el random
int redColor = 0;
int greenColor = 0;
int blueColor = 0;
int np1=0;//variable en la que alojar la posición en el tramo que el random np asigna.En este caso primer tramo
int np2=0;//el random np asigna una posición en el segundo tramo
int np3=0;
int np4=0;
int np5=0;
int np6=0;


void setup() {
  // Initialize the NeoPixel library.
  pixels.begin();
 pixels.setBrightness(64);//útil per a fixar brillantor tira (0 apagat 255 màxima brillantor)
   
}
void loop() {
  setColor();//tria un color al atzar entre els 14 predeterminats
  np();//asigna per random una posició dins el tram
//els pixels designats per la funció np prenen el color enviat per setColor
  pixels.setPixelColor(np1, pixels.Color(redColor, greenColor, blueColor));
  setColor();
  pixels.setPixelColor(np2, pixels.Color(redColor, greenColor, blueColor));
  setColor();
  pixels.setPixelColor(np3, pixels.Color(redColor, greenColor, blueColor));
  setColor();
  pixels.setPixelColor(np4, pixels.Color(redColor, greenColor, blueColor));
  setColor();
  pixels.setPixelColor(np5, pixels.Color(redColor, greenColor, blueColor));
  setColor(); 
  pixels.setPixelColor(np6, pixels.Color(redColor, greenColor, blueColor));
  setColor();
  pixels.show();
  setColor();
  delay(delayval);
}


void np(){//asigna una posició al atzar en cada tram
  np1 =random (0,NUMPIXELS/numtrams);
  np2 =random (NUMPIXELS/numtrams,2*NUMPIXELS/numtrams);
  np3 =random (2*NUMPIXELS/numtrams,3*NUMPIXELS/numtrams);
  np4 =random (3*NUMPIXELS/numtrams,4*NUMPIXELS/numtrams);
  np5 =random (4*NUMPIXELS/numtrams,5*NUMPIXELS/numtrams);
  np6 =random (5*NUMPIXELS/numtrams,6*NUMPIXELS/numtrams);
  }


void setColor(){//pots fixar 14 colores (RGB)
numcolor=random(0,14);
 if (numcolor==0){//vermell
  redColor = 193;
  greenColor = 0;
  blueColor = 0;
  }
  else if (numcolor==1){//verd
  redColor = 0;
  greenColor = 193;
  blueColor = 0;
  }
  else if (numcolor==2){//blau
  redColor = 0;
  greenColor = 79;
  blueColor = 169;
  }
  else if (numcolor==3){//blau claret
  redColor = 0;
  greenColor = 255;
  blueColor = 255;
  }
  else if (numcolor==4){//groc
  redColor = 195;
  greenColor = 105;
  blueColor = 0;
  }
  else if (numcolor==5){//taronja
  redColor = 139;
  greenColor = 42;
  blueColor = 0;
  }
  else if (numcolor==6){//verd blavòs
  redColor = 0;
  greenColor = 118;
  blueColor = 35;
  }
  else if (numcolor==7){//rosa
  redColor = 255;
  greenColor = 47;
  blueColor = 84;
  }
  else if (numcolor==8){//violeta
  redColor = 255;
  greenColor = 0;
  blueColor = 198;
  }
  else if (numcolor==9){//blanc
  redColor = 200;
  greenColor = 200;
  blueColor = 200;
  }
  else if (numcolor==10){//vermell rosa
  redColor = 210;
  greenColor = 5;
  blueColor = 30;
  }
  else if (numcolor==11){//blau verdòs
  redColor = 0;
  greenColor = 255;
  blueColor = 128;}
  else if (numcolor==12){//blau nit
  redColor = 25;
  greenColor = 25;
  blueColor = 112;}
  else if (numcolor==13){//groc_2
  redColor = 166;
  greenColor = 136;
  blueColor = 0;
  }
  }

Segunda Opción

Con el siguiente código podéis conseguir que vayan cambiando los colores de forma
automática y que vayan perdiendo brillo hasta desaparecer. Volverá a aparecer otro.
Un ejemplo en este vídeo


Código Seguna Opción

//puja per la tira un color i queda tot engegat un segons després es difunina el color i s'apaga.
//apareix un nou color que repeteix el procés
//asigna un color al atzar entre 14 colors(funció set color) 
#include <Adafruit_NeoPixel.h>
#define PIN 6   // pin 6 de arduino a in tira
#define NUMPIXELS      60 // numero de pixels
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int delayval = 300; // delay per a pujada pixel a pixel
int delay_ences=2000;//delay tira encesa després de pujar el color
int delay_brillantor=200;//delay entre cada baixada de brillantor;
int brillantor=70;
int brillantor_max=70;
int trams_baixada_brillantor=14;
int decremet_brillantor=brillantor_max/(trams_baixada_brillantor);
int numcolor=0;//a utilizar en el random
int redColor = 0;
int greenColor = 0;
int blueColor = 0;


void setup() {
  // Initialize the NeoPixel library.
  pixels.begin();
 pixels.setBrightness(brillantor);//útil per a fixar brillantor tira (0 apagat 255 màxima brillantor)
   
}
void loop() {
  pixels.setBrightness(brillantor_max);//abans de començar la brillantor es posa a màxim
  setColor();//tria un color al atzar entre els 14 predeterminats
  for (int i=0; i < NUMPIXELS; i++) {
  pixels.setPixelColor(i, pixels.Color(redColor, greenColor, blueColor));
  pixels.show();
  delay(delayval);
  }
 delay (delay_ences);//temps engegat
 brillantor=brillantor_max;
 for(int w=0; w < trams_baixada_brillantor; w++){
 brillantor=brillantor-decremet_brillantor;
 if (brillantor<0){
  brillantor=0;}
 for (int i=0; i < NUMPIXELS; i++) {
  pixels.setBrightness(brillantor);
  pixels.setPixelColor(i, pixels.Color(redColor, greenColor, blueColor));
  pixels.show();
}
delay(delay_brillantor);
 }
}
void setColor(){//pots fixar 14 colores (RGB)
numcolor=random(0,14);
 if (numcolor==0){//vermell
  redColor = 193;
  greenColor = 0;
  blueColor = 0;
  }
  else if (numcolor==1){//verd
  redColor = 0;
  greenColor = 193;
  blueColor = 0;
  }
  else if (numcolor==2){//blau
  redColor = 0;
  greenColor = 79;
  blueColor = 169;
  }
  else if (numcolor==3){//blau claret
  redColor = 0;
  greenColor = 255;
  blueColor = 255;
  }
  else if (numcolor==4){//groc
  redColor = 195;
  greenColor = 105;
  blueColor = 0;
  }
  else if (numcolor==5){//taronja
  redColor = 139;
  greenColor = 42;
  blueColor = 0;
  }
  else if (numcolor==6){//verd blavòs
  redColor = 0;
  greenColor = 118;
  blueColor = 35;
  }
  else if (numcolor==7){//rosa
  redColor = 255;
  greenColor = 47;
  blueColor = 84;
  }
  else if (numcolor==8){//violeta
  redColor = 255;
  greenColor = 0;
  blueColor = 198;
  }
  else if (numcolor==9){//blanc
  redColor = 200;
  greenColor = 200;
  blueColor = 200;
  }
  else if (numcolor==10){//vermell rosa
  redColor = 210;
  greenColor = 5;
  blueColor = 30;
  }
  else if (numcolor==11){//blau verdòs
  redColor = 0;
  greenColor = 255;
  blueColor = 128;}
  else if (numcolor==12){//blau nit
  redColor = 25;
  greenColor = 25;
  blueColor = 112;}
  else if (numcolor==13){//groc_2
  redColor = 166;
  greenColor = 136;
  blueColor = 0;
  }
  }