[電子工作の基礎]#1マイコンについてるLEDを点滅 簡単にLチカ!

未分類


この記事は,マイコンについているLEDを点滅させます.
電子工作やマイコンに興味がある人に読んでいただけたらいいと思います.
下のキーワードを見て,興味がる単語があるならぜひ読んでください.

キーワード
マイコン・Arduino・Lチカ・setup関数・loop関数・pinMode関数・delay関数・degitalWrite関数

準備

今回はArduino IDE(エディタ,プログラムをかくソフト)とArduino UNO R3(マイコン)を使っていきたいと思います.

もしArduino IDEをダウンロードしていない人はSoftware | Arduinoからダウンロードしてください.

ダウンロードして開いたら,まずマイコンとパソコンを繋げて下さい.そして,左上の「ツール(Tool)」から「ボード」を選択して,自分の持っているマイコンを選択してください.
Arduino UNO R3だと下の写真のようになります.

次に,同じく「ツール(Tool)」から「ポート」を選択し,存在するポートを選択してください.おそらく1つだけしかないはず.自分は下の写真のようになりました.

これで準備完了です.
今行った作業は「自分の使っているボード(マイコン)を選ぶ」と「どのUSBポートにプログラムを書き込むか選ぶ」です.後者に関しては,どのUSBポートがArduinoかを指定しないと書き込み先が分からず,エラーが起きます.

Lチカ

今回は,Arduino IDEの「スケッチ例」を使って下の写真のような「L」の文字の横にあるLEDを手滅させていきましょう.

Arduino IDEを開いた画面で左上の「ファイル」を選択し,「スケッチ例」にカーソルを合わして,「01.Basic」の「Blink」をクリックします.そうすると,Lチカに必要なコードが書かれているスケッチが開かれます.

スケッチを開いたら,左上の書き込みボタンをクリックすると,マイコンにプログラムが書きこまれ,実行されます.あとは,マイコンのLEDが点滅したら成功です!

コード,プログラムの解説

/*
Blink

Turns an LED on for one second, then off for one second, repeatedly.

Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
the correct LED pin independent of which board is used.
If you want to know what pin the on-board LED is connected to on your Arduino
model, check the Technical Specs of your board at:
https://www.arduino.cc/en/Main/Products

modified 8 May 2014
by Scott Fitzgerald
modified 2 Sep 2016
by Arturo Guadalupi
modified 8 Sep 2016
by Colby Newman

This example code is in the public domain.

https://www.arduino.cc/en/Tutorial/BuiltInExamples/Blink
*/

// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
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
}

コード,プログラムについて解説していきます.

setup関数の中身

一番最初にある「/*」から「*/」まではコメントで,プログラムには関係ないです.
最初の関数であるsetup関数について説明していきます.setup関数は,「一番最初に一回だけ実行される関数」です.主に「初期設定」を行うために使います.
今回setup関数ではpinMode(LED_BUILTIN, OUTPUT);があります.
pinMode関数は「Arduinoのデジタルピンのモード(動作の種類)を設定する」関数です.
今回は,OUTPUTつまり出力に設定しています.他にはINPUT(入力)とINPUT_PULLUPがあります.INPUT_PULLUPはピンに何も接続されていないと不安定になるのを防ぐため,何も接続されてないときはHIGHにしてくれるモードです.
HIGH,LOWは電圧のことです.
また,LED_BUILTINは「Arduinoボートに最初からついている内臓LEDのピン番号を表す定数」です.

つまり,pinMode(LED_BUILTIN, OUTPUT);は
LED_BUILTINをOUTPUT(光らせるよ~)みたいな設定をしているのです.

loop関数の中身

loop関数は,「電源が入ってからずっと繰り返し実行される関数」です.

中身としては,degitalWrite関数とdelay関数があります.

digitalWrite関数とは,「デジタルピンの出力を「HIGH(5V)」または「LOW(0V)」に設定する」関数です.今回のピンはLEDにつながっているので,HIGH>>>LEDをつける,LOW>>>LEDを消すに対応しています.

delay関数は,「指定した時間だけArduinoの処理を停止させる」関数です.
もう少しわかりやすくいうと,「指定した時間が過ぎるまで、Arduinoは次の命令に進まず、今の処理をやり続ける」関数です.時間はmsで1000ms=1秒です.

digitalWrite(LED_BUILTIN, HIGH); // LEDオン
delay(1000); // 1秒待つ
digitalWrite(LED_BUILTIN, LOW); // LEDオフ
delay(1000); // 1秒待つ
//これを繰り返す

まとめるとしたのような感じです.

関数名主な用途書き方(例)特徴・ポイント
setup()初期設定(最初の1回だけ実行)void setup() { ... }電源ONやリセット時に1回だけ実行される
loop()メイン処理(ずっと繰り返す)void loop() { ... }Arduinoの本体動作をここに書く、無限ループ
pinMode()ピンの入出力モードを設定pinMode(13, OUTPUT);INPUT, OUTPUT, INPUT_PULLUP の3種類
digitalWrite()デジタル出力をON/OFFにするdigitalWrite(13, HIGH);ピンを 5V(HIGH) または 0V(LOW) に設定
delay()指定時間だけ処理を停止(待機)delay(1000);単位はミリ秒。処理が完全に止まるので注意(他の処理不可)

コードを改造してみよう

「Blink」を改造して,LEDの点滅周期が徐々に変化するようなプログラムを作成してみましょう!

例えば,以下のようにすると上のような要件を満たすプログラムになります.
自分で考えたい人は見ずに一度自分でやってみてください.

void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
for(int i = 200; i >= 20; i-=10){
digitalWrite(LED_BUILTIN, HIGH);
delay(1);
digitalWrite(LED_BUILTIN, LOW);
delay(1);
}
}

for文を使って0.2秒から0.01秒ずつ点滅を速くしていき,最終的には0.02秒で点滅してループを抜けます.

まとめ:Lチカで学ぶArduinoの基本

今回は、Arduinoに内蔵されたLEDを点滅(Lチカ)させることで、マイコンの基本的な使い方を体験しました。

  • setup()loop() といった基本構造
  • ピンの設定に使う pinMode()
  • LEDのON/OFF制御に使う digitalWrite()
  • 待機時間を指定する delay()

など、Arduinoプログラミングの基礎をひと通り学ぶことができました。

このLチカは、簡単ですがマイコン制御の基本が詰まった大事な第一歩です。
少しコードを変えるだけで、点滅速度を変えたり、ボタンと組み合わせたり、どんどん応用が広がります。

コメント

タイトルとURLをコピーしました