質問編集履歴

3

修正プログラムを載せます。

2018/04/18 01:50

投稿

Hiroyadesu
Hiroyadesu

スコア14

test CHANGED
File without changes
test CHANGED
@@ -83,3 +83,139 @@
83
83
 
84
84
 
85
85
  ```
86
+
87
+
88
+
89
+ 無事解決しました。
90
+
91
+ 修正したプログラムは以下です。ありがとうございました。
92
+
93
+
94
+
95
+ ```arduino
96
+
97
+ unsigned char dat[5]; //送信された文字を受け取る配列
98
+
99
+
100
+
101
+ void setup() {
102
+
103
+ // put your setup code here, to run once:
104
+
105
+ Serial.begin(9600);
106
+
107
+ pinMode(13,OUTPUT);
108
+
109
+ pinMode(12,OUTPUT);
110
+
111
+ pinMode(11,OUTPUT);
112
+
113
+ }
114
+
115
+
116
+
117
+ void loop() {
118
+
119
+ // put your main code here, to run repeatedly:
120
+
121
+
122
+
123
+ if (Serial.available() >= 3) { // 受信バッファに 3文字以上たまったら
124
+
125
+ for(int i=0; i<3; i++) { // for文で 3回ループし
126
+
127
+ dat[i] = Serial.read(); // 1バイトずつデータを格納
128
+
129
+ //Serial.println(dat);
130
+
131
+ }
132
+
133
+ dat[3] = '\0'; // データの最後に文字の終端コードを入れる
134
+
135
+
136
+
137
+ Serial.print("DATA = ");
138
+
139
+ //Serial.println(dat);
140
+
141
+
142
+
143
+ Serial.println(dat[0],HEX);
144
+
145
+ Serial.println(dat[1],HEX);
146
+
147
+ Serial.println(dat[2],HEX);
148
+
149
+
150
+
151
+
152
+
153
+ // ひらがな「り」を受け取るとLED13番点灯
154
+
155
+ if(dat[0] == 0xE3 && dat[1] == 0x82 && dat[2] == 0x8a){
156
+
157
+ Serial.println("LED ON");
158
+
159
+ digitalWrite(13,HIGH);
160
+
161
+ delay(200);
162
+
163
+ digitalWrite(13,LOW);
164
+
165
+ delay(400);
166
+
167
+ }
168
+
169
+
170
+
171
+ // ひらがな「ん」を受け取るとLED12番点灯
172
+
173
+ if(dat[0] == 0xE3 && dat[1] == 0x82 && dat[2] == 0x93){
174
+
175
+ Serial.println("LED ON");
176
+
177
+ digitalWrite(12,HIGH);
178
+
179
+ delay(200);
180
+
181
+ digitalWrite(12,LOW);
182
+
183
+ delay(400);
184
+
185
+ }
186
+
187
+
188
+
189
+ // ひらがな「ご」を受け取るとLED11番点灯
190
+
191
+ if(dat[0] == 0xE3 && dat[1] == 0x81 && dat[2] == 0x94){
192
+
193
+ Serial.println("LED ON");
194
+
195
+ digitalWrite(11,HIGH);
196
+
197
+ delay(200);
198
+
199
+ digitalWrite(11,LOW);
200
+
201
+ delay(400);
202
+
203
+ }
204
+
205
+
206
+
207
+
208
+
209
+ }
210
+
211
+
212
+
213
+ // 受信バッファをクリア
214
+
215
+ Serial.flush();
216
+
217
+
218
+
219
+ }
220
+
221
+ ```

2

説明文に若干の変更を行った

2018/04/18 01:50

投稿

Hiroyadesu
Hiroyadesu

スコア14

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  Arduino初心者です。
2
2
 
3
- Arduinoにひらがなを送信し、その3バイトのデータをもとにLEDを制御したいです。if文が間違ってるのだと思いますが、何が間違いかわかりません。どなたかわかる方いれば教えてください。お願いします。
3
+ Arduinoにひらがなを送信し、その3バイトのデータをもとにLEDを制御したいです。if文の条件式が間違ってるのだと思いますが、何が間違いかわかりません。どなたかわかる方いれば教えてください。お願いします。
4
4
 
5
5
 
6
6
 

1

プログラムにコメントを追加しました。

2018/04/17 08:55

投稿

Hiroyadesu
Hiroyadesu

スコア14

test CHANGED
@@ -1 +1 @@
1
- Arduinoにひらがなを送信し、受け取った値(UTF-8)を出力したいです。
1
+ Arduinoにひらがな、例えば「あ」を送信し、受け取った値(UTF-8)からLED点灯させたいです。
test CHANGED
@@ -1,6 +1,6 @@
1
1
  Arduino初心者です。
2
2
 
3
- Arduinoにひらがなを送信し、その3バイトのデータをそれぞれシリアルモニタ出力したいですが、どなたかわかる方いらっゃいせんか?
3
+ Arduinoにひらがなを送信し、その3バイトのデータをもとLEDを制御したいです。if文間違ってるのだと思いますが何が間違いかわかりません。どなたかわかる方いれば教えてください。お願いします。
4
4
 
5
5
 
6
6
 
@@ -48,13 +48,31 @@
48
48
 
49
49
  Serial.println(dat);
50
50
 
51
- Serial.println(dat[0]);
52
51
 
53
- Serial.println(dat[1]);
54
52
 
53
+ //16進数で「あ」表示
54
+
55
+ Serial.println(dat[0],HEX); //FFFFFFE3
56
+
57
+ Serial.println(dat[1],HEX); //FFFFFF81
58
+
55
- Serial.println(dat[2]);
59
+ Serial.println(dat[2],HEX); //FFFFFF82
56
60
 
57
61
 
62
+
63
+ if(dat[0] == 'FFFFFFE3' && dat[1] == 'FFFFFF81' && dat[2] == 'FFFFFF82'){
64
+
65
+ Serial.println("LED ON");
66
+
67
+ digitalWrite(13,HIGH);
68
+
69
+ delay(1000);
70
+
71
+ digitalWrite(13,LOW);
72
+
73
+ delay(400);
74
+
75
+ }
58
76
 
59
77
  }
60
78