Arduino初心者です。
LEDの点灯消灯をシリアル通信(文字列)でやりたいのですがうまくいきません。
以下がスケッチなのですが、 Serial.println(dat); で目的のon01がdatに入力されているのは確認出来るのですが
if(dat == "on01"){ が動作していないようです。
データ型の問題の様な気がするのですが、あれこれ試しても上手くいきませんでした。
御教授のほどお願い致します。
追記
マルチポストを推奨をしていない旨を知らずに下記のリンクに同じ質問をしてしまいました。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12228794132
まだ問題は解決はしていないのですが関連した質問などを参考にしてやってみます。
Aruduino
1//IOのピン番号 2const int DIN_PIN = 7; 3const int LED_PIN = 6; 4 5//入力された文字を入れる変数 6char dat[32]; // 格納用文字列 7int count = 0; // 文字数のカウンタ 8 9void setup(){ 10 pinMode( LED_PIN, OUTPUT); 11 pinMode( DIN_PIN, INPUT_PULLUP ); 12 Serial.begin(9600); 13} 14void loop(){ 15 //文字列を読み込む 16 Serial.flush(); 17 if (Serial.available()) { 18 dat[count] = Serial.read(); 19 if (count > 30 || dat[count] == '=') { // 文字数が既定の個数を超えた場合、又は終了文字を受信した場合 20 dat[count] = '\0'; // 末尾に終端文字を入れる 21 count = 0; // 文字カウンタをリセット 22 Serial.println(dat); 23 } else { 24 count++; // 文字カウンタに 1 加算 25 } 26 } 27 //出力 28 //読み込んだ文字が「on01」のときシリアルモニタに「ON」をさせ、LEDを点灯させる 29 if(dat == 'on01'){ 30 digitalWrite(LED_PIN, HIGH); 31 //LEDを点灯させた後okを返信 32 Serial.print("ok\n"); 33 Serial.flush(); 34 } 35 36 //読み込んだ文字が「off01」のときシリアルモニタに「OFF」をさせ、LEDを消灯する 37 if(dat == 'off01'){ 38 digitalWrite(LED_PIN, LOW); 39 //LEDを消灯させた後okを返信 40 Serial.print("ok\n"); 41 Serial.flush(); 42 } 43}
ソースコードはマークダウン記法を使って見やすくしてください。
https://teratail.com/help/question-tips#questionTips3-5-1
https://teratail.com/questions/238564
あたりを参考にしてソースコードを適切に表示するようにしてください。
dodox86 様
ご指摘頂きありがとうございます。
Arduino側に送られてくるデータは、"on01=", "off01="のような、コマンド文字列の末端が'='であると言うことでしょうか。
thkana 様
ご指摘頂きありがとうございます。
内容理解しました。
無作法ですみません。
ルールに「質問内容にマルチポストをする理由を書き、他のサイトの投稿へのリンクを貼ってください。また、解決した際には必ずteratail及びすべての投稿に解決した旨と、どのように解決したかを記載してください。」と書いてあるのは理解したのですね。
理解したのなら実行して下さい。あちらで解決したようですし。(知恵袋で解決したので知恵袋に追記する必要はないでしょう)
thkana 様
何度もすみません。
回答3件
あなたの回答
tips
プレビュー