*サーボモータ 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);};