サーボモータを制御する②

昨日の続きです!


パルス幅を調べます。
昨日の終わりに、70°で固定することが出来たので、左右の回転がぴったり360°で止まる数字を探します。
仕様書からパルス値が読み取れればいらない作業なんですが、わからないからしょうがない!

数値をちょこちょこ変えて調べたところ、
[cpp]
#include <Servo.h>
Servo servo;//サーボのインスタンス

void setup(){
Serial.begin(9600) ;

servo.attach(9, 955, 2000);
}

void loop(){
//サーボ出力
servo.writeMicroseconds(2000);
delay(3000) ;
servo.writeMicroseconds(955);
delay(3000) ;

}
[/cpp]

上記でほぼ360°で止まってくれることがわかりました!
目測(分度器をあてて測ってますが)なので微妙にずれはあるんですが、

955 = 0°
2000 = 360°

ということになります。
ということは、955と2000の間あたり、1500は180°になるはずです!
[cpp]
#include <Servo.h>
Servo servo;//サーボのインスタンス

void setup(){
Serial.begin(9600) ;

servo.attach(9, 955, 2000);
}
void loop(){
//サーボ出力
servo.writeMicroseconds(955); //0°
delay(3000) ;
servo.writeMicroseconds(2000); //360°
delay(3000) ;
servo.writeMicroseconds(1500); //180°くらい
delay(3000) ;
}
[/cpp]

上記を実行。
結果:だいたい180°で止まった!

と、いうわけで、だいたいのサーボの角度をとることが出来ました!

これをOFに読み込んで(読み込み方はまだわからないですが)、
955, 2000をmapで0,360に変換すれば、
角度(degree)としてOFの画面上に表示することも可能かな?

とりあえずArduinoでのサーボの制御はここまで!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください