Arduinoのloop()の外
卒研テーマにArduino+Ethernetシールドで何か作れないかと、個人的&指導的に Arduinoの中身を確認中。
Arduinoって、setup()とloop()を書けば動き出すんだけど、 Ethernetシールドのサンプルプログラムで、setup()の中に 様々な処理が書いてある。確認する前は、main()って、以下のような物だと思ってた。
int main() { ArduinoのCPUの違いに応じたinit() ; init() ; ArduinoのCPUの違いに応じたsetup() ; setup() ; for(;;) { 周辺IO関連関数に伴なう処理() ; loop() ; } return 0 ; }
みたいなもんだと思ってた。だから setup() の中身に、何でも処理を書くと、 IOに絡む関数で動かなくなるものが出てくるだろう…と思っていたが、 /PATH/java/hardware/core/arduino/main.cxx を見ると、 順次必要な処理が並んでいるだけ。
int main( void ) { init() ; setup() ; for(;;) loop() ; return 0 ; }
これなら、IO系のシールドのライブラリ書く人は大変かもしれんが、 訳の分からない処理の制約はないな…