问题描述
我们项目的目标是跟踪一个带有发射器 IR 的人,我们还有一个接收器和 2 个电机伺服器。第一个用于保存人的角度,第二个用于跟随人。 有必要知道我们有一个其他的发射器程序。 然而,角度的保存仍然是错误的,我们的第二个电机伺服不起作用。 当我们的接收器有结果时,我们希望第二个电机转到保存的最后一个角度。
#include <Servo.h>
#include <IRLibRecvPCI.h>
IRrecvPCI myReceiver(2);//pin number for the receiver
Servo monServo;
Servo monServo1;
void setup() {
Serial.begin(9600);
delay(2000); while (!Serial);
myReceiver.enableIRIn(); // Start the receiver
Serial.println(F("Ready to receive IR signals"));
monServo.attach(9);
monServo1.attach(7);// relier le servomoteur au port 9
monServo.write(0); // positionner le servomoteur à l'angle absolu 0°
}
int angle = 0;
int increment = 1;
void loop() {
monServo.write(angle);
angle = angle + increment;
if (angle == 0); increment = 1;
if (angle == 180); increment = -1;
if (myReceiver.getResults()) {
monServo1.write(angle);
Serial.print("detection");
myReceiver.enableIRIn();
Serial.println(monServo.read());
;
}
}
解决方法
if (angle == 0); increment = 1;
if (angle == 180); increment = -1;
相当于increment = -1;
这里有两个空的 if 语句。如果要有条件地更改增量值,请删除每行中的第一个分号。
您还应该添加一些延迟,因为您的伺服器将无法在几毫秒内移动 1°。
代码末尾还有一个多余的分号