First attempt at looping through (not full) matrix led strip...

next iteration:

seems to light up correctly...incrementally...etc..

but I cant seem to trigger it to go back down correctly?

#include <SPI.h>  

//-----[this is SPI hardware wiring pinout only]-----//
/* 
 Arduino pin D13 is connected to the DataIn (MAX7221 pin:13)
 Arduino pin D11 is connected to the CLK (MAX7221 pin:1)
 Arduino pin D10 is connected to LOAD (MAX7221 pin:12)
 */

// define MAX72xx default register addresses
#define DECODE_MODE 0x09 // Code B Decode Digits 0-7: 0xFF / No-Decode Mode: 0x00
#define INTENSITY_ADDRESS 0x0A // 0x07 to start, half intensity. valid from 0x00 (min) to 0x0F (max)
#define SCANLIMIT_ADDRESS 0x0B // All 8 digits on = 0xFF?? FF? Datasheet says 0x07?
#define SHUTDOWN_ADDRESS 0x0C  // Normal operation = 0x01 / Shutdown = 0x00 (powers up in shutdown mode)
#define DISPLAYTEST_ADDRESS 0x0F // 0x01 = all lights on full, 0x00 = normal ops

//---[define register addresses ['register/digit x' represent 1 section/grouping of 8 leds]---//
#define register1 0x01 // digit 0
#define register2 0x02 // digit 1
#define register3 0x03 // digit 2
#define register4 0x04 // digit 3
#define register5 0x05 // digit 4
#define register6 0x06 // digit 5
#define register7 0x07 // digit 6
#define register8 0x08 // digit 7

//--[define the SS pin]--//
#define SS 10 //hardware slave select pin on Arduino Due.
//--[deifne custom val]--//
#define totalGroups 8
//--[deifne custom val]--//
#define totalLeds 60


//create var to hold delay tim
int pause = 35;
//create var to hold current led count
int ledCounter = 0;

// create array to hold the register addresses
//byte registerAddress[] = {0,1,2,3,4,5,6,7};
byte registerAddress[] = {
  register1, register2, register3, register4, register5, register6, register7, register8};

// initialize array with some data/pattern
//1 on at a time
//byte registerData[] = {B10000000,B01000000,B00100000,B00010000,B00001000,B00000100,B00000010,B00000001}; 
//incrmentally on, 1, then 2, then 3...all staying light after
byte registerData[] = {B10000000,B11000000,B11100000,B11110000,B11111000,B11111100,B11111110,B11111111}; 

//stay on pattern/array
byte ledIn[] = {B10000000,B11000000,B11100000,B11110000,B11111000,B11111100,B11111110,B11111111}; 
byte ledOut[] = {B11111110, B11111100, B11111000, B11110000, B11100000, B11000000, B10000000, B00000000}; 
//byte ledOut[] = {B00000001, B00000010, B00000100, B00001000, B00010000, B00100000, B01000000, B10000000}; 

void setup() {
  Serial.begin(9600);
  Serial.println("--SET UP CHIP--");
  //define 'SS' pin as output (needed for SPI....even if other devices use other pins as their SS/CS pins...correct?
  pinMode (SS, OUTPUT);
  // start the SPI library
  SPI.begin(); 

  //set MAX7221 defaults
  digitalWrite (SS, LOW);
  SPI.transfer (DECODE_MODE);  
  SPI.transfer (0x00);  // 0x00 - no-decode mode
  digitalWrite (SS, HIGH);

  digitalWrite (SS, LOW);
  SPI.transfer (INTENSITY_ADDRESS);  
  SPI.transfer (0x0F);  // 0x0F - max on/brightness
  digitalWrite (SS, HIGH);

  digitalWrite (SS, LOW);
  SPI.transfer (SCANLIMIT_ADDRESS);  
  SPI.transfer (0x07);  // 0xFF or 0x07? 0x07 - all display digits on
  digitalWrite (SS, HIGH);

  digitalWrite (SS, LOW);
  SPI.transfer (SHUTDOWN_ADDRESS);  
  SPI.transfer (0x01);  // 0x01 - normal operation mode
  digitalWrite (SS, HIGH);

  digitalWrite (SS, LOW);
  SPI.transfer(DISPLAYTEST_ADDRESS);
  SPI.transfer(0x00);  // 0x00 - normal operation mode
  digitalWrite (SS, HIGH);

  //clear display
  for(int group=0; group<totalGroups; group++){    
    digitalWrite (SS,LOW);
    SPI.transfer (registerAddress[group]);  // register to write to
    SPI.transfer (B00000000);  // and value       
    digitalWrite (SS,HIGH);      
  }

}

void loop() {   
  //clear display
  //for(int group=0; group<totalGroups; group++){    
  //digitalWrite (SS,LOW);
  //SPI.transfer (registerAddress[group]);  // register to write to
  //SPI.transfer (B00000000);  // and value       
  //digitalWrite (SS,HIGH);
  //}

  for(int group=0; group<totalGroups; group++){
    for(int led=0; led<8; led++){
      digitalWrite (SS,LOW);
      SPI.transfer (registerAddress[group]);  // register to write to
      SPI.transfer (ledIn[led]);  // and value       
      digitalWrite (SS,HIGH);
      delay(pause);
      ledCounter++;
      if(ledCounter >= 60){
        //count backwards
        for(int group2=totalGroups; group2>0; group2--){
          for(int led2=0; led2<8; led2++){
            digitalWrite (SS,LOW);
            SPI.transfer (registerAddress[group2-1]);  // register to write to
            SPI.transfer (ledOut[led2]);  // and value       
            digitalWrite (SS,HIGH);
            delay(pause);
            ledCounter--;
          }
        }
      }

    }
  }
}

(sorta of the same problem I had which started this thread!?? hahaha..

seems to be a bug in the COUNT down...

any ideas?

thanks