Arduino入門:変数の修飾子

ArduinoのSketch(スケッチ)では、変数に修飾子をつけて変数を宣言する事ができます。

修飾子をつけて変数を宣言すると、そのキーワードに応じた性質を変数が持つ事になります。

static修飾子

関数内でstaticを付けて宣言するとスタティック変数になります。通常のローカル変数は、関数が呼ばれる度に生成と破棄が行われますが、スタティック変数は継続的で、関数が初めて呼ばれたときに1度だけ生成され、関数が繰り返し呼ばれても、ずっと値が保持されます。

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:Static” by Arduino Team is licensed under CC BY-SA 3.0

上記の例では、31行目の、
static int place;
でstatic修飾子をつけて、変数placeを宣言しています。これにより場所を表す変数placeの値を継続的なものにしています。

volatile修飾子

volatile修飾子を型宣言の前に付けて宣言すると、変数をレジスタではなくRAMからロードするよう、コンパイラに指示する事ができます。この様な指示が必要になるのは、特定条件では、レジスタに記憶された変数の値は不確かになるからです。具体的には、変数がコントロールの及ばない別の場所(たとえば並行して動作するコード)で変更される可能性があるときです。Arduinoの場合、割り込みサービスルーチンと呼ばれる、割り込みに関連したコードが、これに該当します。

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:volatile keyword” by Arduino Team is licensed under CC BY-SA 3.0

上の例では、4行目で、
volatile int state = LOW;
とvolatile修飾子付きで変数宣言しています。これで、割り込み発生時とメインループの双方から、安全にstateにアクセスする事が出来ます。

const修飾子

const修飾子をつけて変数を宣言すると、その変数は読み取りのみ可で実質的な定数になります。値は変更できなくなり、値を代入しようとすると、コンパイルエラーが発生します。

Creative Commons Attribution-ShareAlike 3.0 License (CC BY-SA 3.0)
Arduino Reference:const keyword” by Arduino Team is licensed under CC BY-SA 3.0

上の例では、1行目の
const float pi = 3.14;
で、piをconst付で宣言して使用していますが、8行目で値を代入しようとしていますので、コンパイルは通りません。

まとめ

必要に応じて修飾子をつけた変数宣言を行うと、効率および安全性を高めたプログラミングが可能になります。修飾子には上記以外にもPROBMEM等がありますが、別の機会に説明したいと思います。

→その他のArduino関連情報

Sponsored Link