サーボを動かすだけのサンプル

とりあえず動くかどうかの確認です。無線とかMediaPipeとか全く使わずプログラム通りにサーボを動かしてみます。以下のプログラムをarduino.exeから書きこんでみましょう。書きこむ際にエラーが出る場合、まずシリアルの通信速度を確認してください。デバイスマネージャの指定とarduino.exeの指定が同じになるようにします。次に電源ケーブルやサーボのケーブルを抜いてみてください。

#include <Servo.h>

Servo myservo;        //Servoオブジェクトを作成

void setup() {
  myservo.attach(12); //12番ピンをサーボ制御用にする
}

void loop() {
  myservo.write(180); //180度回転 
  delay(1000);        //1秒待つ
  myservo.write(0);   //0度に戻す
  delay(1000);        //1秒待つ
}

シリアルポート経由で角度を指示するサンプル

続いて、シリアルポートからの入力によって角度を変えるサンプルを動かしてみましょう。プログラムを転送した後、USBケーブルは抜かずにCtrl+Shift+Mでシリアルモニタを表示します。通信速度を確認し、パソコン側から任意の角度を文字列で送ってみましょう。任意といっても0~180にしてください。

#include <Servo.h>
Servo myservo; //Servoオブジェクトを作成
String data="";//受信用の文字列変数
char tmp;//バッファ吸い上げ用のchar変数

void setup() {
  myservo.attach(12); //12番ピンをサーボ制御線にする
  Serial.begin(115200);//シリアル通信スタート(ケーブル接続)
}

void loop() {
  while(Serial.available()){//到着データが残っているなら繰り返し
    tmp=(char)Serial.read();//1文字吸い上げ
    data+=tmp;              //文字列に追加
     if(tmp == '\n'){       //もし1文字が改行ならサーボを動かす
      myservo.write(data.toInt());//文字列を整数に変換してからサーボに出力
      delay(10);            //サーボが動く時間待つ
      data ="";             //文字列をクリア、次に備える
     }
  }
}

シリアルモニタの送信欄に数字を入力して送信ボタンを押すかEnterキーを押します。通信速度に注意しましょう。ここではプログラム、シリアルモニタともに115200にしてあります。また、揃ってなくても動くようなのですが、デバイスマネージャでポートの設定も確認しておくと良いでしょう。

Bluetooth接続してみるサンプル

先ほど動かしたケーブル経由のものを無線にすべくBluetoothシリアルで接続してみます。パソコン側のBluetooth設定を起動して接続する必要があります。

コードの方は、ほぼほぼSerialをSerialBT、つまりBluetoothSerialオブジェクトに置換した感じです。SerialBT.begin()の引数に文字列を入れるのですが、これは隣の参加者と混同しないよう自分のものだと分かるものにしてください。

#include <Servo.h>
#include "BluetoothSerial.h"
BluetoothSerial SerialBT;//Bluetoothシリアルオブジェクトを作成
Servo myservo; //Servoオブジェクトを作成
String data="";//受信用の文字列変数
char tmp;//バッファ吸い上げ用のchar変数

void setup() {
  myservo.attach(12); //12番ピンをサーボ制御線にする
  SerialBT.begin("SIGACI-WS");
}

void loop() {
  while(SerialBT.available()){//到着データが残っているなら繰り返し
    tmp=(char)SerialBT.read();//1文字吸い上げ
    data+=tmp;              //文字列に追加
     if(tmp == '\n'){       //もし1文字が改行ならサーボを動かす
      myservo.write(data.toInt());//文字列を整数に変換してからサーボに出力
      delay(10);            //サーボが動く時間待つ
      data ="";             //文字列をクリア、次に備える
     }
  }
}

Win+iで設定を出して、デバイス→Bluetoothとその他のデバイス→~を追加する、と進みます。「マウス、キーボード…」を選ぶと、

先ほど指定した文字列が見えるはずです。クリックして接続します。

新しく通信ポートが加わっているはずですので、デバイスマネージャで確認します。Bluetoothのポートが2つ増えている場合は小さい方です多分。あとは動作確認です。

  • USBケーブルを外して電池ボックスを接続
  • arduino.exeのシリアルポートを先ほど記憶しているCOMに変更
  • シリアルモニタを起動
  • 数値を送信
  • サーボが動くことを確認

無事動いたら「パソコンからシリアル経由で数値文字列を書きこむことでその位置にサーボが動くようになった」ということですね。