Why does 74hc595 work "better" without GRND (pin 8) grounded?

I must have read it wrong. You're right. Never mind. :slight_smile:

In any case, I've fiddled a bit more, but the max either locks itself to all on or all off. It seems to happen randomly if I remove the data wire.

I've done some measurements with a constant output in loop with no delay. The clock pin has a "constant" voltage of around 1.5V. The load pin has 70 mV. However, the data pin seems completely silent. It shows 1.5 mV. If I turn all communication down, all the pins has 1.5 mV, so I guess that's the relative low.

Here's the code I run now:

byte data = 12;
byte clk = 11;
byte latch = 10;
byte status = 13;

byte max_noop = 0x00;
byte max_d0 = 0x01;
byte max_d1 = 0x02;
byte max_d2 = 0x03;
byte max_d3 = 0x04;
byte max_d4 = 0x05;
byte max_d5 = 0x06;
byte max_d6 = 0x07;
byte max_d7 = 0x08;
byte max_decode_mode = 0x09;
byte max_intensity = 0x0A;
byte max_scan_limit = 0x0B;
byte max_shutdown = 0x0C;
byte max_test = 0x0F;

void output(byte address, byte data) {
  digitalWrite(clk, LOW);
  shiftOut(data, clk, MSBFIRST, address);
  shiftOut(data, clk, MSBFIRST, data);
  digitalWrite(latch, HIGH);
  digitalWrite(latch, LOW);
}

void setup() {
  Serial.begin(9600);

  pinMode(data, OUTPUT);
  pinMode(clk, OUTPUT);
  pinMode(latch, OUTPUT);
  pinMode(status, OUTPUT);

  digitalWrite(data, LOW);
  digitalWrite(clk, LOW);
  digitalWrite(latch, LOW);

  output(max_shutdown, 0x01);
  output(max_decode_mode, 0x00);
  output(max_scan_limit, 0x07);
}


void loop() {
  for(byte i = 0; i<8; i++){
    output(i+1, 0x00);
  }
  digitalWrite(status, LOW);
  delay(100);
  for(byte i = 0; i<8; i++){
    output(i+1, 0xFF);
  }
  digitalWrite(status, HIGH);
  delay(100);
}