teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

回答を修正

2019/09/17 00:21

投稿

y_waiwai
y_waiwai

スコア88178

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