- ArduinoとPCをUSBケーブルで接続します。
- Arduinoにはいろんな種類があります。どの種類のArduinoを使うかの設定はツールから設定できます。初めて使う人がよく使うArduino UNOの場合、[ツール]→[ボード]→[Arduino UNO/ Genuino UNO]を選択します。
- [ツール]→[シリアルポート]で接続したUSBを選択します。Windowsの場合はCOM1,COM2と表示されるので、適切なものを選択してください。
- チップがCH340GのArduino互換機を使っている場合で使用OSがwin7、8の場合ドライバーをインストールする必要があります。(ここを参考にしましょう)win10の場合は挿せば認識されるはずです。macの場合はドライバを入れたらクラッシュする事例などもあるので、初心者の方は互換機の使用を避けた方がいいかもしれません。
Arduinoを使ってみる

Owner & Collaborators
License

Summary
【ゆるファブレシピ】Arduinoを使ってLEDを光らせたり、モーターを動かしたり、センサーで計測したりしてみましょう。

Materials
Tools
Blueprints
Making
- まずは、LEDを光らせてみましょう。LEDをチカチカさせることをLチカといいます。
- LEDの長い方(+)を13番ピン短い方(ー)をGNDに挿入します。
- void setup() {}void loop() {}Arduinoのスケッチを作成するとという2つのプログラムがもともと書いてあります。setupは最初に一回だけ実行されるプログラムloopはずっと繰り返し実行されるプログラムです。{ 〜 }の間がそれぞれのプログラムになります。
- ダンロードしたプログラムの中をみると、ところどころに;(セミコロン)があります。Arduinoでは基本的に命令文の最後には;(セミコロン)をつけます※ただし、ifやforのように{}でくくるループや条件分岐の場合は除きます。
- デジタルピン(1〜13)の設定・pinMode:指定したピンを入力用に使うのか、出力用に使うのかを設定する今回はLEDを点灯させるために13番ピンから電気を流したい(出力したい)ので、pinMode(13,OUTPUT);・digitalWrite:デジタルピンの出力をLOWかHIGHで設定します。LOW→0VHIGH→5Vが出力されます。つまり、digitalWrite(HIGH)でLEDがつくdigitalWrite(LOW)でLEDが消える事になります。
- 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を切り替えます。
- 図の赤枠の部分を押すとシリアルモニタが表示されるので、明るさセンサーで観測された値が表示されます。暗くすると、数値が大きくなります。
- デジタルは01の世界と言われますが、Arduinoの例でいうと0=0V(LOW)、1=5V(HIGH)です。つまり、Lチカの例で行ったデジタル出力は0Vか5Vのどっちかしかない出力です。しかし、アナログは連続した値です。0〜5Vの値の間のどの値でも取れます。今回の明るさセンサーは明るさ、暗さを数値で表したいのでアナログピンを使います。ただし、アナログ入力は0-5Vの入力電圧を0-1023の値に変換されます。0→0V1023→5Vval=analogRead(1);はアナログ1番ピン(A1)の値を読むことを意味しています。
- サーボモータを動かすためのプログラムを1から自分で書くと、実はちょっと大変です。Arduinoにはサーボモータを簡単に動かすためのライブラリというものがあり、それを取り込む(インクルード)することによって、簡単なプログラムでサーボモータを動かせます。サンプルプログラム冒頭の#include <Servo.h>はサーボモータのライブラリをインクルードしたことを意味しています。
- 変数というのは名前付きの箱です。int deg:という命令文がありますが、これはdegという整数(int)を入れる箱を準備し、まず初期値として0を入れたという命令文になります。このようにコンピュータに名前付きの箱を準備することを、変数を宣言するといいます。degはサーボモータの角度を指定する際に使っています。Servo myservo;もmyservoというサーボモータ(Servo)を入れるための箱(変数です)
- setupの中にdeg =0;という記述があります。これはdegという箱の中に0を入れるという命令です。変数の中に値を入れることを値の代入といいます。
- myservo.attach(11);と命令文がありますが、「11番ピンをサーボモータの制御に使うよ!」「11番ピンをサーボモータに接続するよ!」という意味です。これは特殊な書き方で、基本文法ではありません。ですので、こういうものだと思ってください。
- if文がプログラムを書く際に多用する文法です。もし〜だったら、どうするというように条件を指定して、命令を実行する際に使います。if (deg>180){deg=0;}という記述はもしdegが180より大きい値になったら、degを0にするという意味です。SG90というサーボモータは0〜180°までの間しか動かないので、角度を指定する際に180より大きい値を指定しないようにするための命令です。
- myservo.write(deg);という記述でmyservoという名前のサーボモータに角度を指定して、その角度にサーボヘッドを動かします。
- deg++;という記述はdegという変数に入っている値を1増やすという意味になります。deg=deg+1;と記述しても構いません。
- LEDの例と明るさセンサーの例とおなじようにLED,明るさセンサーを配線します。
- 下記のファイルをダウンロードし、Arduinoに書き込んでみましょう。暗くなったら、サーボモーターが動きます。(100を閾値にしているので、環境によってこの数値を変えてください。)
- Arduinoを使って作ったものをUsagesでシェアしよう!動画の方がわかりやすいよ!
References
Usages
Project comments

Comments