Arduinoを使ってみる

Created Date: 2018-10-25/ updated date: 2020-11-16
Owner & Collaborators
License
Summary
【ゆるファブレシピ】Arduinoを使ってLEDを光らせたり、モーターを動かしたり、センサーで計測したりしてみましょう。

Materials

    Tools

      Blueprints

        Making

        • Arduinoとは入出力ポートがあるマイコンボードです。
          プログラムを書いて、センサーの値を読み込んだり、モーターを動かしたり、LEDを光らせたりと電子工作といわれることが簡単にできます。
          • Arduinoにはいろんな種類があります。どの種類のArduinoを使うかの設定はツールから設定できます。
            初めて使う人がよく使うArduino UNOの場合、
            [ツール]→[ボード]→[Arduino UNO/ Genuino UNO]を選択します。
          • [ツール]→[シリアルポート]で接続したUSBを選択します。
            Windowsの場合はCOM1,COM2と表示されるので、適切なものを選択してください。
          • チップがCH340GのArduino互換機を使っている場合で使用OSがwin7、8の場合ドライバーをインストールする必要があります。(ここを参考にしましょう)win10の場合は挿せば認識されるはずです。
            macの場合はドライバを入れたらクラッシュする事例などもあるので、初心者の方は互換機の使用を避けた方がいいかもしれません。

        • まずは、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→0V
            HIGH→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を切り替えます。
          • ブレッドボードを使って
            Arduinoの5Vー10kΩの抵抗ーCdSセルーArduinoのGND
            の流れができるような配線をします。
            その後、10kΩの抵抗とCdSセルが繋がっている列からArduinoのA1ピンに配線します。
          • 図の赤枠の部分を押すとシリアルモニタが表示されるので、明るさセンサーで観測された値が表示されます。
            暗くすると、数値が大きくなります。
          • デジタルは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というものを使います。
          • SG90の茶色をArduinoのGND
            SG90の赤色をArduinoの5V
            SG90ののオレンジをArduinoの11番ピン
            に接続します。

            どこにさせばいいかというのは製品のデータシートをみるようにしましょう。
          • サーボモータを動かすためのプログラムを1から自分で書くと、実はちょっと大変です。Arduinoにはサーボモータを簡単に動かすためのライブラリというものがあり、それを取り込む(インクルード)することによって、簡単なプログラムでサーボモータを動かせます。
            サンプルプログラム冒頭の

            #include <Servo.h>

            はサーボモータのライブラリをインクルードしたことを意味しています。

          • 変数というのは名前付きの箱です。

            int deg:

            という命令文がありますが、これは
            degという整数(int)を入れる箱を準備し、まず初期値として0を入れたという命令文になります。このようにコンピュータに名前付きの箱を準備することを、変数を宣言するといいます。
            degはサーボモータの角度を指定する際に使っています。

            Servo myservo;

            もmyservoというサーボモータ(Servo)を入れるための箱(変数です)
          • myservo.attach(11);
            と命令文がありますが、
            「11番ピンをサーボモータの制御に使うよ!」
            「11番ピンをサーボモータに接続するよ!」
            という意味です。

            これは特殊な書き方で、基本文法ではありません。
            ですので、こういうものだと思ってください。


          • if文がプログラムを書く際に多用する文法です。
            もし〜だったら、どうする
            というように条件を指定して、命令を実行する際に使います。

             if (deg>180){
                deg=0;
              }

            という記述はもし
            degが180より大きい値になったら、degを0にする
            という意味です。
            SG90というサーボモータは0〜180°までの間しか動かないので、角度を指定する際に180より大きい値を指定しないようにするための命令です。

          • deg++;

            という記述はdegという変数に入っている値を1増やすという意味になります。

            deg=deg+1;

            と記述しても構いません。
        Add Card Order

        References

          Usages

          • 1分タイマー

            一周で60秒測ってくれます。インスタントラーメンなら巻き戻し音を3回聞いたら食べごろです。
          • 光に反応するひまわり

            光センサーを使って、モーターの角度を制御されたひまわりです。
            健気に動くひまわりが可愛いです。
          • 明るさ指標

            子供の頃とかに部屋をもっと明るくしなさいと言われたことを思い出して作りました
          • フィギュア回してくれるやつ

            モーターを使って、フィギュアを回してくれるやつを作りました。
            このフィギュアは3Dプリントしたドラムぇもんです。(こっちのが時間かかりました)
          • まぶしい!

            常に瞬きをしており、まぶしい時には目を瞑ります。

          Project comments