#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
#include <Servo.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
#define SERVOMIN 150
#define SERVOMAX 600
int val;
int val1;
int val2;
int val3,val4;
int val5,val6;
void setup() {
Serial.begin(57600);
pwm.begin();
pwm.setPWMFreq(60); // 在~ 60赫兹更新运行模拟伺服系统
}
void setServoPulse(uint8_t n, double pulse) {
double pulselength;
pulselength = 1000000;
pulselength /= 60;
Serial.print(pulselength); Serial.println(" 1");
pulselength /= 4096;
Serial.print(pulselength); Serial.println(" 1");
pulse *= 1000; //pulse=pulse*1000
pulse /= pulselength; //pulse=pulse/pulselength
Serial.println(pulse);
pwm.setPWM(n, 0, pulse);
}
void a1(){
val = analogRead(A1); //读取电位器控制的模拟值 (范围在0-647,建议取值646)
val1 = map(val, 0, 646, 150, 600);
val2 = map(val, 0, 646, 600, 150);
pwm.setPWM(0, 0, val1);
pwm.setPWM(1, 0, val2);
}
void a2(){
val3=analogRead(A0);
val4 = map(val3, 0, 646, 150, 600);
pwm.setPWM(2, 0, val4);
}
void a3(){
val5=analogRead(A2);
val6 = map(val5, 0, 646, 150, 600);
pwm.setPWM(3, 0, val6);
}
void loop() {
a1();
a2();
a3();
delay(20);
新手一枚,求问代码中的150和600是怎么得来的呢?? |