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

質問編集履歴

15

2018/11/18 01:14

投稿

Alyn
Alyn

スコア51

title CHANGED
File without changes
body CHANGED
@@ -63,8 +63,6 @@
63
63
  0,1の値が操作なしに変化することはなくなりました。
64
64
  ありがとうございました。
65
65
 
66
- 割込み処理とチャタリング処理とはどういった処理なのでしょうか?
67
-
68
66
  ### ソースコード2
69
67
  ```Arduino
70
68
  int EnPinA = 3;

14

誤字

2018/11/18 01:14

投稿

Alyn
Alyn

スコア51

title CHANGED
File without changes
body CHANGED
@@ -69,8 +69,6 @@
69
69
  ```Arduino
70
70
  int EnPinA = 3;
71
71
  int EnPinB = 4;
72
- int A = 1;
73
- int B = 1;
74
72
  int pos = 0;
75
73
  void Position(int, int);
76
74
 
@@ -85,6 +83,8 @@
85
83
 
86
84
  void loop()
87
85
  {
86
+ int A = 0;
87
+ int B = 0;
88
88
  A = digitalRead(EnPinA);
89
89
  B = digitalRead(EnPinB);
90
90
  Position(A, B);

13

誤字

2018/11/05 14:35

投稿

Alyn
Alyn

スコア51

title CHANGED
File without changes
body CHANGED
@@ -60,7 +60,7 @@
60
60
 
61
61
  ### 追記2
62
62
  ソースコードを改良致しました。
63
- 01の値が操作なしに変化することはなくなりました。
63
+ 0,1の値が操作なしに変化することはなくなりました。
64
64
  ありがとうございました。
65
65
 
66
66
  割込み処理とチャタリング処理とはどういった処理なのでしょうか?

12

追加修正

2018/11/05 14:31

投稿

Alyn
Alyn

スコア51

title CHANGED
File without changes
body CHANGED
@@ -2,8 +2,8 @@
2
2
  ロータリーエンコーダから来る値を読み取ってシリアル通信で表示する。
3
3
  下記プログラムを実行するとロータリーエンコーダを触っていないにも関わらずA,Bの値が変化してしまいます。
4
4
  ロータリーエンコーダを動かした時だけ、A,Bの値が変化するようにするにはどうしたらよいでしょうか?
5
- ### ソースコード
6
5
 
6
+ ### ソースコード1
7
7
  ```Arduino
8
8
  int EnPinA = 3;
9
9
  int EnPinB = 4;
@@ -53,7 +53,96 @@
53
53
  .  │  │ │  │
54
54
  . 【LED 1】【LED 2】
55
55
 
56
- ### 追記
56
+ ### 追記1
57
57
  申し訳ありません。実機が手元になくて動作確認できていません。
58
58
 
59
- シリアル通信の速度は9600で大丈夫なのでしょうか?
59
+ シリアル通信の速度は9600で大丈夫なのでしょうか?
60
+
61
+ ### 追記2
62
+ ソースコードを改良致しました。
63
+ 01の値が操作なしに変化することはなくなりました。
64
+ ありがとうございました。
65
+
66
+ 割込み処理とチャタリング処理とはどういった処理なのでしょうか?
67
+
68
+ ### ソースコード2
69
+ ```Arduino
70
+ int EnPinA = 3;
71
+ int EnPinB = 4;
72
+ int A = 1;
73
+ int B = 1;
74
+ int pos = 0;
75
+ void Position(int, int);
76
+
77
+ void setup()
78
+ {
79
+ pinMode(EnPinA, INPUT_PULLUP);
80
+ pinMode(EnPinB, INPUT_PULLUP);
81
+ Serial.begin(57600);
82
+ Serial.print("pos : ");
83
+ Serial.println(pos);
84
+ }
85
+
86
+ void loop()
87
+ {
88
+ A = digitalRead(EnPinA);
89
+ B = digitalRead(EnPinB);
90
+ Position(A, B);
91
+ }
92
+
93
+ void Position(int A, int B)
94
+ {
95
+ static int bA = 1;
96
+ static int bB = 1;
97
+ static int bpos = 0;
98
+
99
+ if((bA == A) && (bB == B))
100
+ {
101
+ // 何もしない
102
+ }
103
+ else
104
+ {
105
+ // bAbB == 00 or 11
106
+ if(bA == bB)
107
+ {
108
+ if((bA != A) && (bB == B))
109
+ {
110
+ pos++; // 右
111
+ }
112
+ else if((bA == A) && (bB != B))
113
+ {
114
+ pos--; // 左
115
+ }
116
+ }
117
+ // bAbB == 01 or 10
118
+ else
119
+ {
120
+ if((bA != A) && (bB == B))
121
+ {
122
+ pos--; // 左
123
+ }
124
+ else if((bA == A) && (bB != B))
125
+ {
126
+ pos++; // 右
127
+ }
128
+ }
129
+
130
+ if(bpos != pos)
131
+ {
132
+ Serial.print("pos : ");
133
+ Serial.print(pos);
134
+ if(bpos < pos)
135
+ {
136
+ Serial.println(" →");
137
+ }
138
+ else
139
+ {
140
+ Serial.println(" ←");
141
+ }
142
+ bpos = pos;
143
+ }
144
+ bA = A;
145
+ bB = B;
146
+ }
147
+ }
148
+ ```

11

2018/11/05 14:31

投稿

Alyn
Alyn

スコア51

title CHANGED
@@ -1,1 +1,1 @@
1
- Arduinoでのロータリーエンコーダの使い方
1
+ Arduinoロータリーエンコーダの使い方
body CHANGED
@@ -54,4 +54,6 @@
54
54
  . 【LED 1】【LED 2】
55
55
 
56
56
  ### 追記
57
- 申し訳ありません。実機が手元になくて動作確認できていません。
57
+ 申し訳ありません。実機が手元になくて動作確認できていません。
58
+
59
+ シリアル通信の速度は9600で大丈夫なのでしょうか?

10

2018/11/03 12:13

投稿

Alyn
Alyn

スコア51

title CHANGED
File without changes
body CHANGED
@@ -38,13 +38,13 @@
38
38
  delay(100);
39
39
  }
40
40
  ```
41
- ### 配線
41
+ ### 回路
42
42
  ロータリーエンコーダはD3,D4,GNDと繋がっている。
43
43
  LEDは2つあり、1つ目はD12とGND、2つ目はD13とGNDと繋がっている(間に抵抗器あり)。
44
44
 
45
45
  .【ロータリーエンコーダ】
46
46
  .  A   B   G
47
- .  │  │  
47
+ .  │  │  
48
48
  .  D3  D4  GND
49
49
  .【   Arduino   】
50
50
  .  D12 GND D13 GND

9

2018/11/03 11:58

投稿

Alyn
Alyn

スコア51

title CHANGED
File without changes
body CHANGED
@@ -44,7 +44,7 @@
44
44
 
45
45
  .【ロータリーエンコーダ】
46
46
  .  A   B   G
47
- .  │  │  
47
+ .  │  │  
48
48
  .  D3  D4  GND
49
49
  .【   Arduino   】
50
50
  .  D12 GND D13 GND

8

2018/11/03 11:57

投稿

Alyn
Alyn

スコア51

title CHANGED
File without changes
body CHANGED
@@ -43,7 +43,7 @@
43
43
  LEDは2つあり、1つ目はD12とGND、2つ目はD13とGNDと繋がっている(間に抵抗器あり)。
44
44
 
45
45
  .【ロータリーエンコーダ】
46
- .  A   B  GND
46
+ .  A   B   G
47
47
  .  │  │  │
48
48
  .  D3  D4  GND
49
49
  .【   Arduino   】

7

2018/11/03 11:55

投稿

Alyn
Alyn

スコア51

title CHANGED
File without changes
body CHANGED
@@ -51,4 +51,7 @@
51
51
  .  │  │ │  │
52
52
  .  抵抗 │ 抵抗 │
53
53
  .  │  │ │  │
54
- . 【LED 1】【LED 2】
54
+ . 【LED 1】【LED 2】
55
+
56
+ ### 追記
57
+ 申し訳ありません。実機が今手元になくて動作確認できていません。

6

2018/11/03 11:52

投稿

Alyn
Alyn

スコア51

title CHANGED
File without changes
body CHANGED
@@ -43,7 +43,7 @@
43
43
  LEDは2つあり、1つ目はD12とGND、2つ目はD13とGNDと繋がっている(間に抵抗器あり)。
44
44
 
45
45
  .【ロータリーエンコーダ】
46
- .  A   B  GND
46
+ .  A   B  GND
47
47
  .  │  │  │
48
48
  .  D3  D4  GND
49
49
  .【   Arduino   】

5

2018/11/03 11:50

投稿

Alyn
Alyn

スコア51

title CHANGED
File without changes
body CHANGED
@@ -43,7 +43,7 @@
43
43
  LEDは2つあり、1つ目はD12とGND、2つ目はD13とGNDと繋がっている(間に抵抗器あり)。
44
44
 
45
45
  .【ロータリーエンコーダ】
46
- .  A   B  GND
46
+ .  A   B  GND
47
47
  .  │  │  │
48
48
  .  D3  D4  GND
49
49
  .【   Arduino   】

4

2018/11/03 11:50

投稿

Alyn
Alyn

スコア51

title CHANGED
File without changes
body CHANGED
@@ -43,12 +43,12 @@
43
43
  LEDは2つあり、1つ目はD12とGND、2つ目はD13とGNDと繋がっている(間に抵抗器あり)。
44
44
 
45
45
  .【ロータリーエンコーダ】
46
- .  A B GND
46
+ .  A   B  GND
47
47
  .  │  │  │
48
48
  .  D3  D4  GND
49
49
  .【   Arduino   】
50
50
  .  D12 GND D13 GND
51
51
  .  │  │ │  │
52
- .  抵  │ 抵 
52
+ .  抵抗 │ 抵
53
53
  .  │  │ │  │
54
54
  . 【LED 1】【LED 2】

3

2018/11/03 11:49

投稿

Alyn
Alyn

スコア51

title CHANGED
File without changes
body CHANGED
@@ -42,13 +42,13 @@
42
42
  ロータリーエンコーダはD3,D4,GNDと繋がっている。
43
43
  LEDは2つあり、1つ目はD12とGND、2つ目はD13とGNDと繋がっている(間に抵抗器あり)。
44
44
 
45
- 【ロータリーエンコーダ】
45
+ .【ロータリーエンコーダ】
46
-   A B GND
46
+ .  A B GND
47
-   │  │  │
47
+ .  │  │  │
48
-   D3  D4  GND
48
+ .  D3  D4  GND
49
- 【   Arduino   】
49
+ .【   Arduino   】
50
-  D12 GND D13 GND
50
+ .  D12 GND D13 GND
51
-   │  │ │  │
51
+ .  │  │ │  │
52
-   抵  │ 抵  │
52
+ .  抵  │ 抵  │
53
-   │  │ │  │
53
+ .  │  │ │  │
54
-  【LED 1】【LED 2】
54
+ . 【LED 1】【LED 2】

2

2018/11/03 11:48

投稿

Alyn
Alyn

スコア51

title CHANGED
File without changes
body CHANGED
@@ -40,4 +40,15 @@
40
40
  ```
41
41
  ### 配線
42
42
  ロータリーエンコーダはD3,D4,GNDと繋がっている。
43
- LEDは2つあり、1つ目はD12とGND、2つ目はD13とGNDと繋がっている(間に抵抗器あり)。
43
+ LEDは2つあり、1つ目はD12とGND、2つ目はD13とGNDと繋がっている(間に抵抗器あり)。
44
+
45
+ 【ロータリーエンコーダ】
46
+   A B GND
47
+   │  │  │
48
+   D3  D4  GND
49
+ 【   Arduino   】
50
+  D12 GND D13 GND
51
+   │  │ │  │
52
+   抵  │ 抵  │
53
+   │  │ │  │
54
+  【LED 1】【LED 2】

1

追加

2018/11/03 11:47

投稿

Alyn
Alyn

スコア51

title CHANGED
@@ -1,1 +1,1 @@
1
- ロータリーエンコーダの使い方
1
+ Arduinoでのロータリーエンコーダの使い方
body CHANGED
File without changes