【初めてのArduino】7.サーボモータ|ハンズオンで学ぶ初心者向け入門コース
Start electronics from today
このレッスンでは、サーボモータを使って、以下のような内容を学んでいきます。特にfor文は汎用性が高く、何をするにしても必ずと言っていいほど登場するプログラムなので、必ず抑えておいてください。
・繰り返し構文:for ・ライブラリの読み出し ・シリアルモニター(グラフ)
■目次 0:00 サーボモータについて 0:51 今回作るもの 0:58 使う材料の準備 1:03 回路図 1:27 回路を組む 1:55 プログラムの作成 4:07 ボードに書き込む 4:30 まとめ
■関連動画 Arduinoコース1 Arduinoとは https://youtu.be/F1RlVllBwxk Arduinoコース2 準備編 https://youtu.be/jHuWhbQdLhA Arduinoコース3 Lチカ https://youtu.be/vNFUslQCxPs Arduinoコース4 スイッチ https://youtu.be/xk2BCZTjTLU Arduinoコース5 フルカラーLED https://youtu.be/MiQ5aftfZIQ Arduinoコース6 サーミスタ https://youtu.be/Onypu6Dkirw
■自己紹介 ・ハードウェアエンジニア ・電子工作歴:9年 ・電子工作をゼロから体系的に並べるチャンネル「今日から始める電子工作」を運営してます
■SNS Web : https://lab-b.jp Twitter : https://twitter.com/buonoatsushi
#電子工作 #Arduino
■動画文字起こし サーボモータとは回転角度や速度を制御できるモータのことで、ロボットの関節や踏切の開閉など、ある決まった角度の範囲で精度良く物を動かしたい時に広く使われています。構造はこのように、通常のブラシ付きDCモータに加え、いくつかのギヤと、制御基板、回転量を検知するポテンショメータという部品からできています。こちらは、サーボモータの簡単なシステムを表したものです。Arduinoなどのコントローラから回転角度の指示が来ると、DCブラシモータが回転します。その回転量をポテンショメータで検知し、指示された角度に来たらモータを停止する、という仕組みになっています。なおこのように、変化量を検知して次の動作を決めるシステムは一般的にフィードバック制御と呼ばれます。 これは今回作成した回路で、5秒おきに180度回転するように動作させています。それではこの回路を作っていきましょう。 今回使う材料は、Arduino Uno、サーボモータ、オスオスのジャンパーワイヤ3本です。 こちらは、今回作成する回路図になります。サーボモータの電源は、Arduinoの5V出力端子から供給しています。Arduinoの場合、5Vの出力端子の電源はUSBポートに直接つながっているので、USB規格である500mAまで電流を流すことができます。大きなモータは動かすことができませんが、今回使っているようなホビー用の小さなサーボモータであれば問題なく使用することができます。 次に、回路図にならってブレッドボード図を作成したのがこちらです。今回使用しているタイプも含めて、多くのサーボモータはオレンジ、赤、茶色の3本の線が出ています。この場合、オレンジは信号、赤は電源、茶色はGNDラインを表しているので、間違えないようにしてください。それではこの図にならって、回路を組んでいきましょう。はい、ということで、回路を組むことができました。 それではコーディングを行っていきます。Arduino IDEを起動して、ファイル→新規ファイルをクリックし、この画面にあるプログラムを入力してください。ここではまず、最初の行で#includeというコードを使って、Servo.hというサーボモータ制御用のライブラリをインポートしています。ライブラリとは、あるモジュールを動作するために用意された、コードの集まりのことです。ArduinoにはこのServo.hを始め、いくつかのライブラリがデフォルトで用意されています。ライブラリを活用すると、ゼロからコードを書くより簡単にコードが書けるので、積極的に活用していきましょう。ちなみに今回使うservo.hには、以下のような6個の機能が用意されているので使う前に軽く目を通しておいて下さい。そして読み出したライブラリを使えるようにするために、下準備としてこの部分でオブジェクトを作成しています。オブジェクトというのは少し概念が難しいですが、実際にその機能を使えるようにするために、設計図の状態から現実世界に呼び出したものを言います。 Setup関数内では、servoライブラリの中にあるattachという機能を使い、9ピンを信号用のピンに割り当てています。また、今回はシリアルプロッタという機能を使って値をモニタするために、シリアルモニタ機能と同様にSerial.begin関数を使用しています。 次にloop関数内では、for文を使って繰り返し行う処理を書いています。for文では波括弧の中で囲まれた部分を、丸括弧内の条件が成立している限り繰り返すようにプログラムが動作します。丸括弧の中は、初期化処理、条件式、増分という3つのセクションに分かれています。増分はいくつか書き方がありますが、全て同じ意味なので頭に入れておきましょう。今回の場合で言うと、サーボモータの回転角度を表したangleという変数に最初に0を代入し、180に到達するまでは、1ずつ追加していきながら処理を繰り返す、という動きになります。そしてその処理の部分では、servoライブラリのwriteという関数を使って各angleの角度になるように回転させています。その後、30msの時間待機すると共に、現在のangleの値をシリアルプロッタで見れるようにしています。これは簡単に言うと、0〜180度までを1度ずつ回転させていることになります。そしてその回転時間は、1度あたり30msなので180度で5秒程度ということになります。180度まで回転させた後は、1秒待機した後で ... https://www.youtube.com/watch?v=7Niq22v6MFk
25108632 Bytes