ArduinoにおけるHelloWorld的な存在である、LEDが点滅するプログラム(スケッチ)を設計した上で書いてみる。
リポジトリ:demo-blink https://github.com/pixtc/demo-blink
回路
電源(5V)→ 抵抗(270Ω)→ ダイオード(赤色・1.8V:12mA)→ 13番ピン
の順に接続する。
プログラム
定数を定義(define.h)
プログラムの可読性を高めるため、定数を定義する。
# define LED 13 // LEDピン番号
# define LED_ON HIGH // LED点灯
# define LED_OFF LOW // LED消灯
LEDについて用意する関数とグローバル変数
LEDについて、下の表に示される関数を定義する。
| 関数名 | 戻り値型 | 引数 | 説明 |
|---|---|---|---|
| InitLed | void | void | LEDを初期化する |
| TickLed | void | void | LEDを駆動させる |
また、下の表に示されるグローバル変数を定義する。
| 変数名 | 変数型 | キーワード | 説明 |
|---|---|---|---|
| NowLed | boolean | static | LEDの点灯・消灯の状態を格納する |
LEDを初期化する(InitLed)
# include "define.h"
static boolean NowLed; // LEDの点灯・消灯
/*
* LEDを初期化する
*/
void InitLed(void){
NowLed = LED_OFF;
pinMode(LED, OUTPUT); // デジタルピンを出力に設定する
digitalWrite(LED, NowLed); // LEDを消灯する
}
LEDを駆動させる(TickLed)
# include "define.h"
static boolean NowLed; // LEDの点灯・消灯
/*
* LEDを駆動させる
*/
void TickLed(void){
// LEDが点灯中
if(NowLed) {
NowLed = LED_OFF;
}
// LEDが消灯中
else {
NowLed = LED_ON;
}
digitalWrite(LED, NowLed); // LEDを点灯もしくは消灯する
}
メインのスケッチ
# include "define.h"
void setup(){
InitLed(); // LEDを初期化する
}
void loop(){
TickLed(); // LEDを駆動する
delay(500); // 500ms待機する
}
動作を確認
コンパイルして動作を確認すると、LEDが500msごとに点滅と消灯を繰り返す。