単純にSN74HC595をArduinoに2系統つなぐ場合、
例えば8,9,10ピンを使うとしたら、こんな感じかなと思います。
C
1#define MAX_CH 2
2
3const uint8_t SRCLK[MAX_CH] = { 5, 8 };
4const uint8_t RCLK[MAX_CH] = { 6, 9 };
5const uint8_t SER[MAX_CH] = { 7, 10 };
6
7void setup() {
8 for(int ch = 0;ch < MAX_CH;ch++){
9 pinMode(SRCLK[ch], OUTPUT);
10 pinMode(RCLK[ch], OUTPUT);
11 pinMode(SER[ch], OUTPUT);
12 }
13}
14
15// 点灯パターン(1=点灯, 0=消灯)
16const uint16_t PATTERNS[] = {
17 0b0000000000000001,
18 0b0000000000000010,
19 0b0000000000000100,
20 0b0000000000001000,
21 0b0000000000010000,
22 0b0000000000100000,
23 0b0000000001000000,
24 0b0000000010000000,
25 0b0000000100000000,
26 0b0000001000000000,
27 0b0000010000000000,
28 0b0000100000000000,
29 0b0001000000000000,
30 0b0010000000000000,
31 0b0100000000000000,
32 0b1000000000000000,
33};
34
35void loop()
36{
37 // 点灯パターンの数
38 int max_pattern = sizeof(PATTERNS)/sizeof(PATTERNS[0]);
39
40 for (uint8_t i=0; i<max_pattern; i++) {
41 // 8ビット分のデータをシフトレジスタへ送る
42 for(int ch = 0;ch < MAX_CH;ch++){
43 shiftOut(SER[ch], SRCLK[ch], LSBFIRST, PATTERNS[i] >> (8*ch));
44 }
45
46 // シフトレジスタの状態をストレージレジスタへ反映させる
47 for(int ch = 0;ch < MAX_CH;ch++){
48 digitalWrite(RCLK[ch], LOW);
49 digitalWrite(RCLK[ch], HIGH);
50 }
51
52 delay(200);
53 }
54}
74HC595を使ってarduinoの16ビットパラレル出力に挑んでみた
みたいにArduinoとの接続が1系統でキャリービットもう1系統につなぐ場合は
shiftOut(SER, SRCLK, LSBFIRST, PATTERNS[i]);
shiftOut(SER, SRCLK, LSBFIRST, PATTERNS[i] >> 8);
とすればいいと思います。