Arduinoでサーボモータを使って見よう [Arduino入門編]
こんばんは~
最近はガンプラやビールの紹介ばかりだったので、
久しぶりに真面目に書きます。
今回は「サーボモータ」の制御です。
サーボモータとはコレです。
普通のモータはArduinoから電気を流すと高速で回り続けると思います。
それに対してサーボモータは普通のモータとは違って、
Arduino側から角度を指定して動作させます。
文章ではわかりづらいと思うので写真を使って説明。
まずサーボモータは基本的にはサーボホーンというものを取り付けて使います。
下の写真にある十字架みたいなものがそれです。
この状態からサーボモータに45°と命令を出すと以下のように
指定角度まで回転して止まります。
このように自分な好きな角度に移動させて止められるので、
ロボットの各関節やセンサーの向きを変えるのに使用されます。
それでは実際に使っていきます。
Arduinoへの接続は以下です。
サーボモータの配線はJRCタイプとフタバタイプという2つがあるのですが、
色で判断して以下でつなぎます。
赤(VCC):Arduinoの5.0Vへ
黒or茶色(GND):ArduinoのGNDへ
白or橙:Arduinoのデジタルピンへ
ソース説明とサンプルは以下です。
1.ライブラリインクルードと変数定義
Arduinoではサーボモータを簡単に使用できるように、
専用のライブラリが用意されています。
そこで「Servo.h 」と書いてをインクルードし、
変数名を「Servo」でグローバル域にサーボメンバを定義します。
2.初期化
次にsetup()関数でattachというライブラリを使って、
サーボを初期化します。これでサーボモーターが使用可能になります。
ライブラリの引数には自分が接続したArduinoのピン番号を指定します。
3.サーボモータの制御
後はwrite関数をコールする事で好きな角度に
サーボモーターを回す事ができます。
4.注意点1:角度
サーボに指定する角度ですが分度器をイメージしてください。
つまり正面は90°、左は0°、右は180°となります。
正面が0°と勘違いしやすいの注意です。
5.注意2:角度指定後のdelay()
サーボに角度を指定して回転させた後は少しdelayを入れましょう。
これは完全に指定角度に移動させるため待ち時間です。
これでサーボモーターが制御できるようになりました
僕が作るロボットでは今のところ正面につける超音波センサーから
距離を求める時に使用します。
この流れで次回は超音波センサーの使い方を説明していきたいと思います
最近はガンプラやビールの紹介ばかりだったので、
久しぶりに真面目に書きます。
今回は「サーボモータ」の制御です。
サーボモータとはコレです。
普通のモータはArduinoから電気を流すと高速で回り続けると思います。
それに対してサーボモータは普通のモータとは違って、
Arduino側から角度を指定して動作させます。
文章ではわかりづらいと思うので写真を使って説明。
まずサーボモータは基本的にはサーボホーンというものを取り付けて使います。
下の写真にある十字架みたいなものがそれです。
この状態からサーボモータに45°と命令を出すと以下のように
指定角度まで回転して止まります。
このように自分な好きな角度に移動させて止められるので、
ロボットの各関節やセンサーの向きを変えるのに使用されます。
それでは実際に使っていきます。
Arduinoへの接続は以下です。
サーボモータの配線はJRCタイプとフタバタイプという2つがあるのですが、
色で判断して以下でつなぎます。
赤(VCC):Arduinoの5.0Vへ
黒or茶色(GND):ArduinoのGNDへ
白or橙:Arduinoのデジタルピンへ
ソース説明とサンプルは以下です。
1.ライブラリインクルードと変数定義
Arduinoではサーボモータを簡単に使用できるように、
専用のライブラリが用意されています。
そこで「Servo.h 」と書いてをインクルードし、
変数名を「Servo」でグローバル域にサーボメンバを定義します。
2.初期化
次にsetup()関数でattachというライブラリを使って、
サーボを初期化します。これでサーボモーターが使用可能になります。
ライブラリの引数には自分が接続したArduinoのピン番号を指定します。
3.サーボモータの制御
後はwrite関数をコールする事で好きな角度に
サーボモーターを回す事ができます。
4.注意点1:角度
サーボに指定する角度ですが分度器をイメージしてください。
つまり正面は90°、左は0°、右は180°となります。
正面が0°と勘違いしやすいの注意です。
5.注意2:角度指定後のdelay()
サーボに角度を指定して回転させた後は少しdelayを入れましょう。
これは完全に指定角度に移動させるため待ち時間です。
#include// サーボ変数をグローバルに定義 Servo servo; void setup() { // デジタル5番ピンにサーボを接続し初期配置 servo.attach(5); servo.write(90); delay(1000); } void loop() { // サーボの角度を10°->170°->90°へと順に移動 servo.write(10); delay(1500); servo.write(170); delay(1500); servo.write(90); delay(1500); }
これでサーボモーターが制御できるようになりました
僕が作るロボットでは今のところ正面につける超音波センサーから
距離を求める時に使用します。
この流れで次回は超音波センサーの使い方を説明していきたいと思います
コメント 0