質問編集履歴

3

2019/07/09 06:53

投稿

FOOK
FOOK

スコア16

test CHANGED
File without changes
test CHANGED
@@ -4,11 +4,11 @@
4
4
 
5
5
 
6
6
 
7
+ [リンク内容](http://https://www.hiramine.com/physicalcomputing/arduino/shiftregister.html)
7
8
 
8
9
 
9
10
 
10
-
11
+ ```ここに言語を入力
11
-
12
12
 
13
13
  #define DATAPIN (9) // 74HC595のDSへ
14
14
 
@@ -81,3 +81,7 @@
81
81
  }
82
82
 
83
83
  }
84
+
85
+
86
+
87
+ ```

2

2019/07/09 06:53

投稿

FOOK
FOOK

スコア16

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,12 @@
1
1
  以下のプログラムはLEDをシフトレジスタで1つずつシフトさせていくプログラムなのですが、私はLEDをシフトさせるのではなく特定したLEDを点灯させたいのですが、どこをどう変更すれば制御できるようになりますか?
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
2
10
 
3
11
 
4
12
 

1

2019/07/09 06:29

投稿

FOOK
FOOK

スコア16

test CHANGED
File without changes
test CHANGED
@@ -1,55 +1,75 @@
1
- ```C言語
2
-
3
- ``
4
-
5
- コード
6
-
7
- ```
8
-
9
- ```
10
-
11
- ```### 前提・実現したいこ
1
+ 以下のプログラムはLEDをシフトレジスタで1つずつシフトさせていくプログラムなのですが、私はLEDをシフトさせるのではなく特定したLEDを点灯させたのですが、どをどう変更すれば制御できるようになりますか?
12
2
 
13
3
 
14
4
 
15
- LEDを複数のシフトレジスタで制御する方法で、arduinoを使っています。
5
+ #define DATAPIN (9) // 74HC595のDSへ
16
6
 
17
- シフトさせるのではなく各LEDを点灯させたりしたいですが、プログラムはどうかけばいいですか?
7
+ #define LATCHPIN (11) // 74HC595ST_CPへ
8
+
9
+ #define CLOCKPIN (12) // 74HC595のSH_CPへ
18
10
 
19
11
 
20
12
 
13
+ void MyShiftOut( int dataPin, int clockPin, int bit, uint64_t val )
21
14
 
15
+ {
22
16
 
23
- ```
17
+ for( int i = 0; i < bit; i++ )
24
18
 
25
- エラーメッセージ
19
+ {
26
20
 
21
+ digitalWrite(dataPin, !!(val & ((uint64_t)1 << i)));
22
+
23
+
24
+
25
+ digitalWrite(clockPin, HIGH);
26
+
27
+ digitalWrite(clockPin, LOW);
28
+
27
- ```
29
+ }
30
+
31
+ }
28
32
 
29
33
 
30
34
 
31
- ### 該当のソースコード
35
+ void setup()
36
+
37
+ {
38
+
39
+ pinMode(DATAPIN, OUTPUT);
40
+
41
+ pinMode(LATCHPIN, OUTPUT);
42
+
43
+ pinMode(CLOCKPIN, OUTPUT);
44
+
45
+ }
32
46
 
33
47
 
34
48
 
35
- ```ここに言語名を入力
49
+ void loop()
36
50
 
37
- ソースコード
51
+ {
38
52
 
53
+ for( int i = 0; i < 64; i++ )
54
+
39
- ```
55
+ {
56
+
57
+ digitalWrite(LATCHPIN, LOW); // 送信中はLATCHPINをLOWに
40
58
 
41
59
 
42
60
 
43
- ### たこと
61
+ // シフト演算を使って点灯するLEDを選択ています
62
+
63
+ MyShiftOut( DATAPIN, CLOCKPIN, 64, (uint64_t)1 << i );
44
64
 
45
65
 
46
66
 
47
- ここ問題に対して試したことを記載してください。
67
+ digitalWrite(LATCHPIN, HIGH); // 送信後はLATCHPINをHIGH戻す
48
68
 
49
69
 
50
70
 
51
- ### 補足情報(FW/ツールのバージョンなど)
71
+ delay(100);
52
72
 
73
+ }
53
74
 
54
-
55
- ここにより詳細な情報を記載してください。
75
+ }