ShiftOut vs. digitalWrite

digitalWrite() schreibt ein Bit. shiftOut() schreibt nacheinander alle Bits in dem Byte das du übergibst. Also 8 Stück:

void shiftOut(uint8_t dataPin, uint8_t clockPin, uint8_t bitOrder, uint8_t val)
{
	uint8_t i;

	for (i = 0; i < 8; i++)  {
		if (bitOrder == LSBFIRST)
			digitalWrite(dataPin, !!(val & (1 << i)));
		else	
			digitalWrite(dataPin, !!(val & (1 << (7 - i))));
			
		digitalWrite(clockPin, HIGH);
		digitalWrite(clockPin, LOW);		
	}
}

Am schnellsten geht es per SPI und transfer(). Ist aber nicht unbedingt nötig.