Raspberry Pi でサーボモータ制御 をやってみたんですが、PWMが安定していないのが、どうしても時々プルプル震えてしまいます。というわけで、Arduinoで再チャレンジ!
公式サイトのチュートリアルを参考にしてコードを書きます。ポテンションメータがなかったので、トグルスイッチで代用しています。
https://www.arduino.cc/en/Tutorial/Button
https://www.arduino.cc/en/Tutorial/Knob
出来上がったコードはこんな感じ。スイッチがONの時、OFFの時、それぞれで180度、0度の位置まで回転します。
#include <Servo.h>
Servo myservo;
const int buttonPin = 2;
const int servoPin = 9;
const int ledPin = 13;
int buttonState = 0;
void setup() {
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
myservo.attach(servoPin);
}
void loop() {
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
digitalWrite(ledPin, HIGH);
myservo.write(0);
} else {
digitalWrite(ledPin, LOW);
myservo.write(180);
//delay(15);
}
}
配線図はこちら。図を描くのが面倒なので写真(^^; 右上の3本線がサーボ(SG90 MicroServo)に繋がっています。赤がVcc、黒がGND、緑(サーボ側が橙)がPWMです。
制御系はやっぱりArduinoの安定感が心地よいですね…。