Knight Rider 2008

Está aclarado en la PD de #80

Saludos

lo estoy probando, y queda wenísimo!!!

ahora, descubrir como hacerlo para hacer el que me pasó gatul, que por estos lares conseguir una neopixel, es muuuuuuuuy costoso!!

Hola a todos, alguien que me pueda ayudar a hacer lo mismo de este código del señor @gatul en el post #67 pero en una tira led ws2811, llevo esto, aunque no creo que sea ni por si acaso parecido, pero es mi intento, después averiguaré como hacer el fade al ir encendiendo y apagando, no tengo idea como

 #include <FastLED.h>
 #define NUMLEDS 10
 #define PINDATO 3
 CRGB leds[NUMLEDS];


void setup() { 
  FastLED.addLeds<WS2811, PINDATO,RGB>(leds, NUMLEDS);
}

void KR() {
  for (int x = 0; x < NUMLEDS; x++) {
    leds[x] = CRGB(0, 255, 30);
    FastLED.show();
    delay(300);
  }
  for (int x = 0; x < NUMLEDS; x++) {
    leds[x] = CRGB(0, 0, 0);
    FastLED.show();
    delay(300);
  }
  for (int x = (NUMLEDS); x > -NUMLEDS; x--) {
    leds[x] = CRGB(0, 255, 30);
    FastLED.show();
    delay(300);
  }
    for (int x = (NUMLEDS); x > -NUMLEDS; x--) {
    leds[x] = CRGB(0, 0, 0);
    FastLED.show();
    delay(300);
  }
  
}  

    void loop() {
        KR();
        
    }

pero al hacer la secuencia de volver apagando uno por uno, cambian todos a color verde, y después se apagan todos de golpe, algún buen samaritano que me pueda ayudar?, gracias!

Hola, ¿ otra ves liado con el raider ?, si ya tienes un montón de ellos, en fin...
Andabas bien encaminado te falto un pelin, a ver si era esto lo que querias, compara los for con los de tu código.

#include <FastLED.h>
#define NUMLEDS 10
#define PINDATO 3
#define velo 10 //Velocidad
CRGB leds[NUMLEDS];
void setup() {
  FastLED.addLeds<WS2811, PINDATO, RGB>(leds, NUMLEDS);
}
void KR() {
  for (int x = 0; x < NUMLEDS; x++) {
    leds[x] = CRGB(0, 255, 30);
    FastLED.show();
    delay(velo);
  }
  for (int x = 0; x < NUMLEDS; x++) {
    leds[x] = CRGB(0, 0, 0);
    FastLED.show();
    delay(velo);
  }
  for (int x = NUMLEDS; x >= 0; x--) {
    leds[x] = CRGB(0, 255, 30);
    FastLED.show();
    delay(velo);
  }
  for (int x = NUMLEDS; x >= 0; x--) {
    leds[x] = CRGB(0, 0, 0);
    FastLED.show();
    delay(velo);
  }
}
void loop() {
  KR();
}

Por cierto muy buena libreria la estudiare a fondo. Te has fijado que en los ejemplos que trae lleva uno llamado Cylon, no es que sea muy bueno pero si es curioso el efecto.
Saludos.

1 Like

No he aportado más, no porque no quisiera sino por desconocimiento, porque todavía no me he metido con los WS así que nada podría agregar.
Hazle caso a @gonpezzi que ya los conoce.

Saludos

1 Like

si lo vi, pero mi tira led neopixel, es muuuy malita, es más, le apliqué el código, y no hizo absolutamente nada, y como la verdad no le pego mucho al código, no seguí insistiendo...

Para que funcione solo tienes que cambiar el numero de led a 10, (NUM_LEDS), el pin a los que los conectas (DATA_PIN), y comentar la linea del CLOCK_PIN, que es para otro tipo de led.
Para 10 led no se aprecia bien el efecto, pero lo interesante es que usa una función " fadeall() ", no la habia visto en ninguna otra lbreria , tengo que experimentar con ella.
Saludos.

1 Like

fue como un aporte lo mio no?, joajoajoajoajoa

1 Like

Y para mi bastante bueno, me dara largas horas de entretenimiento esa libreria.

1 Like

Hace poco ayudé a alguien con un panel hecho de WS y quedó fabuloso.
Sinceramente es increíble lo que se puede hacer con las tiras WS y eso que lo mueve un ESP8266 y lo hace con una comodidad que sorprende.
Hay muy buenas cosas hechas con FastLed.h que incluso la complementan.
Buena elección @elmiranda.

1 Like

Estimados todos,

buscando y buscando por ahí, encontré un código para Knight Rider con WS2812b y FastLed

#include <FastLED.h>                        //FastLed library version 3.2.1 - https://github.com/FastLED/FastLED/wiki/Overview or http://fastled.io/ with NEOPIXEL or WS2812B
#define NUM_STRIPS 1                        // number of led strips
#define NUM_LEDS_PER_STRIP 15               // number of leds per each strip
CRGB leds[NUM_STRIPS][NUM_LEDS_PER_STRIP];

uint8_t gHue = 0;                           //knight rider color

int knightRiderSpeed = 36;                     // speed for knight rider lights
int knightRiderTail = 10;                      // tail effect for knight rider lights

unsigned long currentMillis = 0; 
unsigned long previousMillis = 0;

void setup() { 
  //Serial.begin(9600);
   
  FastLED.addLeds<NEOPIXEL, 2>(leds[0], NUM_LEDS_PER_STRIP); //led strip front left for arduino
  //FastLED.addLeds<NEOPIXEL, 0>(leds[0], NUM_LEDS_PER_STRIP); //led strip front left for attiny85
  
  fill_solid(leds[0], NUM_LEDS_PER_STRIP, CRGB::Black); // some led strips are all on at power on, so let's power them off at boot
  FastLED.show();
}

void loop() {
  // put your main code here, to run repeatedly:
  KR();

}

void KR(){
  fadeToBlackBy( leds[0], NUM_LEDS_PER_STRIP, knightRiderTail);
  int pos = beatsin16( knightRiderSpeed, 0, NUM_LEDS_PER_STRIP-1 );
  leds[0][pos] += CHSV( gHue, 255, 192);
  FastLED.show();
}

No es mio, pero pensé en compartirlo con ustedes para quienes quieran aplicar un KR con las tiras "inteligentes", sigo buscando como hacer lo mismo, pero al estilo 2008, al estilo del mustang, pero no se como, gracias a todos!

No esta mal, mejora un poco el efecto que teniamos con el segundo codigo del post #5. Y si no me equivoco el del 2008 to tienes ya para una neopixel en el primer codigo del mismo post.
Saludos.

no lo había visto, pero, ese código ahora que tengo como probarlo, y en que probarlo, hace algo que no es lo que buscaba, está excelente, pero el 2008 hace desvanecimiento cuando va encendiendo y cuando va apagando, y, apelo a la buena onda, si es posible hacerlo que haga desvanecimiento, sabes como?, sino, de todas maneras mas agradecido que 9, saludos!

Toma "pesado" :face_with_symbols_over_mouth:

#include <Adafruit_NeoPixel.h>
#define PIN  3 //pin Datos
#define DELAYVAL 50 // Velocidad tira
#define NUMPIXELS 10 //Numero diodos

Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

int  fade [NUMPIXELS];
int Red, Green, Blue, Pixel_1, Pixel_2, brillo;

void setup() {
  brillo = NUMPIXELS;
  Serial.begin (9600);
  pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
  for (int z = 0; z <= (NUMPIXELS) - 1; z++) {
    fade [z] = ((brillo / NUMPIXELS) * (NUMPIXELS - z)) / 1;
  }
  for (int z = 0; z <= (NUMPIXELS / 2) - 1; z++) {
    fade [z] = brillo;
  }
   for (int z = 0; z <= (NUMPIXELS) - 1; z++) {
Serial.println (fade [z]);
  }
}

void loop() {
  aleatorio();
  //*********************** I D A **************************************
  for (int x = 0; x < NUMPIXELS * 1.5; x++) {
    for (int y = 0; y < (NUMPIXELS); y++) {
      Pixel_1 = x - y;
      Pixel_2 = NUMPIXELS - 1 - Pixel_1;
      if (Pixel_1 < (NUMPIXELS / 2) && Pixel_1 >= 0) {
        pixels.setPixelColor(Pixel_1, pixels.Color(fade [y], Green, Blue));
      }
      if (Pixel_2 >= NUMPIXELS / 2 && Pixel_2 <= (NUMPIXELS)) {
        pixels.setPixelColor(Pixel_2, pixels.Color(fade [y], Green, Blue));
      }
    }
    pixels.show();
    delay(DELAYVAL);
    pixels.clear();
  }

  //*********************************************************************

  //*********************** V U E L T A *********************************
  for (int x = (NUMPIXELS); x >= -(NUMPIXELS*1.5); x--) {
    for (int y = 0; y < (NUMPIXELS); y++) {
      Pixel_1 = x + y;
      if (Pixel_1 < (NUMPIXELS / 2) && Pixel_1 >= 0) {
        pixels.setPixelColor(Pixel_1, pixels.Color(fade [y], Green, Blue));
      }
      Pixel_2 = NUMPIXELS - 1 - Pixel_1;
      if (Pixel_2 >= (NUMPIXELS / 2) && Pixel_2 <= NUMPIXELS) {
        pixels.setPixelColor(Pixel_2, pixels.Color(fade [y], Green, Blue));
      }
    }
    pixels.show();
    delay(DELAYVAL);
    pixels.clear();
  }
  //*********************************************************************
}
void aleatorio () { 
Green = random(0, 256 / 20);
Blue = random(0, 256) / 40;
}

Saludos.

1 Like

maestrísimo, gracias, pero, casi casi casi es, pero no es, el del 2008, se mueve de lado a lado, no desde el centro hacia afuera, lo probé, pero ya es tarde para jugar, y me voy al sobre, pero estos días lo probaré, de todas maneras, muchísimas gracias maestro, voy a estudiarlo, lo que si no entendí, es donde hacerlo para dejarlo a 250 de brillo, pero está espectacular la idea, no se me ve tan bien, pq tengo 2 tiras de 15 leds, unidas en un solo pin central, es decir ambas tiras hacen lo mismo, estaba pensando que si las uno podría funcionar, lo malo es que tendría que desarmar todo, gracias infinitas, saludos!!!!

Es que no te explicas, valla lio me tienes hecho. esto ultimo hace lo del 2008 segun publicaste en el post #31 ,#50 y #64 para una tira de "n" leds sin tener que partirla.
¿Ahora que tienes? ¿dos tiras de 15 leds a modo de espejo y le metes los datos por el centro?,
si es asi usa este ultimo codigo y ponle como numero de leds 30.
Y para el brillo la linea que pone;

brillo = NUMPIXELS;

la cambias por ejemplo a :

brillo = NUMPIXELS * //lo que sea;

Pero ojo el resultado de esa operacion no puede superar los 254.
Buenas noches.