#include <Servo.h>
#define SERVOPIN 3
#define POTPIN A0
#define SERVODELAY 10 //毫秒 等待Servo完成动作
Servo servo;
void swap(Servo myservo);//左右摇摆程序实例
void slide(Servo myservo); //Servo随着可调电阻动
void setup() {
Serial.begin(9600);
//servo.attach(pin, min, max)
// min, max. pulse width, in microseconds,
//default min=544 max=2400
//servo.attach(SERVOPIN);
servo.attach(SERVOPIN,500,2500); // SG90 全程0-
//判断Servo是否连接上了
Serial.print("Is Servo Attached? - ");
if (servo.attached()) {
Serial.println("Yes");
} else {
Serial.println("No");
}
//调整Servo角度的两种方法
servo.write(0); //角度
//servo.writeMicroseconds(2500); //PWM microsec
//返回当前Servo角度
Serial.print("Current Position - ");
Serial.print(servo.read());
Serial.println(" Degrees");
}
void loop() {
//左右摇摆程序实例
//swap(servo);
//Servo随着可调电阻动
//slide(servo);
}
//左右摇摆程序实例
void swap(Servo myservo) {
static int deg = 0; //记录当前角度
for (deg = 0; deg <= 180; deg++) {
myservo.write(deg); //写入当前角度
delay(SERVODELAY);
}
for (deg = 180; deg >= 0; deg--) {
myservo.write(deg); //写入当前角度
delay(SERVODELAY);
}
}
//Servo随着可调电阻动
void slide(Servo myservo) {
int val = 0;
val = analogRead(POTPIN); //反馈可调电阻度数 0 -
val = map(val, 0, 1023, 0, 180); //map度数到 0 -
myservo.write(val); //调整Servo角度
delay(SERVODELAY); //延迟等待servo完成动作
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
servo1:GND
servo1:V+
servo1:PWM
pot1:VCC
pot1:SIG
pot1:GND