Seeeduino Nano and Grove ws2813 RGB strip

Hi Folks - I picked up a Seeeduino Nano and a Grove WS2813 RGB Strip. I thought this might be a nice combo to do some experiments with RGB lighting given the price of each. I am struggling with set up. I have looked at FastLED library as well as a few others. I am a bit perplexed as to what value to use for the CLOCK and DATA pins. If I use the Grove connector, this should be A4 and A5. Can anyone clarify. I was not able to get any LEDs to light up on the strip. I looked through the schematic and these connectors correspond with 28 and 27. Any assistance on the correct value to use for this strip + a nano. Thanks. I have wrestled with this but I cannot get lights.

/// @file    Blink.ino

/// @brief   Blink the first LED of an LED strip

/// @example Blink.ino

#include <FastLED.h>

// How many leds in your strip?

#define NUM_LEDS 1

// For led chips like WS2812, which have a data line, ground, and power, you just

// need to define DATA_PIN.  For led chipsets that are SPI based (four wires - data, clock,

// ground, and power), like the LPD8806 define both DATA_PIN and CLOCK_PIN

// Clock pin only needed for SPI based chipsets when not using hardware SPI

#define DATA_PIN 3

#define CLOCK_PIN 13

// Define the array of leds

CRGB leds[NUM_LEDS];

void setup() {

    // Uncomment/edit one of the following lines for your leds arrangement.

    // ## Clockless types ##

    FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);  // GRB ordering is assumed

    // FastLED.addLeds<SM16703, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<TM1829, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<TM1812, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<UCS1904, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<UCS2903, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);  // GRB ordering is typical

    // FastLED.addLeds<WS2852, DATA_PIN, RGB>(leds, NUM_LEDS);  // GRB ordering is typical

    // FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);  // GRB ordering is typical

    // FastLED.addLeds<GS1903, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<SK6812, DATA_PIN, RGB>(leds, NUM_LEDS);  // GRB ordering is typical

    // FastLED.addLeds<SK6822, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<APA106, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<PL9823, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<SK6822, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<WS2813, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<APA104, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<WS2811_400, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<GE8822, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<LPD1886, DATA_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<LPD1886_8BIT, DATA_PIN, RGB>(leds, NUM_LEDS);

    // ## Clocked (SPI) types ##

    // FastLED.addLeds<LPD6803, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);  // GRB ordering is typical

    // FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);  // GRB ordering is typical

    // FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<WS2803, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);

    // FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);  // BGR ordering is typical

    // FastLED.addLeds<DOTSTAR, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);  // BGR ordering is typical

    // FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);  // BGR ordering is typical

    // FastLED.addLeds<SK9822, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);  // BGR ordering is typical

}

void loop() {

  // Turn the LED on, then pause

  leds[0] = CRGB::Red;

  FastLED.show();

  delay(500);

  // Now turn the LED off, then pause

  leds[0] = CRGB::Black;

  FastLED.show();

  delay(500);

}

Hello,
maybe you can refer to this Wiki, The code here can realize that its Grove WS2813 RGB Strip lights up:

The same as Seeedunio V4.2, Seeeduino Nano is built around Atmega328P – 8-bit AVR microcontroller. So you can use the same program code on both boards.

Not clear what PIN # I am supposed to use with the example? I looked at the schematic. A4? Seeeduino Nano | Seeed Studio Wiki

Anyway, no luck. I have modified my sample code and I feel this should work:

/// @file    Blink.ino
/// @brief   Blink the first LED of an LED strip
/// @example Blink.ino

#include <FastLED.h>

// How many leds in your strip?
#define NUM_LEDS 60

// For led chips like WS2812, which have a data line, ground, and power, you just
// need to define DATA_PIN.  For led chipsets that are SPI based (four wires - data, clock,
// ground, and power), like the LPD8806 define both DATA_PIN and CLOCK_PIN
// Clock pin only needed for SPI based chipsets when not using hardware SPI
#define DATA_PIN 2
#define CLOCK_PIN 13

// Define the array of leds
CRGB leds[NUM_LEDS];

void setup() { 
    // Uncomment/edit one of the following lines for your leds arrangement.
    // ## Clockless types ##
    // FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);  // GRB ordering is assumed
    // FastLED.addLeds<SM16703, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<TM1829, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<TM1812, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<UCS1904, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<UCS2903, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);  // GRB ordering is typical
    // FastLED.addLeds<WS2852, DATA_PIN, RGB>(leds, NUM_LEDS);  // GRB ordering is typical
    // FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);  // GRB ordering is typical
    // FastLED.addLeds<GS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<SK6812, DATA_PIN, RGB>(leds, NUM_LEDS);  // GRB ordering is typical
    // FastLED.addLeds<SK6822, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<APA106, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<PL9823, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<SK6822, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
    FastLED.addLeds<WS2813, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<APA104, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<WS2811_400, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<GE8822, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<LPD1886, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<LPD1886_8BIT, DATA_PIN, RGB>(leds, NUM_LEDS);
    // ## Clocked (SPI) types ##
    // FastLED.addLeds<LPD6803, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);  // GRB ordering is typical
    // FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);  // GRB ordering is typical
    // FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<WS2803, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);  // BGR ordering is typical
    // FastLED.addLeds<DOTSTAR, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);  // BGR ordering is typical
    // FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);  // BGR ordering is typical
    // FastLED.addLeds<SK9822, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);  // BGR ordering is typical
}

void loop() { 
  // Turn the LED on, then pause
  leds[0] = CRGB::Red;
  FastLED.show();
  delay(500);
  // Now turn the LED off, then pause
  leds[0] = CRGB::Black;
  FastLED.show();
  delay(500);
}

If you want to light the Grove WS2813 RGB Strip, it is recommended that you use the library:

Then open File → Example → Adafruit NeoPixel → buttoncycler to run it.

You can determine the pin number based on the pin you are connecting. If it is A6, enter 6

A6? I am curious how this is determined to the be the pin. Wouldn’t it be A4 (SDA)? The grove WS2813 is connected using a grove connector.

Hello,
The Grove WS2813 does not support the I2C communication protocol and instead communicates through regular digital pins. Therefore, if you want to use the Grove WS2813, you will need to connect it using jumper wires. I apologize for my previous response, which was incorrect. You should try connecting it to the D6 pin.
If you want to use the Grove interface, you will need to add an expansion board, such as the Grove Shield for Arduino Nano, to your Seeeduino Nano. By adding the expansion board, you can directly use the digital Grove interface without the need for additional jumper wires.

Thank you will review.

Got this working nicely with the XIAO grove expander: Grove Shield for XIAO with battery management chip | Seeed Studio Wiki