arduinoで以下のようなプログラムを書きました。
arduino
1int val = 0; 2long vt,temp = 0; 3void setup() { 4 // put your setup code here, to run once: 5 Serial.begin(9600); 6} 7 8void loop() { 9 // put your main code here, to run repeatedly: 10 val = analogRead(0); 11 vt = map(val,0,1023,0,5000); 12 temp = map(vt,300,1600,-30,100); 13 if (Serial.available() > 0) { 14 Serial.println(temp); 15 } 16 delay(100); //ここです 17}
上のようにdelay(100)を入れたいのですが、そうすると“ボードArduino/Genuino Unoに対するコンパイル時にエラーが発生しました。”というエラーメッセージがコンパイル時点で出ます。
delay(100)を入れなかったらエラーは出ないので、これが問題だと思います。
解決法は何かございませんでしょうか。
初心者です。
よろしくお願いします!
エラーが出るならエラーメッセージをそのまま提示しましょう
すみません!エラーメッセージはこちらです↓
exit status 1
ボードArduino/Genuino Unoに対するコンパイル時にエラーが発生しました。
コンパイル環境はなにを使ってますか?
ArduinoIDEですが、こちらでは正常にコンパイルできますね
Arduino IDEです
ArdionoIDEなら、コンパイルエラーのときに、「エラーメッセージをコピーする」ボタンが出てくるのでそれ押して、それをそのまま提示しましょう
エラーメッセージは省略、翻訳せずにそのまま提示してください
> exit status 1
> ボードArduino/Genuino Unoに対するコンパイル時にエラーが発生しました。
ってのは、確かにエラーメッセージの一部ではあるのですがレポートの最後で「以上、エラーがありました。報告終わり」と言っている部分だけで、それ以前にエラーメッセージの内容詳細があるのです。その辺ArduinoIDEが見やすく作っているとも言い難いので、迷うのも仕方ないですけれど。(それが故のエラーコピーボタンかな)
それと。別件失礼。
if (Serial.available() > 0) {
Serial.println(temp);
}
「受信バッファに文字があったら(通信相手から送られた文字があったら)tempを送信する」、というのは、例えば要求するまで表示させないためにそうしているのですか?
ありがとうございます。
"Serial.available()>0"をif文の条件の中に入れているのはthkanaさんのおっしゃられている通りの理由です。
あと、エラーメッセージを取ろうともう一度コンパイルしなおした所、エラーが出ずに上手くいってしまいました・・・
時間を置けば直るという物なのでしょうか?
> 時間を置けば直るという物なのでしょうか?
そんなことはないです。
最初のときは、なにかスカしていたんでしょうね
ということで、自己回答してベストアンサー付けときましょう
回答1件
あなたの回答
tips
プレビュー