Arduino初心者です。
Arduinoにひらがなを送信し、その3バイトのデータをもとにLEDを制御したいです。if文の条件式が間違ってるのだと思いますが、何が間違いかわかりません。どなたかわかる方いれば教えてください。お願いします。
arduino
1char dat[5]; //送信された文字を受け取る配列 2 3void setup() { 4 // put your setup code here, to run once: 5 Serial.begin(9600); 6 pinMode(13,OUTPUT); 7} 8 9void loop() { 10 // put your main code here, to run repeatedly: 11 12 if (Serial.available() >= 3) { // 受信バッファに 3文字以上たまったら 13 for(int i=0; i<3; i++) { // for文で 3回ループし 14 dat[i] = Serial.read(); // 1バイトずつデータを格納 15 Serial.println(dat[i]); 16 } 17 dat[3] = '\0'; // データの最後に文字の終端コードを入れる 18 19 Serial.print("DATA = "); 20 Serial.println(dat); 21 22 //16進数で「あ」表示 23 Serial.println(dat[0],HEX); //FFFFFFE3 24 Serial.println(dat[1],HEX); //FFFFFF81 25 Serial.println(dat[2],HEX); //FFFFFF82 26 27 if(dat[0] == 'FFFFFFE3' && dat[1] == 'FFFFFF81' && dat[2] == 'FFFFFF82'){ 28 Serial.println("LED ON"); 29 digitalWrite(13,HIGH); 30 delay(1000); 31 digitalWrite(13,LOW); 32 delay(400); 33 } 34 } 35 36} 37
無事解決しました。
修正したプログラムは以下です。ありがとうございました。
arduino
1unsigned char dat[5]; //送信された文字を受け取る配列 2 3void setup() { 4 // put your setup code here, to run once: 5 Serial.begin(9600); 6 pinMode(13,OUTPUT); 7 pinMode(12,OUTPUT); 8 pinMode(11,OUTPUT); 9} 10 11void loop() { 12 // put your main code here, to run repeatedly: 13 14 if (Serial.available() >= 3) { // 受信バッファに 3文字以上たまったら 15 for(int i=0; i<3; i++) { // for文で 3回ループし 16 dat[i] = Serial.read(); // 1バイトずつデータを格納 17 //Serial.println(dat); 18 } 19 dat[3] = '\0'; // データの最後に文字の終端コードを入れる 20 21 Serial.print("DATA = "); 22 //Serial.println(dat); 23 24 Serial.println(dat[0],HEX); 25 Serial.println(dat[1],HEX); 26 Serial.println(dat[2],HEX); 27 28 29 // ひらがな「り」を受け取るとLED13番点灯 30 if(dat[0] == 0xE3 && dat[1] == 0x82 && dat[2] == 0x8a){ 31 Serial.println("LED ON"); 32 digitalWrite(13,HIGH); 33 delay(200); 34 digitalWrite(13,LOW); 35 delay(400); 36 } 37 38 // ひらがな「ん」を受け取るとLED12番点灯 39 if(dat[0] == 0xE3 && dat[1] == 0x82 && dat[2] == 0x93){ 40 Serial.println("LED ON"); 41 digitalWrite(12,HIGH); 42 delay(200); 43 digitalWrite(12,LOW); 44 delay(400); 45 } 46 47 // ひらがな「ご」を受け取るとLED11番点灯 48 if(dat[0] == 0xE3 && dat[1] == 0x81 && dat[2] == 0x94){ 49 Serial.println("LED ON"); 50 digitalWrite(11,HIGH); 51 delay(200); 52 digitalWrite(11,LOW); 53 delay(400); 54 } 55 56 57 } 58 59 // 受信バッファをクリア 60 Serial.flush(); 61 62}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/17 12:20
2018/04/17 12:22
2018/04/18 02:24