A quetion about this cube

Im trying to do this cube 8x8x8 wirh

1 uln2803
875hc595

I have 3 time doing this and none work
Something is wrong or is imposible to make it work with this pcb ??

CODIGO.ino (106 KB)

You need to read up on how to post your code and include images. People are less inclined to download attachments (malware, etc.) and you therefore limit those who might otherwise offer assistance. I downloaded your other file, but time to do things different. If we do download, we look at it, comment and then generally move it to the trash bin, otherwise the file of downloaded snippets grows and grows. Also, referring back to the original post, there’s no reference unless one is prepared to download again and again, or hold on to the initial download. Good luck.

DKWatson:
You need to read up on how to post your code and include images. People are less inclined to download attachments (malware, etc.) and you therefore limit those who might otherwise offer assistance. I downloaded your other file, but time to do things different. If we do download, we look at it, comment and then generally move it to the trash bin, otherwise the file of downloaded snippets grows and grows. Also, referring back to the original post, there's no reference unless one is prepared to download again and again, or hold on to the initial download. Good luck.

Ok bro i will do that. Thanks for answer. It..


expfull:
Ok bro i will do that. Thanks for answer. It..

expfull:
I have 3 time doing this and none work

Please explain exactly what you mean by “none work”.

Please always do a Tools > Auto Format on your code before posting it. This will make it easier for you to spot bugs and make it easier for us to read. If you’re using the Arduino Web Editor you will not have access to this useful tool but it’s still unacceptable to post poorly formatted code. I recommend you to use the standard IDE instead.

None ledd turn on…

Start with a simplified sketch that only blinks one LED.

expfull:
Im trying to do this cube 8x8x8 wirh

1 uln2803
875hc595

I have 3 time doing this and none work
Something is wrong or is imposible to make it work with this pcb ??


...

I see the problem! The 595 shift register on the right is cut in half.

I can't see your code though. Is there something in it that prevents your circuit from working? Check out this thread, for some hints on how to supply enough information to get effective help.

ChrisTenone:
I see the problem! The 595 shift register on the right is cut in half.

I can’t see your code though. Is there something in it that prevents your circuit from working? Check out this thread, for some hints on how to supply enough information to get effective help.

/***************************************************************************************
    * Name    : LED CUBE 8x8x8 74HC595
    * By      : 
    ****************************************************************************************/
    
   #include <TimerOne.h>
   #include <string.h>
   #define AXIS_X 1
   #define AXIS_Y 2
   #define AXIS_Z 3
    
   //--- Pin connected to ST_CP of 74HC595
   //--- Gelbe Leitung RCK
   int latchPin = 10;
   //--- Pin connected to SH_CP of 74HC595
   //--- Schwarze Leitung SCK
   int clockPin = 13;
   //--- Pin connected to DS of 74HC595
   //--- Lila Leitung SI
   int dataPin = 11;
   //--- Used for faster latching
   int latchPinPORTB = latchPin - 8;
   //holds value for all the pins, [x][y][z]
   byte cube[8][8];
    
   //Counts through the layers
   int current_layer = 0;
    
   //--- This process is run by the timer and does the PWM control
   void iProcess(){
     //last layer store
     int oldLayerBit = current_layer + 2;
      
     //increment layer count
     current_layer++;
     if(current_layer >= 8){
       current_layer = 0;
     }
    
     //--- Run through all the shift register values and send them (last one first)
     // latching in the process
     latchOff();
     for (int i = 0 ; i < 8 ; i++){
       spi_transfer(cube[current_layer][i]);
     }
    
     //Hide the old layer
     digitalWrite(oldLayerBit, LOW);
     //New data on the pins
     latchOn();
     //new layer high
     digitalWrite(current_layer + 2, HIGH);
   }
    
   //--- Direct port access latching
   void latchOn(){
     bitSet(PORTB,latchPinPORTB);
   }
   void latchOff(){
     bitClear(PORTB,latchPinPORTB);
   }
    
   //--- Used to setup SPI based on current pin setup
   //    this is called in the setup routine;
   void setupSPI(){
     byte clr;
     SPCR |= ( (1<<SPE) | (1<<MSTR) ); // enable SPI as master
     SPCR &= ~( (1<<SPR1) | (1<<SPR0) ); // clear prescaler bits
     clr=SPSR; // clear SPI status reg
     clr=SPDR; // clear SPI data reg
     SPSR |= (1<<SPI2X); // set prescaler bits
     delay(10);
   }
    
   //--- The really fast SPI version of shiftOut
   byte spi_transfer(byte data)
   {
     SPDR = data;                    // Start the transmission
     loop_until_bit_is_set(SPSR, SPIF);
     return SPDR;                    // return the received byte, we don't need that
   }
    
   void setup() {
     Serial.begin(9600);
    
     //layer pins
     for(int i = 2; i < 10; i++)
     {
       pinMode(i, OUTPUT);
     }
    
     pinMode(latchPin, OUTPUT);
     pinMode(clockPin, OUTPUT);
     pinMode(dataPin, OUTPUT);
    
     digitalWrite(latchPin,LOW);
     digitalWrite(dataPin,LOW);
     digitalWrite(clockPin,LOW);
    
     //--- Setup to run SPI
     setupSPI();
    
     //--- Activate the PWM timer
     Timer1.initialize(100); // Timer for updating pwm pins
     Timer1.attachInterrupt(iProcess);
   }
    
    
   void loop(){
     int i,x,y,z;
    
     while (true)
     {
  1. If you are posting code or error messages, use "code" tags

Thanks for showing your code expful.

expfull:

/***************************************************************************************

* Name    : LED CUBE 8x8x8 74HC595
   * By      :
   ****************************************************************************************/
   
  #include <TimerOne.h>
  #include <string.h>
  #define AXIS_X 1
  #define AXIS_Y 2
  #define AXIS_Z 3
   
  //— Pin connected to ST_CP of 74HC595
  //— Gelbe Leitung RCK
  int latchPin = 10;
  //— Pin connected to SH_CP of 74HC595
  //— Schwarze Leitung SCK
  int clockPin = 13;
  //— Pin connected to DS of 74HC595
  //— Lila Leitung SI
  int dataPin = 11;
  //— Used for faster latching
  int latchPinPORTB = latchPin - 8;
  //holds value for all the pins, [y][z]
  byte cube[8][8];
   
  //Counts through the layers
  int current_layer = 0;
   
  //— This process is run by the timer and does the PWM control
  void iProcess(){
    //last layer store
    int oldLayerBit = current_layer + 2;
     
    //increment layer count
    current_layer++;
    if(current_layer >= 8){
      current_layer = 0;
    }
   
    //— Run through all the shift register values and send them (last one first)
    // latching in the process
    latchOff();
    for (int i = 0 ; i < 8 ; i++){
      spi_transfer(cube[current_layer][i]);
    }
   
    //Hide the old layer
    digitalWrite(oldLayerBit, LOW);
    //New data on the pins
    latchOn();
    //new layer high
    digitalWrite(current_layer + 2, HIGH);
  }
   
  //— Direct port access latching
  void latchOn(){
    bitSet(PORTB,latchPinPORTB);
  }
  void latchOff(){
    bitClear(PORTB,latchPinPORTB);
  }
   
  //— Used to setup SPI based on current pin setup
  //    this is called in the setup routine;
  void setupSPI(){
    byte clr;
    SPCR |= ( (1<<SPE) | (1<<MSTR) ); // enable SPI as master
    SPCR &= ~( (1<<SPR1) | (1<<SPR0) ); // clear prescaler bits
    clr=SPSR; // clear SPI status reg
    clr=SPDR; // clear SPI data reg
    SPSR |= (1<<SPI2X); // set prescaler bits
    delay(10);
  }
   
  //— The really fast SPI version of shiftOut
  byte spi_transfer(byte data)
  {
    SPDR = data;                    // Start the transmission
    loop_until_bit_is_set(SPSR, SPIF);
    return SPDR;                    // return the received byte, we don’t need that
  }
   
  void setup() {
    Serial.begin(9600);
   
    //layer pins
    for(int i = 2; i < 10; i++)
    {
      pinMode(i, OUTPUT);
    }
   
    pinMode(latchPin, OUTPUT);
    pinMode(clockPin, OUTPUT);
    pinMode(dataPin, OUTPUT);
   
    digitalWrite(latchPin,LOW);
    digitalWrite(dataPin,LOW);
    digitalWrite(clockPin,LOW);
   
    //— Setup to run SPI
    setupSPI();
   
    //— Activate the PWM timer
    Timer1.initialize(100); // Timer for updating pwm pins
    Timer1.attachInterrupt(iProcess);
  }
   
   
  void loop(){
    int i,x,y,z;
   
    while (true)
    {