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

質問編集履歴

3

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

2018/04/18 01:50

投稿

Hiroyadesu
Hiroyadesu

スコア14

title CHANGED
File without changes
body CHANGED
@@ -40,4 +40,72 @@
40
40
 
41
41
  }
42
42
 
43
+ ```
44
+
45
+ 無事解決しました。
46
+ 修正したプログラムは以下です。ありがとうございました。
47
+
48
+ ```arduino
49
+ unsigned char dat[5]; //送信された文字を受け取る配列
50
+
51
+ void setup() {
52
+ // put your setup code here, to run once:
53
+ Serial.begin(9600);
54
+ pinMode(13,OUTPUT);
55
+ pinMode(12,OUTPUT);
56
+ pinMode(11,OUTPUT);
57
+ }
58
+
59
+ void loop() {
60
+ // put your main code here, to run repeatedly:
61
+
62
+ if (Serial.available() >= 3) { // 受信バッファに 3文字以上たまったら
63
+ for(int i=0; i<3; i++) { // for文で 3回ループし
64
+ dat[i] = Serial.read(); // 1バイトずつデータを格納
65
+ //Serial.println(dat);
66
+ }
67
+ dat[3] = '\0'; // データの最後に文字の終端コードを入れる
68
+
69
+ Serial.print("DATA = ");
70
+ //Serial.println(dat);
71
+
72
+ Serial.println(dat[0],HEX);
73
+ Serial.println(dat[1],HEX);
74
+ Serial.println(dat[2],HEX);
75
+
76
+
77
+ // ひらがな「り」を受け取るとLED13番点灯
78
+ if(dat[0] == 0xE3 && dat[1] == 0x82 && dat[2] == 0x8a){
79
+ Serial.println("LED ON");
80
+ digitalWrite(13,HIGH);
81
+ delay(200);
82
+ digitalWrite(13,LOW);
83
+ delay(400);
84
+ }
85
+
86
+ // ひらがな「ん」を受け取るとLED12番点灯
87
+ if(dat[0] == 0xE3 && dat[1] == 0x82 && dat[2] == 0x93){
88
+ Serial.println("LED ON");
89
+ digitalWrite(12,HIGH);
90
+ delay(200);
91
+ digitalWrite(12,LOW);
92
+ delay(400);
93
+ }
94
+
95
+ // ひらがな「ご」を受け取るとLED11番点灯
96
+ if(dat[0] == 0xE3 && dat[1] == 0x81 && dat[2] == 0x94){
97
+ Serial.println("LED ON");
98
+ digitalWrite(11,HIGH);
99
+ delay(200);
100
+ digitalWrite(11,LOW);
101
+ delay(400);
102
+ }
103
+
104
+
105
+ }
106
+
107
+ // 受信バッファをクリア
108
+ Serial.flush();
109
+
110
+ }
43
111
  ```

2

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

2018/04/18 01:50

投稿

Hiroyadesu
Hiroyadesu

スコア14

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

1

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

2018/04/17 08:55

投稿

Hiroyadesu
Hiroyadesu

スコア14

title CHANGED
@@ -1,1 +1,1 @@
1
- Arduinoにひらがなを送信し、受け取った値(UTF-8)を出力したいです。
1
+ Arduinoにひらがな、例えば「あ」を送信し、受け取った値(UTF-8)からLED点灯させたいです。
body CHANGED
@@ -1,5 +1,5 @@
1
1
  Arduino初心者です。
2
- Arduinoにひらがなを送信し、その3バイトのデータをそれぞれシリアルモニタ出力したいですが、どなたかわかる方いらっしゃいませんか?
2
+ Arduinoにひらがなを送信し、その3バイトのデータをもとLEDを制御したいです。if文間違ってるのだと思いますが何が間違いかわかりません。どなたかわかる方いれば教えてくださ。お願いしす。
3
3
 
4
4
 
5
5
  ```arduino
@@ -23,10 +23,19 @@
23
23
 
24
24
  Serial.print("DATA = ");
25
25
  Serial.println(dat);
26
+
27
+ //16進数で「あ」表示
26
- Serial.println(dat[0]);
28
+ Serial.println(dat[0],HEX); //FFFFFFE3
27
- Serial.println(dat[1]);
29
+ Serial.println(dat[1],HEX); //FFFFFF81
28
- Serial.println(dat[2]);
30
+ Serial.println(dat[2],HEX); //FFFFFF82
29
31
 
32
+ if(dat[0] == 'FFFFFFE3' && dat[1] == 'FFFFFF81' && dat[2] == 'FFFFFF82'){
33
+ Serial.println("LED ON");
34
+ digitalWrite(13,HIGH);
35
+ delay(1000);
36
+ digitalWrite(13,LOW);
37
+ delay(400);
38
+ }
30
39
  }
31
40
 
32
41
  }