こんにちはー、ニアです。
Arduinoを使ったプログラミングに興味があり、先日Arduino UNOを購入してきました。
今回は、Arduinoでのプログラミングに必要な環境構築と、いくつかプログラミングをしていきます。
1. 購入したもの
- Arduino UNO R3
- Arduino用クリアケース
- USBケーブル(Type-A ⇔ Type-B)
- Elecrow Starter Kit for Arduino
Arduinoのボードはいくつか種類がありますが、今回はオーソドックスなUNOにしました。
2. Arduino IDEのインストール
Arduinoで動かすためのプログラムの開発環境として、Arduino IDEをインストールします。
Arduino IDEの公式サイト(https://www.arduino.cc/en/software)にアクセスします。
Windowsへインストールする場合、「Windows Win 10 and newer, 64 bits」を選択します。
Support the Arduino IDEの画面が表示されたら、「JUST DOWNLOAD」を選択し、インストーラーをダウンロードします。(Arduinoへ寄付したい場合は、「CONTRIBUTE & DOWNLOAD」ボタンを押します。)
ダウンロードしたインストーラーを起動します。
ライセンス条件を確認し、「同意する」ボタンを押します。
インストールオプションを選択し、「次へ」ボタンを押します。今回は、このコンピューターのすべてのユーザー向けにインストールします。
Arduino IDEのインストール先を選択し、「インストール」ボタンを押します。
インストールが完了したら、「完了」ボタンを押して、インストーラーを閉じます。
Arduino IDEの初回起動時は、ドライバーやコンポーネントをダウンロードしインストールされます。
Windowsの場合、以下のドライバーやコンポーネントのインストール確認ダイアログが表示されるので、確認し、「インストール」ボタンを押します。
- Arduino Industries LLCポート(COMとLPT)
- Arduino USB Driver
- 発行元がArduino srlとArduino SAの2種類
- Genunino USB Driver
- Lininoポート(COMとLPT)
- libsub-win32
ドライバーやコンポーネントのインストールが完了したら、セットアップ完了です。
3. Arduinoでプログラミング
Arduinoのプログラミング言語は、C言語やC++をベースにしたArduino言語です。また、Arduinoではソースコードのことをスケッチ(Schetch)と呼んでいます。
最小限のプログラムは、setup関数とloop関数の2つで構成されていて、前者はプログラムの開始時に1回だけ実行、後者は繰り返し実行されます。
void setup() {
// プログラムの開始時に、1回だけ実行されます。
}
void loop() {
// 以降、これを繰り返し実行されます。
}
3.1. Arduino内蔵のLEDを点滅させる
まずは、Arduino内蔵のLEDを点滅させてみましょう。
メニューから「File」→「Examples」→「01.Basics」→「Blink」を選択します。
ArduinoとPCをUSBケーブルで接続します。
「Select Board」から「Arduino Uno」を選択します。
「Upload」ボタンを押してスケッチをコンパイルし、プログラムをArduinoに書き込むと、Arduino内蔵のLEDが1秒ごとに点滅します。
3.1.1. 点滅間隔を調整してみよう
先ほどのLED点滅のプログラムの中身を見てみましょう。
pinMode関数は、指定したピンを「入力(INPUT)」や「出力(OUTPUT)」として使用するようにします。
LED_BUILTINは、Arduino内蔵のLED(Arduino Unoでは、デジタルの13番ピン)の定義です。
digitalWrite関数は、指定したピンに電圧を出力します。
HIGHは1の定義、LOWは0の定義で、Arduino内蔵のLEDのピンにHIGHを出力するとLEDが点灯し、LOWを出力するとLEDが消灯します。
delay関数は、指定した時間(ミリ秒単位)プログラムを停止します。
setup関数内のpinMode関数でArduino内蔵のLEDのピンを出力モードに設定し、loop関数にて1秒ごとにdigitalWrite関数でArduino内蔵のLEDを点灯・消灯を繰り返すことで、LEDを点滅させています。
void setup() {
pinMode(LED_BUILTIN, OUTPUT); // Arduino内蔵のLEDのピンを出力モードに設定
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // Arduino内蔵のLEDを点灯
delay(1000); // 1秒待機
digitalWrite(LED_BUILTIN, LOW); // Arduino内蔵のLEDを点灯
delay(1000); // 1秒待機
}
そこで、7行目と9行目のdelay関数のパラメーターを500にしてArduinoに書き込むと、Arduino内蔵のLEDは0.5秒ごとに点滅するようになります。
3.2. ArdunioにLEDを接続して、LEDを点滅させる
せっかくなので、ArduinoにLEDを接続して、そのLEDを点滅させるプログラムを作成してみましょう。
3.2.1. 追加で使用するもの
- ブレッドボード
- LED
- 抵抗器(220Ω×1(カラーコード: 赤赤茶(4線)、赤赤黒黒(5線)))
- ジャンパーワイヤー
3.2.2. 回路を構成
まず、ArdunioとLEDを結線します。
- Arduinoのデジタル12番ピンとLEDのアノード(線が長い方)を接続します。
- LEDのカソード(線が短い方)と抵抗を接続します。
- 抵抗とArduinoのGNDピンを接続します。
3.2.3. プログラム作成
次にプログラムを作成します。
#define LED_EXTERNAL 12
void setup() {
pinMode(LED_EXTERNAL, OUTPUT);
}
void loop() {
digitalWrite(LED_EXTERNAL, HIGH);
delay(1000);
digitalWrite(LED_EXTERNAL, LOW);
delay(1000);
}
コンパイルしてArduinoに書き込むと、Arduinoに接続したLEDが1秒おきに点滅します。
3.3. ボタンを押している間だけ、LEDを点灯させる
今度はボタンを追加して、ボタンを押している(スイッチON)間だけLEDを点灯させるプログラムを作成していきます。
3.3.1. 追加で用意するもの
- ブレッドボード
- LED
- ボタン
- 抵抗器
- 220Ω×1(カラーコード: 赤赤茶(4線)、赤赤黒黒(5線))
- 10kΩ×1(カラーコード: 茶黒橙(4線)、茶黒黒赤(5線))
- ジャンパーワイヤー
3.3.2. 回路を構成
まず、ArdunioとLED、ボタンを結線します。
- Arduinoのデジタル12番ピンとLEDのアノード(線が長い方)を接続します。
- LEDのカソード(線が短い方)と抵抗を接続します。
- 抵抗(220Ωの方)とArduinoのGNDピンを接続します。
- Arduinoの5Vピンとボタンを接続します。
- ボタンと抵抗(10kΩの方)を接続します。
- 抵抗(10kΩの方)とArduinoのGNDピンを接続します。
- Arduinoのデジタル2番ピンとボタンを接続します。
3.3.3. プログラム作成
次にプログラムを作成します。
setup関数で、LEDを接続したピンをOUTPUTに、ボタンを接続したピンをINPUTにします。
loop関数では、digitalRead関数でボタンからの入力値を読み取り、値がHIGHの時はLEDを点灯させ、そうでない時はLEDを消灯させます。
const int ledExternal = 12;
const int button = 2;
void setup() {
pinMode(ledExternal, OUTPUT);
pinMode(button, INPUT); // プッシュボタンのデジタルピンを入力モードにします
}
void loop() {
int buttonState = digitalRead(button);
if (buttonState == HIGH) {
digitalWrite(ledExternal, HIGH);
} else {
digitalWrite(ledExternal, LOW);
}
}
コンパイルしてArduinoに書き込むと、ボタンを押している間だけLEDが点灯するようになります。
3.3.4. プルダウン抵抗とプルアップ抵抗
3.3.2.のように、ボタンとGNDの間にある抵抗をプルダウン抵抗といい、ボタンを押していない(スイッチOFF)時はArduinoへの入力がLOWに、押している(スイッチON)時はArduinoへの入力がHIGHになります。
一方、以下の回路図のように、電源とArduinoの入力ピンの間ににある抵抗はプルアップ抵抗といい、ボタンを押していない(スイッチOFF)時はArduinoへの入力がHIGHに、押している(スイッチON)時はArduinoへの入力がLOWになります(プルダウン抵抗の時と逆です)。
スイッチOFF時 | スイッチON時 | |
---|---|---|
プルダウン抵抗 | LOW | HIGH |
プルアップ抵抗 | HIGH | LOW |
ちなみに、Arduinioの内部にもプルアップ抵抗が搭載されており、pinMode関数の第2パラメーターにINPUT_PULLUPを指定することで、利用できます。
pinMode(<PIN>, INPUT_PULLUP);
4. おわりに
今回は、Arduino UNO R3を購入し、Arduino IDEでいくつかプログラミングをしてみました。
今回購入したスターターキットには、他にも7セグメントディスプレイやセンサーなどのパーツがあるので、これらを使ったプログラムも作ってみたいと思います。
そういえば、5月下旬にArduino UNOの新型のR4が登場するみたいで、これも楽しみです。
[END]