Beginniner - Difficulty w/ LED Matrix Changing using color shield- Arduino Uno


So I'm new to touching Arduino, but I got an Arduino Uno and some 8x8 RGB color matrixes and matrix color shields. I have found basic easy codes that are supposed to change the matrix, but the matrix just keeps repeating the same default code flashing through all it's animations - so I'm not sure why it's not reflecting the change to the matrix driver itself.

Every time I upload code that is successful, the matrix will turn off, blink, and then go back to doing what it was doing. The RX light will flash, then turn off, and then the TX light will stay on.

I also have an issue with some code not allowing me to upload them unless I disconnect the TDX/RDX that common?

I'm not quite sure what I'm doing wrong, or if there's something wrong with the shield I'm using. All it seems to be doing is powering up the driver shield but not communicating with it.

Any thoughts? :slight_smile: I've spent about 3 hours trying to figure it out and doing research to solve my issue.

I've used the LED Matrix Control with FastLED, any of the FastLED examples that didn't have runtime errors, etc... and none of them change the default blinking.

I have an Arduino Uno R3 and an ICDuino ICSH040A

The pins are:

DTR | Reset
TXD |1
RXD |0

Link to whatever it is you bought.

Arduino Uno R3

Colorduino Color Shield

8x8 RGB Matrix

I had bought two shields, so I also have tried swapping them to see if there was an issue with one of them. I'm not sure if it's just my set up that's not allowing the color shield to "talk" to the arduino properly. I know I matched the 1 to 1 on the matrix on the color shield. Is it something as simple as removing the atmega328?

Oh, you will also need to include the code you wrote.

I removed the atmega328, still no change.

I’m currently just trying to get this to work from the FastLED examples library. But it will only upload correctly without errors if I remove the TX/RX wires and the processor chip is still inserted.

I mean at this point I’m just trying to get SOMETHING to change, just to see where I’m having the issue. I’m not 100% sure if I am using the correct led arrangement for that code.

#include "FastLED.h"

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

// For led chips like Neopixels, 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
#define DATA_PIN 3
#define CLOCK_PIN 13

// Define the array of leds

void setup() { 
      // Uncomment/edit one of the following lines for your leds arrangement.
      // FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
  	  FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
      // FastLED.addLeds<APA104, 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<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<WS2801, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<SM16716, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<LPD8806, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<P9813, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<APA102, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<DOTSTAR, RGB>(leds, NUM_LEDS);

      // FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
      // FastLED.addLeds<DOTSTAR, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);

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

The FastLED library?


You don’t have WS2812B LEDs on a strip.

I suggest you Google for information on what you actually have which is a Colorduino shield.

Well, I was using tutorials - several of them recommended that library. I’ve also tried the Colorduino_GFX examples from the Arduino example library ( which give me an error unless I don’t plug in the TX/RX cables, but if I plug them back in and whatnot ) it still isn’t doing anything other than cycling the demo on the color shield. I also tried using ITead’s demo code but I keep running into verify errors where it states that there’s variables that haven’t been defined - even after I add in the #include Arduino.h to the top.

 * Animate a bouncing ball

// Include required libraries
#include <Adafruit_GFX.h>
#include <Colorduino_GFX.h>

// Set options

// radius 1-2
const int8_t r = 2;
// set to true to draw a filled circle
const boolean fillCircle = false;

// Create new Colorduino instance
ColorduinoPanel Colorduino;

// some vars required for timing and ...
long previousMillis = 0;
long interval = 250;

// ... movement
int8_t xSpeed = 1, ySpeed = 1;
int8_t x = 3, y = 4;

void setup() {
  // Initialize random generator
  // Set port mode, load data structures and start the timer
  // Set white balance
  Colorduino.setWhiteBalance(36, 63, 63);

void loop() {
  // some timing stuff
  unsigned long currentMillis = millis();
  if(currentMillis - previousMillis > interval) {
    previousMillis = currentMillis;
    x += xSpeed;
    y += ySpeed;
    if(x >= 7 - r || x <= r) {
      xSpeed = -xSpeed;
    if(y >= 7 - r || y <= r) {
      ySpeed = -ySpeed;

    // clear the back-buffer
    Colorduino.fillColor(Colorduino.color(0, 0, 0));
    // draw the circle
    if(fillCircle == false) {
      Colorduino.drawCircle(x, y, r, Colorduino.color(255, 255, 255));
    } else {
      Colorduino.fillCircle(x, y, r, Colorduino.color(255, 255, 255));
    // swap the buffers, but don't copy the new front-buffer to the new back-buffer

Okay, I finally figured out what the problem was.

I had to take out the ATMega chip and then when I was uploading it, I had to change the board from an Arduino Uno to a Arduino Duemilanove and now it's accepting the code :smiley: