Problema con NodeMCU y módulo leds

Buenas, tengo la siguiente configuración entre un nodeMCU y un módulo de leds conectado a la tira de leds en cuestión(aprox 15 leds), la tira se enciende pero no responde al código del arduino, he probado el siguiente código:

#define FASTLED_ESP8266_RAW_PIN_ORDER
#include <FastLED.h>

#define NUM_LEDS 15

#define DATA_PIN 13  //D7
#define CLOCK_PIN 14  //D5

CRGB leds[NUM_LEDS];

void setup() { 
    FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);  
}

void loop() { 
  leds[0] = CRGB::Red;
  FastLED.show();
}

Con este caso en concreto de código lo único que hace la tira de leds es encender todos los leds al principio de color azul muy claro(cuando tan solo se indica que el primero sea rojo) y en menos de 1 segundo se apagan.

La tira leds es de 12 V y como he comentado tiene 15 leds, dejo enlace del resto de elementos:
Módulo leds: https://es.aliexpress.com/item/32858168662.html
NodeMCU: Módulo inalámbrico ESP8266, basado en placa de desarrollo para Iot, CH340, Esp 12E, NodeMcu, V3, Lua, WIFI, con antena de PCB y puerto USB para Arduino|Circuitos integrados| - AliExpress

Aquí el esquema de la configuración, el nodeMCU se alimenta mediante el USB conectado al pc:

Muchas gracias de antemano.

Hola
prueba así:

#define FASTLED_ESP8266_RAW_PIN_ORDER
#include <FastLED.h>

#define NUM_LEDS 15

#define DATA_PIN 13  //D7
#define CLOCK_PIN 14  //D5

CRGB leds[NUM_LEDS];

void setup() {
  FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
}

void loop() {
  for (int i = 0; i , 15; i++)
  {
    leds[i] = CRGB::Red;
  }
  FastLED.show();
  delay(1000);
  for (int i = 0; i , 15; i++)
  {
    leds[i] = CRGB::Black;
  }
  FastLED.show();
  delay(1000);
}

Buenas, con ese código se quedan todos los leds encdendidos de color blanco, pero es como si el arduino no mandara nada ya que cuando le doy al reset los leds siguen encendidos del mismo color.

Prueba usando D7 para pin 13 y D5 para pin 14
Me pasó o mismo y lo resolví de este modo.

Hola , no he probado nunca la libreria fastled con una tira tira de led no direccionable y ademas no se si es compatible con el chip p9813 que usa ese escudo. Parece que si algunos videos en youtube la usan, si entiendes ingles fluidamente puedes mirar este: VIDEO
Lo que si es cierto es que tu tira no es direccionable, es decir es UN unico led, (eso si compuesto por 15 en paralelo) luego en cualquier codigo que hagas NUM_LEDS siempre ha de valer 1, que hara referencia al unico escudo que tienes conectado.
Te dejo tambien a continuacion un enlace que es compatible con ese chip, pero recuerda lo dicho antes "NUM_LEDS siempre ha de valer 1", salvo que conectes mas de un escudo.
Saludos.
LIBRERIA

He seguigo "buceando" un poco por los ejemplos de la libreria Fastled, pero como no tengo ese modulo no puedo probar. Hazme el favor de probar el siguiente codigo por mi a ver que pasa.

#define FASTLED_ESP8266_RAW_PIN_ORDER
#include <FastLED.h>

#define NUM_LEDS 1

#define DATA_PIN 13  //D7
#define CLOCK_PIN 14  //D5
#define retardo 250

CRGB leds[NUM_LEDS];

void setup() {
  FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
  delay (1000);// demos un tiempo a que todo se estabilice un poco.
  //las dos siguientes lines creo resetearan la tira al resetear al ESP8266
  leds[0] = CRGB::Black;
  FastLED.show();
}

void loop() {
  leds[0] = CRGB::Orange;
  FastLED.show();
  delay (retardo);
  leds[0] = CRGB::Black;
  FastLED.show();
  delay (retardo);
}

Buenas, pues ahora parpadéa con color naranja, ahora si que responde a las órdenes del módulo nodeMcu, porque cuando reseteo deja de parpadear, además he probado a poner color Rojo y Verde y todo correcto.
Por lo que veo en el código has cambiado la línea de addLeds el WS2801 por P9813, puedes explicar la solución mas que nada para entender que sucedía.
Muchas gracias.

Existen muchos chip para controlar led rgb, (mira el ejemplo blink que trae la libreria fastled), cada uno con su protocolo de comunicaciones y caracteristicas propias. Simplemente estabas equivocado ya que tu escudo usa el chip P9813 no el WS2801.
Lo que tienes que tener en cuenta es que ese escudo esta diseñado para manejar un solo led de alta potencia , o una tira rgb de alta poencia como la tuya que se comporta como un solo led nunca podras encender un solo led independiente de esa tira como intentabas hacer con el primer código.
Sigue teniendo en cuenta lo que te dije en el post #5 en cuanto a " NUM_LEDS " y para ordenar algo al modulo tienes que hacerlo con " leds[0] = ".
Puedes probar cualquier ejemplo de la libreria teniendo en cuenta lo dicho, aunque el efecto no sera el mismo.
Saludos.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.