すでに回答が出ているようですが、過去の質問を見て気になったので補足します。
先に断っておくと、私はArduinoを触ったことも書いたこともありません。
回答の検証はしていませんし、正確ではないかもしれません。
エラーメッセージにあるように、変数degree
を利用するには、その前に宣言が必要です。
これはdegree
に限った話ではありません。
「この変数をこれから利用しますよ」とコンピュータに対して宣言していると考えればいいと思います。
例えば、関数setup()内のdegree
より上で利用されている変数a
、b
、c
、A
などは宣言されているので代入などができます。
しかし、degree
に関しては宣言されていないので、値を代入しようとするとエラーを吐いてしまいます。
void setup() {
double a, b, c, A; // a, b, c, Aの宣言
a = 10; // aは宣言されているので利用できる
b = 20; // bは宣言されているので利用できる
c = 30; // cは宣言されているので利用できる
A = acos((b*b+c*c-a*a)/2*b*c); // Aは宣言されているので利用できる
degree = A*180.0/PI; // degreeは宣言されていないので利用できない
}
コンピュータに対して「a
とb
とc
とA
を使うからね」とは伝えましたが、degree
を使うという話は伝えていなかったので、急に利用しようとするとコンピュータが困惑してしまいます。
この問題は事前にdegree
を利用することを伝えてやれば解決します。(つまり変数degree
を宣言してあげればいいんです!)
具体例としては以下のように宣言できます。
void setup() {
double a, b, c, A; // a, b, c, Aの宣言
a = 10; // aは宣言されているので利用できる
b = 20; // bは宣言されているので利用できる
c = 30; // cは宣言されているので利用できる
A = acos((b*b+c*c-a*a)/2*b*c); // Aは宣言されているので利用できる
double degree; // degreeの宣言
degree = A*180.0/PI; // degreeは宣言されている利用できる
}
また、Arduino 日本語リファレンスには以下のように書いてありました。
Arduino言語はC/C++をベースにしており、C言語のすべての構造と、いくつかのC++の機能をサポートしています。また、AVR Libcにリンクされていて、その関数を利用できます。
なので、変数の宣言と代入を同時におこなうことができると思います。
具体的には以下のような書き方ができると思います。
void setup() {
double a, b, c, A; // a, b, c, Aの宣言
a = 10; // aは宣言されているので利用できる
b = 20; // bは宣言されているので利用できる
c = 30; // cは宣言されているので利用できる
A = acos((b*b+c*c-a*a)/2*b*c); // Aは宣言されているので利用できる
double degree = A*180.0/PI; // degreeの宣言と代入を同時におこなう
}
Arduinoのことはよく分かりませんが、変数の宣言と同時に値を代入することは一般的によくおこなわれますので、憶えておくといいかもしれません。
余計なお世話かもしれませんが、以下のことを実践すべきだと思います。
メッセージの内容がよくわからなければ、検索エンジンにそのままコピペすると解決策が書いてあることがよくあります。
スコープなどの概念についても勉強したほうがいいと思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。