*サーボモータ SG90 [#f836a2d2] #ref(s_servo.png) -マイコンなどから制御可能な小型サーボモータ --PWMサイクル:20 ms --制御パルス:0.5~2.4 ms --制御角:±約90度(180度) --トルク:1.8 kgf・cm --動作速度:0.1 秒/60度 --動作電圧:4.8 V(~5V) --重量:9 g -データシート #ref(SG90_a.pdf) *Arduinoとの接続 [#c7eba01c] -サーボモータとArduinoを以下のように接続する。 |サーボモータ信号名|Arduino|備考| |GND(茶色)|GND|| |Vcc(赤)|5V|| |制御(オレンジ)|任意のPWM出力(デジタルの3、5、6、9、10、11)|シルクの「~」マークが目印| ~ #ref(servo-setsuzoku.png) *リファレンス [#v633d469] -[[概要>http://www.musashinodenpa.com/arduino/ref/index.php?f=1&pos=664]] -[[attach(pin)>http://www.musashinodenpa.com/arduino/ref/index.php?f=1&pos=670]] -[[write(angle)>http://www.musashinodenpa.com/arduino/ref/index.php?f=1&pos=707]] -[[writeMicroseconds(uS)>http://www.musashinodenpa.com/arduino/ref/index.php?f=1&pos=735]] -[[read()>http://www.musashinodenpa.com/arduino/ref/index.php?f=1&pos=750]] -[[attached()>http://www.musashinodenpa.com/arduino/ref/index.php?f=1&pos=763]] -[[detach()>http://www.musashinodenpa.com/arduino/ref/index.php?f=1&pos=776]] *サンプルコード1 [#g7f93a97] -「ファイル」→「スケッチの例」→「Servo」→「Sweep」 /* ・サーボモータ SG90 のサンプルプログラムです。 ・右回転、左回転を繰り返します。 ・Arduinoとの接続 GND(茶色) GND Vcc(赤) 5V 制御(オレンジ) 任意のPWM出力(デジタルの3、5、6、9、10、11) */ #include <Servo.h> const int servoPin = 3; // サーボの接続ピン(定数) Servo myservo; // サーボオブジェクトを生成 int pos = 0; // サーボのポジション(変数) void setup() { myservo.attach(servoPin); // サーボ変数をピンに割り当て } void loop() { for(pos = 0; pos < 180; pos += 1){ // pos変数を0から180まで変化させる myservo.write(pos); // サーボの角度をpos変数の値にする delay(15); // 回転するまで待つ } for(pos = 180; pos>=1; pos-=1){ // pos変数を180から0まで変化させる myservo.write(pos); // サーボの角度をpos変数の値にする delay(15); // 回転するまで待つ } } *サンプルコード2 [#pb39f961] -「ファイル」→「スケッチの例」→「Servo」→「SerialControl」 /* ・サーボモータ SG90 のサンプルプログラムです。 ・シリアルモニタから角度(1~180)を指定してサーボモータを制御します。 ・マイコンボードに書き込み後、「ツール」→「シリアルモニタ」を起動してください。 ・シリアルモニタの改行の設定を「LFのみ」にしてください。 ・Arduinoとの接続 GND(茶色) GND Vcc(赤) 5V 制御(オレンジ) 任意のPWM出力(デジタルの3、5、6、9、10、11) */ #include <Servo.h> const int servoPin = 3; // サーボの接続ピン(定数) Servo myservo; // サーボオブジェクトを生成 int pos = 0; // サーボのポジション(変数) String inString = ""; // 受信文字列用のバッファ void setup() { Serial.begin(9600); myservo.attach(servoPin); // サーボ変数をピンに割り当て myservo.write(pos); // ポジションを0に設定 delay(15); // 回転するまで待つ } void loop() { while (Serial.available() > 0) { // 受信データがあったら… int inChar = Serial.read(); // 1バイト読み込む if (isDigit(inChar)) { // 数値だったら… inString += (char)inChar; // 文字列を連結する } if (inChar == '\n') { // 改行コードLFが来たら… pos = inString.toInt(); // 文字列を数値に変換する if (pos < 1 || pos > 180) { // 数値が範囲外なら… Serial.println("Parameter Error");// エラー表示 }else{ myservo.write(pos); // 範囲内ならサーボモータを回転 delay(15); // 回転するまで待つ Serial.print("OK:"); // OK Serial.println(pos); } inString = ""; // バッファクリア } } } *参考資料 [#l6c9507e] -[[その9 Arduinoでサーボモータをキュイキュイ動かす!>http://marupeke296.com/EL_Ard_No9_ServoMotor.html]] -[[Arduino Nano でサーボモータを動かしてみた>http://makers-with-myson.blog.so-net.ne.jp/2014-04-24]] -[[Arduinoで始めるロボット制御>http://www.vstone.co.jp/vs_wiki/main/wiki.cgi?page=Arduino%A4%C7%BB%CF%A4%E1%A4%EB%A5%ED%A5%DC%A5%C3%A5%C8%C0%A9%B8%E6]] -[[第13回 Arduinoでモーターを制御する!(その3)。自作ラジコンカーに挑戦!サーボモーターでステアリング実装。>http://deviceplus.jp/hobby/entry013/]] -[[サーボモーター制御ライブラリ>http://nekosan0.bake-neko.net/library_servo.html]] ---- &size(12){Total:&counter(total); / Today:&counter(today); / Yesterday:&counter(yesterday);};