Arduino 伺服无限旋转时,我希望它这样做只有一次
我对Arduino很陌生。我想做一个简单的设置,其中,按下遥控器上的按钮将使伺服旋转90度并返回到0 这是我的密码:Arduino 伺服无限旋转时,我希望它这样做只有一次,arduino,arduino-uno,arduino-ide,Arduino,Arduino Uno,Arduino Ide,我对Arduino很陌生。我想做一个简单的设置,其中,按下遥控器上的按钮将使伺服旋转90度并返回到0 这是我的密码: #include <Servo.h> #include <IRremote.h> int receiver = 13; IRrecv irrecv(receiver); decode_results results; Servo myServo; int pos = 0; void setup() { // put your setup code he
#include <Servo.h>
#include <IRremote.h>
int receiver = 13;
IRrecv irrecv(receiver);
decode_results results;
Servo myServo;
int pos = 0;
void setup() {
// put your setup code here, to run once:
myServo.attach(9);
Serial.begin(9600);
irrecv.enableIRIn();
myServo.write(0);
delay(200);
}
void loop() {
// put your main code here, to run repeatedly:
if (irrecv.decode(&results)){
if (results.value== 0xC0000C){
for (pos = 0; pos <= 90; pos += 1) {
// in steps of 1 degree
myServo.write(pos);
delay(15);
}
for (pos = 90; pos >= 0; pos -= 1) {
myServo.write(pos);
delay(15);
}
}
}
delay(100);
}
#包括
#包括
int接收器=13;
IRECV IRECV(接收器);
解码_结果;
伺服myServo;
int pos=0;
无效设置(){
//将安装代码放在此处,以便运行一次:
附件(9);
Serial.begin(9600);
依那普利();
myServo.write(0);
延迟(200);
}
void循环(){
//将主代码放在此处,以便重复运行:
if(解码和结果)){
如果(结果值==0xC0000C){
对于(pos=0;pos=0;pos-=1){
myServo.write(pos);
延误(15);
}
}
}
延迟(100);
}
但是,当我按下指定的按钮时,伺服会从0到90度一直摆动,然后无限地返回,但每次按下按钮时,我只希望它这样做一次。怎么做?您需要添加行
irrecv.resume();
在最后的延迟之前结束if循环,以便清除结果并开始寻找新信号
void loop() {
// put your main code here, to run repeatedly:
if (irrecv.decode(&results)){
if (results.value== 0xC0000C){
for (pos = 0; pos <= 90; pos += 1) {
// in steps of 1 degree
myServo.write(pos);
delay(15);
}
for (pos = 90; pos >= 0; pos -= 1) {
myServo.write(pos);
delay(15);
}
}
}
irrecv.resume();
delay(100);
}
void循环(){
//将主代码放在此处,以便重复运行:
if(解码和结果)){
如果(结果值==0xC0000C){
对于(pos=0;pos=0;pos-=1){
myServo.write(pos);
延误(15);
}
}
}
简历();
延迟(100);
}