サーボを動かす方法
以前試したサーボを動かす方法は、20msの間に、heightとlowをつくる方法だった。
今回は、可変抵抗をセンサーにして、前回の方法も含め3つの方法で試してみる。
1 │ analogWriteコマンドを使う
void setup(){
pinMode(3,OUTPUT);
}
void loop(){
int val=analogRead(0)/4; // (0~1023)/4
analogWrite(3,val); // (0~255)
delay(20);
}
この方法は、
Arduino基盤にpwmと書いてあるポートにだけ可能。
分解能は、256
※サーボのメーカーによっては、動かないときがある。
2 │ Servoオブジェクトを使う
ここからオブジェクトをダウンロードして、Arduinoのフォルダのなかのlib/targets/librariesに入れてArduinoを起動する。
#include <Servo.h>
Servo servo;
void setup() {
servo.attach(3);
}
void loop(){
float val=analogRead(0)*180.00/1023;
servo.write(int(val));
delay(20);
Servo::refresh();
}
この方法は、
どのポートでも可能
分解能は、180
※arduinoのバージョン8以上で動作します
3 │1024の分解能をつかう
void setup(){
pinMode(3,OUTPUT);
}
void loop(){
int val=analogRead(0)*2; //1023を2倍して、振幅を約2000として
digitalWrite(3,HIGH);
delayMicroseconds(val+500); //振幅値+最小パルス500
digitalWrite(3,LOW);
delayMicroseconds(20000-val-500); //20msから上記のパルス長を差し引いて、常に20ms(20000us)にサイクルに調整する。
}
これは、以前試した方法と同じ。




