12 LED Charlieplexed Snowfall with AtTiny85

Hi Dave,

Here's something you can try. This is the extra line I took out as it didn't have a negative impact on my array, but it might be causing your issue.

/ --------------------------------------------------------------------------------
// turns on LED #thisLED.  Turns off all LEDs if the value passed is out of range
//
void charlieON(int thisLED) {
  // turn off previous (reduces overhead, only switch 2 pins rather than 5)
  digitalWrite(charliePin[LED[previous][1]], LOW);   // <-- ADD THIS LINE
  pinMode(charliePin[LED[previous][0]], INPUT);
  pinMode(charliePin[LED[previous][1]], INPUT);
  // turn on the one that's in focus
  if(thisLED >= 0 && thisLED <= 19) {
    pinMode(charliePin[LED[thisLED][0]], OUTPUT);
    pinMode(charliePin[LED[thisLED][1]], OUTPUT);
    digitalWrite(charliePin[LED[thisLED][0]], LOW);
    digitalWrite(charliePin[LED[thisLED][1]], HIGH);
  }
  previous = thisLED;
}

I suspect the reason you're seeing what you're seeing is that even though the pin that was previously set high is now in input mode, that would have it with the internal pull-up resistor on, so rather than being a true high impedance mode, it would have a small +ve signal. If the LED and resistors are matched as they are for my blue array, there wouldn't be enough current to cause an issue but if the resistor value is slightly mismatched a signal would still get out enough to run an LED dimly. Your video seems to show the LED being run as bright as the head of the animation so that's probably not the reason...but it's worth trying perhaps.

Let me know how you go
Geoff