Arduinoの基本
Arduino
とは入出力ポートがあるマイコンボードです。
プログラムを書いて、センサーの値を読み込んだり、モーターを動かしたり、LEDを光らせたりと電子工作といわれることが簡単にできます。
ソフトウェアのダウンロードとインストール
Arduinoのプログラムを作成するソフトウェアは
Aruinoのサイト
からダウンロードできます。
OSにあったものをダウンロードして、インストールしてください。
ArduinoとPCの接続
ArduinoとPCをUSBケーブルで接続します。
設定1:ボードを設定
Arduinoにはいろんな種類があります。どの種類のArduinoを使うかの設定はツールから設定できます。
初めて使う人がよく使うArduino UNOの場合、
[ツール]→[ボード]→[Arduino UNO/ Genuino UNO]を選択します。
設定2:シリアルポート
[ツール]→[シリアルポート]で接続したUSBを選択します。
Windowsの場合はCOM1,COM2と表示されるので、適切なものを選択してください。
Arduino互換機を使っている場合
チップがCH340GのArduino互換機を使っている場合で使用OSがwin7、8の場合ドライバーをインストールする必要があります。(
ここ
を参考にしましょう)win10の場合は挿せば認識されるはずです。
macの場合はドライバを入れたらクラッシュする事例などもあるので、初心者の方は互換機の使用を避けた方がいいかもしれません。
Lチカ
まずは、LEDを光らせてみましょう。LEDをチカチカさせることをLチカといいます。
LEDのプラス、マイナス
LED
は長い方が+、短い方がーです。
+はアノード
ーはカソード
といいます。
LEDをArduinoにさす
LEDの
長い方(+)を13番ピン
短い方(ー)をGNDに
挿入します。
Lチカプログラムを書き込む
下記のファイルをダウンロードし、Arduinoに書き込んでみましょう。
LEDtest.ino
ポイント1:setupとloop
void setup() {
}
void loop() {
}
Arduinoのスケッチを作成するとという2つのプログラムがもともと書いてあります。
setupは最初に一回だけ実行されるプログラム
loopはずっと繰り返し実行されるプログラム
です。
{ 〜 }の間がそれぞれのプログラムになります。
ポイント2:約束事
ダンロードしたプログラムの中をみると、ところどころに;(セミコロン)があります。
Arduinoでは基本的に命令文の最後には;(セミコロン)をつけます
※ただし、ifやforのように{}でくくるループや条件分岐の場合は除きます。
ポイント3:ピンの設定と出力
デジタルピン(1〜13)の設定
・
pinMode
:指定したピンを入力用に使うのか、出力用に使うのかを設定する
今回はLEDを点灯させるために13番ピンから電気を流したい(出力したい)ので、
pinMode(13,OUTPUT);
・
digitalWrite
:デジタルピンの出力をLOWかHIGHで設定します。
LOW→0V
HIGH→5V
が出力されます。
つまり、
digitalWrite(HIGH)でLEDがつく
digitalWrite(LOW)でLEDが消える
事になります。
ポイント4:delay
delay
はしていした時間待つ命令です。
単位はミリ秒(ms)です。
例)
delay(1000)→1秒待つ (1000/1000=1)
delay(100)→0.1秒待つ(100/1000=0.1)
delay(10)→0.01秒待つ(10/1000=0.01)
LEDを高速で点滅させると、点滅しているかわからないので、ある程度の間隔をおいてHIGHとLOWを切り替えます。
明るさセンサー(CdS)で明るさを測定する
配線
ブレッドボードを使って
Arduinoの5Vー
10kΩの抵抗
ーCdSセルーArduinoのGND
の流れができるような配線をします。
その後、10kΩの抵抗とCdSセルが繋がっている列からArduinoのA1ピンに配線します。
プログラムを書き込む
下記のファイルをダウンロードし、Arduinoに書き込んでみましょう。
Cdstest.ino
シリアルモニタで数値を確認
図の赤枠の部分を押すとシリアルモニタが表示されるので、明るさセンサーで観測された値が表示されます。
暗くすると、数値が大きくなります。
シリアルモニタの様子
ポイント1:アナログ入力
デジタルは01の世界と言われますが、Arduinoの例でいうと0=0V(LOW)、1=5V(HIGH)です。
つまり、Lチカの例で行ったデジタル出力は0Vか5Vのどっちかしかない出力です。
しかし、アナログは連続した値です。0〜5Vの値の間のどの値でも取れます。
今回の明るさセンサーは明るさ、暗さを数値で表したいのでアナログピンを使います。
ただし、アナログ入力は0-5Vの入力電圧を0-1023の値に変換されます。
0→0V
1023→5V
val=analogRead(1);
はアナログ1番ピン(A1)の値を読むことを意味しています。
サーボモータを動かす
サーボモータは回転角度などを簡単に制御できるモーターです。今回の例では
サーボモータ
はSG90というものを使います。
Arduioとの接続
ジャンパワイヤ
を使って
SG90の茶色をArduinoのGND
SG90の赤色をArduinoの5V
SG90ののオレンジをArduinoの11番ピン
に接続します。
どこにさせばいいかというのは製品の
データシート
をみるようにしましょう。
プログラムを書き込む
下記のファイルをダウンロードし、Arduinoに書き込んでみましょう。
Servo_test.ino
ポイント1:ライブラリの利用
サーボモータを動かすためのプログラムを1から自分で書くと、実はちょっと大変です。Arduinoにはサーボモータを簡単に動かすためのライブラリというものがあり、それを取り込む(インクルード)することによって、簡単なプログラムでサーボモータを動かせます。
サンプルプログラム冒頭の
#include <Servo.h>
はサーボモータのライブラリをインクルードしたことを意味しています。
ポイント2:変数
変数というのは名前付きの箱
です。
int deg:
という命令文がありますが、これは
degという整数(int)を入れる箱を準備し、まず初期値として0を入れたという命令文になります。このようにコンピュータに名前付きの箱を準備することを、
変数を宣言
するといいます。
degはサーボモータの角度を指定する際に使っています。
Servo myservo;
もmyservoというサーボモータ(Servo)を入れるための箱(変数です)
ポイント3:変数に値を入れる(値の代入)
setupの中に
deg =0;
という記述があります。
これはdegという箱の中に0を入れるという命令です。
変数の中に値を入れることを
値の代入
といいます。
ポイント4:サーボモータをアタッチ
myservo.attach(11);
と命令文がありますが、
「11番ピンをサーボモータの制御に使うよ!」
「11番ピンをサーボモータに接続するよ!」
という意味です。
これは特殊な書き方で、基本文法ではありません。
ですので、こういうものだと思ってください。
ポイント5:条件分岐(if文)
if文がプログラムを書く際に多用する文法です。
もし〜だったら、どうする
というように条件を指定して、命令を実行する際に使います。
if (deg>180){
deg=0;
}
という記述はもし
degが180より大きい値になったら、degを0にする
という意味です。
SG90というサーボモータは0〜180°までの間しか動かないので、角度を指定する際に180より大きい値を指定しないようにするための命令です。
ポイント6:サーボモータの角度指定
myservo.write(deg);
という記述で
myservoという名前のサーボモータに角度を指定して、その角度にサーボヘッドを動かします。
ポイント7:インクリメント
deg++;
という記述はdegという変数に入っている値を1増やすという意味になります。
deg=deg+1;
と記述しても構いません。
暗くなったらLEDを点灯させる例
配線
LEDの例と明るさセンサーの例とおなじようにLED,明るさセンサーを配線します。
プログラムの書き込み
下記のファイルをダウンロードし、Arduinoに書き込んでみましょう。
CdS_LED.ino
暗くなったら、LEDが点灯します。(100を閾値にしているので、環境によってこの数値を変えてください。)
暗くなったらサーボモータを動かす
配線
プログラムの書き込み
下記のファイルをダウンロードし、Arduinoに書き込んでみましょう。
ServoCds.ino
暗くなったら、サーボモーターが動きます。(100を閾値にしているので、環境によってこの数値を変えてください。)
シェアしよう!
Arduinoを使って作ったものをUsagesでシェアしよう!動画の方がわかりやすいよ!