【Arduino#2】void setup()とvoid loop()
前回【Arduino#1】Introduction - Python初心者のやってみた集,兼備忘録において,Blinkというスケッチを用いた。今回はスケッチの書き方について,Blinkを例にまとめる。
1. void setup()とvoid loop()
スケッチはvoid setup()とvoid loop()で構成されている。書き方はC言語/C++を参考にすればよい。
大まかには,
- void setup():スケッチが実行された時に1度だけ実行される指令を書く
- void loop() :繰り返し実行される指令を書く
という違いがある。
上記を踏まえてBlinkのスケッチを見てみよう。
2. Blinkスケッチ
Arduino - Blinkに公開されているBlinkについてみる。
以下が,そのスケッチ(一部抜粋)である。
void setup() { // initialize digital pin LED_BUILTIN as an output. pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second }
上記では,
- void setup()での指令を「13番pinを出力pinと設定」
- void loop()での指令を「デジタルの13番pinにHIGHを出力(13番pinを5Vとする)」→「1000ms (1s)待つ」→「デジタルの13番pinにLOWを出力(13番pinを0Vとする)」→「1000ms (1s)待つ」→…(繰り返し)
とするスケッチになっている。
ここで,各々の関数についてまとめる。基本的にはArduino Referenceで説明されている。
pinMode(LED_BUILTIN, OUTPUT); //pinMode(pin番号, OUTPUT / INPUT / INPUT_PULLUP); //戻り値:なし
pinの動作を入力(INPUT, INPUT_PULLUP)か出力(OUTPUT)に設定する関数
ここで,LED_BUILTINはArduino言語の特殊な定数である(参考:Arduino Reference)。
ほとんどのボードでは13番pinを指定していると考えてよいみたいだ。
また,入力には2種類あるが,慣れるまではINPUTを用いる予定。
INPUT:普通の入力
INPUT_PULLUP:マイコン内部のプルアップ抵抗を利用する(回路簡素化できる)
digitalWrite(LED_BUILTIN, HIGH); digitalWrite(LED_BUILTIN, LOW); //digitalWrite(pin番号, HIGH / LOW); //戻り値:なし
指定したpinにHIGHかLOWを設定する関数
基本的には,HIGH=5V,LOW=0Vだが,3.3VのボードではHIGH=3.3Vと設定される。
delay(1000); //delay(時間[単位はms]); //戻り値:なし
指定した時間だけプログラムを止める関数
ここで,設定する時間はunsigned long型である。