注目キーワード

【Arduino】プログラムの基本(LEDを点滅させる)

世の中にはいろいろなプログラミング言語がありますよね。

iphoneのアプリやWindowsのアプリなどを作るのも楽しいですが、あくまでも画面上で動くものなので、ちょっと動いている実感が薄いと思われている方も多いのではないでしょうか。

そんな中で実際にLEDやモーターなどのハードを制御することができるのが「Arduino」です。

ハード制御ができることに加え、小さいコンピュータ上で動作するため、IoTやセンシング、ロボットなどへの応用にも使用できる非常に面白い言語です。
電子工作の世界を広げてくれますよ!

ぜひ挑戦してみてください!

すけろく
プログラミング言語というと使うためにいろいろ覚える必要が。
そう簡単にいくか、疑問でござる。
げんろく
承知した!拙者がArduinoについて説明するでござる!
何事もやってみなければ身につかぬでござるよ!

今回の記事では、開発環境であるArduino IDEにおいて、プログラムを記述する際に押さえて置きたいポイントをまとめました。

・Arduino IDEを使ってLEDを光らせてみる。(Lチカ)

プログラムの基本構成

まずは第一歩。Arduino IDEを起動しましょう。

そして何も考えずに「ファイル」-「新規ファイル」を選択します。
すると、新しいウィンドウが表示され、プログラムが初めから記載されています。

Arduino Code

void setup() {
// put your setup code here, to run once:

}

void loop() {
// put your main code here, to run repeatedly:

}

ぱっと見ると2つのグループに分けられていることがわかります。
これが処理の基本部分です。

void setup() プログラムが初めに読み込まれる際に実行される部分。つまり、コンピュータを起動すると1度だけ読み込まれます。(主に初期化や、動作前提となる設定を施す部分です)
void loop()  Setup()が実行された後に繰り返し実行される部分。
(実際に処理を記述します。)

ハードとの通信に使用するGPIOとは?

Arduino IDEを使う際に必ず出てくるもの、それが「GPIO」です。

 

GPIOは「General Purpose Input/Output」で、汎用のI/Oポートです。
では、何に使うのでしょうか。
Arduinoに対応しているマイクロコンピュータは、計算などの処理を行うCPU、処理したものを記憶するメモリに分けられます。
しかし、CPUとメモリだけでは、あくまで処理や記憶の能力があるだけで、コンピュータ自身が指示し、結果を出力することはできません。パソコンは、パソコンに指示を与える入力装置(キーボードやマウスなど)によって指示を与えます。掃除機や、炊飯器などのマイクロコンピュータが使用されている電子機器の場合は、スイッチが入力装置です。入力装置によって指示を与えると、CPUで処理が行われ、メモリに保存されます。そこで活用されるのがGPIOです。GPIOを使用することによって、入力装置からのデジタル信号(スイッチが入った、切られたなど)がマイクロコンピュータに送られ、処理が行われます。
出力の場合も同様です。LEDなどの出力装置へのデジタル信号が、GPIOを使用することによって届き、処理が実行されます。
つまり、Arduinoに対応しているマイクロコンピュータでプログラムを書く場合は、GPIOに対してInput/Outputを設定し、いつ、どのような信号を受/送信するのかを記述します。
先述した2つのグループにそれぞれ次のように記述するイメージとなります。
void setup() マイクロコンピュータが持つどのGPIOをInput/Outputに設定するかなどを記述します。
void loop()  GPIOに対してデジタル信号をOn/Offするなどを記述します。

プログラムを記述してみる

10番のGPIOを使ってLEDを明滅させるプログラムです。
LEDに対する信号をON(HIGH)→待機(1秒)→OFF(LOW)→待機(1秒)します。
赤字の部分を追記しました。

void setup() {
   // initialize digital pin LED_BUILTIN as an output.
   pinMode(10, OUTPUT);   
}

// the loop function runs over and over again forever
void loop() {
   digitalWrite(10, HIGH); // turn the LED on (HIGH is the voltage level)
   delay(1000); // wait for a second
   digitalWrite(10, LOW); // turn the LED off by making the voltage LOW
   delay(1000); // wait for a second
}

記載した各プログラムの内容は次の通りです。

pinMode(GPIO番号, 設定) 指定したGPIOに対して(OUTPUT or INPUT)を設定します。
digitalWrite(GPIO番号、設定) 指定したGPIOに対して信号のON(HIGH)またはOFF(LOW)を設定します。
delay(マイクロ秒) 指定したマイクロ秒だけ処理を待機します。

 

LEDを光らせるための回路を作る

ここで、普通はLEDを光らせるために、「マイクロコンピュータを買って、ブレッドボード、ジャンパ線、LED、抵抗などを購入して、電子回路を組みましょう!」となりますが、とっかかりとしてはハードル高いですよね。

そこで今回はArduino対応マイクロコンピュータにあらかじめLEDがついている製品を使います。
ご紹介するマイクロコンピュータを購入するだけで、プログラムの確認ができます。

M5StickC Plus

created by Rinker
M5Stack
¥4,790 (2024/07/27 10:19:06時点 Amazon調べ-詳細)
ディスプレイ付きのマイコンです。非常に使い勝手がいいサイズと機能で以下のメリットがあります。
  • 基板むき出しでなくケースいり。
  • ディスプレイ搭載のため単体で使える。
    (80×160)
  • Arduinoでの開発も可能
    (開発例も多い)
  • WifiとBluetoothが標準搭載済み
  • 非常に小さい
    (48×25×14 mm)
  • 6軸センサーも搭載されている

パソコンとの接続も専用装置などが必要なくUSBーCケーブルで接続するだけでプログラミングが開始できるので、IoTや組み込みのプログラミング初級機として、おすすめです。

※私もこれでデビューしました。。

 

プログラムを書き込むための準備をする

Arduino IDEでM5StickCにプログラムを書き込むための準備は、次の記事で紹介しています。

関連記事

ミニケース「KARAKURI -HAKO-」のコンピュータをプログラミングする環境を準備します。 今回使用するコンピュータ「M5Stick C」は「Arduino IDE」で開発が可能です。「Arduino IDE」はC言語風の「Ardui[…]

 

プログラムを書き込んでLEDを光らせる

M5StickCをパソコンに接続してプログラムを書き込みます。
書き込みが終了するとM5StickCが再起動し、LEDが点滅します。

手順は以下の順番で行います。


パソコンとM5StickCをUSBケーブルで接続します。
※M5StickCに付属しているUSBケーブルを使うとパソコンのUSB-Aポートに接続することができます。パソコン側にUSB-Cポートしかない場合は、USB-C対応のケーブルが必要です。

Arduino IDEの「ツール」を選択し、[ボード:”M5Stick-C”]が選択され、M5StickCが接続しているCOMポートが指定されていることを確認します。
※ボードや、シリアルポートの指定は前項の「プログラムを書き込むたための準備をする」で記載の記事をご覧ください。
3
Arduino IDEの「スケッチ」ー「マイコンボードに書き込む」を選択します。
※Arduino IDEの画面下部にあるログ表示部にコンパイル、検証、書き込みの順にステータスが表示されますので、書き込みが完了するのを待ちます。
  4
書き込みが終わったら、M5StickCのLED部分を見てください。
点滅していれば成功です!
5
M5StickCを終了させる場合は、USBケーブルを抜けば停止します。

 

どうですか!簡単でしたよね。
これで組み込み制御プログラムのとっかかりを見事に掴みました!

あとはいろいろなセンサー、動力部品、電源などを組み合わせて行くことでプログラムで制御できる世界が広がっていきます!

本サイトでは、引き続きArduino IDEでいろいろなものを制御する方法について記事にしています。また、複数のセンサー、動力部品などを組み合わせた作品と作成時の考え方も公開していますので、ぜひご覧ください。

これからはじめる方にお勧めの参考図書はこちら!

created by Rinker
¥3,089 (2024/07/27 16:45:58時点 Amazon調べ-詳細)
created by Rinker
¥2,310 (2024/07/27 12:49:53時点 Amazon調べ-詳細)
created by Rinker
技術評論社
¥3,278 (2024/07/27 16:45:59時点 Amazon調べ-詳細)
created by Rinker
¥2,420 (2024/07/27 16:46:01時点 Amazon調べ-詳細)