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

質問編集履歴

3

2019/07/09 06:53

投稿

FOOK
FOOK

スコア16

title CHANGED
File without changes
body CHANGED
@@ -1,9 +1,9 @@
1
1
  以下のプログラムはLEDをシフトレジスタで1つずつシフトさせていくプログラムなのですが、私はLEDをシフトさせるのではなく特定したLEDを点灯させたいのですが、どこをどう変更すれば制御できるようになりますか?
2
2
 
3
3
 
4
+ [リンク内容](http://https://www.hiramine.com/physicalcomputing/arduino/shiftregister.html)
4
5
 
5
-
6
+ ```ここに言語を入力
6
-
7
7
  #define DATAPIN (9) // 74HC595のDSへ
8
8
  #define LATCHPIN (11) // 74HC595のST_CPへ
9
9
  #define CLOCKPIN (12) // 74HC595のSH_CPへ
@@ -39,4 +39,6 @@
39
39
 
40
40
  delay(100);
41
41
  }
42
- }
42
+ }
43
+
44
+ ```

2

2019/07/09 06:53

投稿

FOOK
FOOK

スコア16

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

1

2019/07/09 06:29

投稿

FOOK
FOOK

スコア16

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