質問編集履歴
3
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
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
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
|
-
|
5
|
+
#define DATAPIN (9) // 74HC595のDSへ
|
16
6
|
|
17
|
-
|
7
|
+
#define LATCHPIN (11) // 74HC595のST_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
|
-
|
71
|
+
delay(100);
|
52
72
|
|
73
|
+
}
|
53
74
|
|
54
|
-
|
55
|
-
|
75
|
+
}
|