[入門編]
Arduinoで始めるロボット制御
今回使ってみるもの
さて、第1回目はFreaduino UNOを使ってサーボモータを制御してみます。Freaduino UNOはArduino UNO完全互換ボードです。さらに、サーボモータやセンサー等を直接挿すことができるピンヘッダを装備しているため実験などに非常に便利です。サーボモータはロボット作りの基本となるものです。ここで使い方を覚えていきましょう。
準備するもの一覧
さっそくサーボモータを動かしてみよう
配線する
D9のピンヘッダにサーボモータをさしてみましょう。向きに気を付けましょう。信号線が内側です。黒いケーブルを黒いピンヘッダに、白いケーブルを黄色いピンヘッダに挿します。
Arduino用ソフトウェアを用意する
ArduinoはArduino IDEというソフトを仕様してプログラムを書き込みます。
ここからダウンロードしましょう。
お使いのPCの環境によってはFTDIドライバというソフトをインストールする必要があります。ArduinoをPCとUSBケーブルで接続した場合にPCがポートを認識できない場合はここからドライバを入手してインストールしましょう。
Arduino IDEを起動するとこのような画面が開きます。
メニューのツール>マイコンボードからArduino UNOを選択します。
メニューのツール>シリアルポートからFreaduino UNOを接続しているポートを選択します。
これでプログラムを書き込む準備は終わりました。
次にこのソースコードを書き込んでみましょう。
- 最初に下記のサンプルコードをArduino IDEに貼り付けます。
- 次にツールバー上のチェックボタンを押します。これがプログラムのコンパイルになります。
- 次に右向きの矢印ボタンを押します。これがArduinoへのプログラムの書き込みになります。
#include <Servo.h> Servo servo; //Servoオブジェクトを作成 void setup() { servo.attach(9); //D9ピンをサーボの信号線として設定 } void loop() { servo.write(90); // サーボの角度を90°に設定 delay(1000); servo.write(0); // サーボの角度を0°に設定 delay(1000); }
下の写真のようにサーボホーンが動いたでしょうか?成功していれば、サーボホーンが1秒毎に90°回転するはずです。
Servoライブラリの使い方はたったの4ステップです。どうですか、簡単でしょう?
- Servo.hをインクルードする
- Servoオブジェクトを作る
- Servoオブジェクトにピンを設定する(サーボの信号線に繋がるピン)
- 角度を設定する
ちなみに、Arduinoは最大12個のサーボモータを動かすことができるので、下の写真のように繋げることもできます。この例では、D9,10,11にサーボを繋げて、D12にOctopusデジタルボタンブリックを繋げています。全て信号線が黄色いピンヘッダにささるようにしてください。
次にこのソースコードを書き込んでみましょう。
#include <Servo.h> #define SW 12 Servo servo1; Servo servo2; Servo servo3; void setup() { servo1.attach(9); //D9ピンをサーボの信号線として設定 servo2.attach(10); //D10ピンをサーボの信号線として設定 servo3.attach(11); //D11ピンをサーボの信号線として設定 pinMode(SW,INPUT); //D12をスイッチとして使用 digitalWrite(SW,HIGH); //pull-up ON } void loop() { if(digitalRead(SW)==LOW){ //スイッチが押されたとき90°にする servo1.write(90); // サーボの角度を90°に設定 servo2.write(90); servo3.write(90); }else{ //スイッチが押されていないとき0°にする servo1.write(0); // サーボの角度を0°に設定 servo2.write(0); servo3.write(0); } }
ボタンを押すと一斉にサーボが動きます。写真では全てのサーボホーンが縦を向いているのがわかるでしょうか?特に難しくないですね。(本来USBバスパワーのみでサーボモータを動かすのはあまり良くない+パワー不足です。実際にはUSBはプログラムの書き込みだけで、サーボを動かす時はDC6V出力のACアダプタでも用意するといいでしょう)
サーボの制御に慣れるとこんなことができるようになる
多くのサーボモータがあっさり動いたのはいいけど、何に使えるの?と思う人もいるかもしれません。ここではその一例をお見せします。写真のロボットはFreaduino UNOとType2サーボモータ4つでできています。全身のサーボモータの角度を同時に少しずつ変化させていくことで2足歩行をします。首をふることもできます。全てさきほど説明したServoライブラリの関数だけで実現しています。
頭の中にFreaduino UNOと単3電池ボックス。
こんな感じで歩きます。
どうですか、ひょっとしたら自分もロボットを作れると感じることができましたでしょうか?次回以降も色々と役立つ情報をご紹介していきたいと思います。