#include <Servo.h>
Servo myservo;
Servo myservo2;
int pos = 90; // 初始位置在中间
int mode = 1; // 控制模式,0表示使用原程序,1表示使用电位计
const byte analogPin = A0;
void setup() {
myservo.attach(9); // 将伺服马达连接到数字引脚9
myservo.write(pos); // 将马达初始化到中间位置
myservo2.attach(6); // 将伺服马达连接到数字引脚9
myservo2.write(pos);
pinMode(A0, INPUT); // 设置A0引脚为输入
Serial.begin(9600); // 设置串口的速度为9600bps
}
void loop() {
if (mode == 0) {
for (pos = 90; pos >= 60; pos -= 1) {
myservo.write(pos);
myservo2.write(90+(90-pos));
delay(20);
}
delay(100);
for (pos = 90; pos <= 120; pos += 1) {
myservo.write(pos);
myservo2.write(90-(pos-90));
delay(20);
}
delay(100);
} else if (mode == 1) {
int sensorValue = analogRead(analogPin); // 读取电位计的值
Serial.print("Sensor value: ");
Serial.println(sensorValue); // 将读取到的值以十进制的形式打印出来
delay(100); // 等待10毫秒,等待马达到位
float angle = map(sensorValue, 0, 1023, -30, 30); // 将电位计的值映射到角度范围内
//float angle = ((float)sensorValue / 1023.0) * 60.0 - 30.0;
myservo.write(angle + 90);
myservo2.write(90 - angle);
delay(10); // 等待10毫秒,等待马达到位
}
}
// 根据串口输入的值,设置控制模式
void serialEvent() {
while (Serial.available()) {
char c = Serial.read();
if (c == '0') {
mode = 0; // 使用原程序控制马达
} else if (c == '1') {
mode = 1; // 使用电位计控制马达
}
}
}