Iこれが初心者からArduinoとプログラミングへの簡単なリクエストであることを願っています。プログラムがvoidループセクションに入ると、無期限にループすることを理解しました。ただし、最近、別のvoid $$$$$セクションがvoidループのクロージャー(by})に続くスケッチの例を見ました。これを書いているときに、「void Num_Write(int)」がvoidループのクロージャに続く7セグメントディスプレイに関する1つの例を見ています。 「ループ」セクションがまさにそれを行う場合、私が信じるように導かれているように、次のセクションにはどのようにアクセスしますか?
ありがとう、ロブ
コメント
- それを呼び出すことによって。 tutorialspoint.com/cplusplus/cpp_functions.htm
- 'もArduinoリファレンス: arduino.cc/en/Reference/FunctionDeclaration
- 最後に: cplusplus.com/doc/tutorial/functions
回答
void loop()
セクションは関数であり、void setup()
が関数であるのと同じです。 Arduinoプログラムを起動すると、IDEには表示されない別の関数が、setup()
を呼び出してから、loop()
を繰り返し呼び出します。
これまでに見た他の関数、つまりvoid Num_Write(int n)
は、setup()
またはを実行すると、呼び出し元の関数に戻る前に命令が実行されます。また、Num_Write()
が、呼び出し元の関数にコントローラーを返す前に、他の関数を呼び出す可能性もあります。
タイプvoid
は、何も表さないために使用されます(実際にはそれよりも複雑ですが、このレベルの説明では何もしません)。たとえば、他のタイプint
、char
、bool
を返します。このように:
int theMeaningOfLife(void) { return 42; }
これは、int
を返す関数です(
void setup() { int number = theMeaningOfLife(); }
1つの問題があります。関数は、使用する前に宣言する必要があります。これにより、コンパイラは次のようになります。あなたが何を指しているのかを知っています。これを行う最も簡単な方法は、それを呼び出している関数の上に関数を書くことです。 2番目の方法は、関数を使用して関数の上に関数のシグネチャを書き込むことです。つまり、次のようになります。
int theMeaningOfLife(void); void setup() { int number = theMeaningOfLife(); }
最良の方法(ただし、Arduinoでは常に実用的とは限りません) )は、すべての関数宣言をヘッダーファイル(.h)に、コードを.cppファイルに含めることです(ライブラリを見て、意味を確認してください)。
概要
繰り返し呼び出される関数は、loop
関数。関数がvoidを返すからといって、繰り返しループするわけではありません。
コメント
- 次のように書いています。「関数は、使用する前に宣言する必要があります」。実際、Arduino IDEは、コードを前処理ステップで実行します。つまり、自分でコードを実行する必要はありません。コードがIDEの外部でコンパイル可能になるという理由だけで、このルールに固執することをお勧めします。 Makefile を使用します。
- @ EdgarBonet-ありがとう、私はそれを知りませんでした。でも忘れるべきだと思います。そうしないと、'仕事で試してみて、なぜ勝ったのかを理解しようとして髪を抜いてしまいます' tコンパイルします。 🙂