回答編集履歴

1

回答を修正

2019/09/17 00:21

投稿

y_waiwai
y_waiwai

スコア88038

test CHANGED
@@ -1,17 +1,49 @@
1
- ```ここに言語を入力
1
+ ```C
2
2
 
3
+
4
+
5
+ // 点灯パターン(1=点灯, 0=消灯)
6
+
7
+ const uint16_t PATTERNS[] = {
8
+
9
+ ...
10
+
11
+ };
12
+
13
+
14
+
15
+ void loop() {
16
+
17
+
18
+
3
- uint32_t dat=なんかのパターン
19
+ // 点灯パターンの数
20
+
21
+ int max_pattern = sizeof(PATTERNS)/sizeof(PATTERNS[0]);
22
+
23
+
4
24
 
5
25
  for (uint8_t i=0; i<max_pattern; i++) {
6
26
 
7
- shiftOut(SER, SRCLK, LSBFIRST, dat&1);
27
+ // 16ビット分のデータをシフトレジスタへ送る
8
28
 
9
- dat>>=1;
29
+ shiftOut(SER, SRCLK, LSBFIRST, PATTERNS[i]>>8);
10
30
 
31
+ shiftOut(SER, SRCLK, LSBFIRST, PATTERNS[i]&0xff);
32
+
33
+
34
+
35
+ // シフトレジスタの状態をストレージレジスタへ反映させる
36
+
37
+ digitalWrite(RCLK, LOW);
38
+
39
+ digitalWrite(RCLK, HIGH);
40
+
41
+
42
+
11
- ....
43
+ delay(200);
44
+
45
+ }
12
46
 
13
47
  ```
14
48
 
15
-
16
-
17
- ういうふうにすば32ビットまでいけますね
49
+ これで16ビット