LEDをArduinoから自在に制御する
先程のプログラムを少し変えてみましょう。50ミリ秒(0.05秒)点灯して、1000ミリ秒(1秒)消灯を繰り返します。玄関前とか車の中で光らせるだけで防犯効果がありそうではないですか。
pinMode
3行目のpinMode(2,OUTPUT);というところに注目してください。これは2番pinをアウトプットモード(出力モード)で使いますよ。という宣言をしています。
digitalWrite
8行目のdigitalWrite(2,HIGH);は2番pinをHIGHにつまりONにする命令です。消すときはdigitalWrite(2,LOW);で消えてくれます。
delay
9行目のdelay(50);は今の状態のまま50ミリ秒まつということです。
void setup() { // setup内は一回だけ実行します pinMode(2,OUTPUT); } void loop() { // loop内は繰り返し実行します digitalWrite(2,HIGH); delay(50); digitalWrite(2,LOW); delay(1000); }
プログラマは面倒なことがキライ
次はArduinoの3pinで光らせてみましょう。
配線はArduino側の 2につながった線を3に差し替えるだけです。プログラムは2pinの部分を3pinに書き換えてあげるのです。このプログラムは非常に短いのでいいのですけど、もっと長いプログラムになるとすべて書き換えるのは面倒ですね。
void setup() { // setup内は一回だけ実行します pinMode(3,OUTPUT); } void loop() { // loop内は繰り返し実行します digitalWrite(3,HIGH); delay(50); digitalWrite(3,LOW); delay(1000); }
const int
const int LED=2; void setup() { // setup内は一回だけ実行します pinMode(LED,OUTPUT); } void loop() { // loop内は繰り返し実行します digitalWrite(LED,HIGH); delay(50); digitalWrite(LED,LOW); delay(1000); }
こんなふうにしておくと便利です。一行目のconst intでLEDという定数に2pinを割り当てます。
定数で一括変換
const int LED=3; void setup() { // setup内は一回だけ実行します pinMode(LED,OUTPUT); } void loop() { // loop内は繰り返し実行します digitalWrite(LED,HIGH); delay(50); digitalWrite(LED,LOW); delay(1000); }
書き換えるときは一行目のconst int LED=3と書き換えるだけでいいのです。LEDという変数には3pinが定義されているので、loop内のLED関連の処理はすべて3pinになるのです。
LEDメトロノーム
こんな感じでプログラムしてあげると、LEDメトロノームになります。7行目から23行目まで実行したらまた7行目に戻りまた実行します。Arduinoはこのように人間なら飽きてしまうような作業を文句を言わず延々と続けてくれるのです。
こんな長いプログラムでも一行目だけ変更してあげればOKですね。
const int LED=2; void setup() { // setup内は一回だけ実行します pinMode(3,OUTPUT); } void loop() { // loop内は繰り返し実行します digitalWrite(LED,HIGH); delay(300); digitalWrite(LED,LOW); delay(200); digitalWrite(LED,HIGH); delay(100); digitalWrite(LED,LOW); delay(400); digitalWrite(LED,HIGH); delay(100); digitalWrite(LED,LOW); delay(400); digitalWrite(LED,HIGH); delay(100); digitalWrite(LED,LOW); delay(400); }