回答編集履歴

1

追加回答

2015/11/08 14:43

投稿

Chironian
Chironian

スコア23272

test CHANGED
@@ -1 +1,49 @@
1
1
  8x16をスキャン制御するのに16本の出力ピンが使えるのであれば、[3入力8出力のデコーダ](http://akizukidenshi.com/catalog/g/gI-07204/)を2つか、4入力16出力のデコーダを1つ使えば十分と思いますよ。
2
+
3
+
4
+
5
+ ---
6
+
7
+
8
+
9
+ 【追記】
10
+
11
+ こちらにコメントへの回答を書きます。
12
+
13
+ リンク先の資料にはサンプルのソースと回路図があり適切な説明もあるので、正直、これを超える説明ができないです。
14
+
15
+
16
+
17
+ 闇雲ですが、思いついた補足をしてみます。
18
+
19
+
20
+
21
+ shiftOut()関数はソフトウェアでクロック同期式のシリアル出力を行う関数です。
22
+
23
+ [ここ](http://japan.renesas.com/support/faqs/faq_results/Q1000000-Q9999999/mpumcu/78k/serial_003j.jsp)はクロック同期式シリアル入出力の説明です。
24
+
25
+ これのマスタ側がArduino、スレーブ側が74HC595と考えて下さい。
26
+
27
+ そして、マスタ側SIとスレーブ側SOは無いものとして考えて説明を読むとイメージは掴めると思います。
28
+
29
+
30
+
31
+ ところで、回路イメージでは74HC595は3つあるのに、ソースではシリアル出力を2つしか用意していないようですけど、これは何故でしょうか?
32
+
33
+ 単純にシリアル出力を3セット使えば素直に作れそうな気がします。
34
+
35
+
36
+
37
+ もしかして 1<<i が分からないのでしょうか?
38
+
39
+ これは単に1をiビット左シフトするだけです。
40
+
41
+ i==0の時は、1
42
+
43
+ i==1の時は、2
44
+
45
+ i==7の時は、128
46
+
47
+ になります。
48
+
49
+