MoonShine 发表于 2015-8-21 09:44:40

红外线控制舵机,舵机在反方向一直运动

附上代码
//这段代码来自IRremote库中examples中的 IRrecvDemo
#include <IRremote.h>          //调用IRremote.h库
int RECV_PIN = 12;             //定义RECV_PIN变量为12
IRrecv irrecv(RECV_PIN);       //设置RECV_PIN(也就是12引脚)为红外接收端
decode_results results;      //定义results变量为红外结果存放位置


int ledPin=11;
boolean ledState = LOW;

#include <Servo.h>    // 声明调用Servo.h库
Servo myservo;      // 创建一个舵机对象
int pos = 0;          // 变量pos用来存储舵机位置


void setup(){
   Serial.begin(9600);          //串口波特率设为9600
   irrecv.enableIRIn();         //启动红外解码
   
   pinMode(ledPin,OUTPUT);
   myservo.attach(10);// 将引脚10上的舵机与声明的舵机对象连接起来
}

void loop() {
   //是否接收到解码数据,把接收到的数据存储在变量results中
   if (irrecv.decode(&results)) {
            //接收到的数据以16进制的方式在串口输出
            Serial.println(results.value, HEX);
            //switch方法
         int sensorValue =results.value;
          switch(sensorValue){
         case 0XFD08F7:
         ledState = HIGH;
         digitalWrite(ledPin,ledState);    //改变LED相应状态
         for(pos = 1; pos < 180; pos += 1){    // 舵机从0°转到180°,每次增加1°         
            myservo.write(pos);         // 给舵机写入角度   
            delay(15);                  // 延时15ms让舵机转到指定位置
         }
         break;
         
            case 0XFD8877:
            ledState = LOW;
         digitalWrite(ledPin,ledState);    //改变LED相应状态
            for(pos = 180; pos>=1; pos-=1) {    // 舵机从180°转回到0°,每次减小1°                              
             myservo.write(pos);      // 写角度到舵机   
             delay(15);               // 延时15ms让舵机转到指定位置
            }
         break;
         
          }   
            irrecv.resume();// 继续等待接收下一组信号
      }
}再按一次1又恢复了原样,但是按2还是老样子,是不是代码有问题,求解



luna 发表于 2015-8-21 11:53:03

你好,如果有技术问题你可以加DFRobot -Arduino的qq群(150455368)进行咨询,会有技术支持帮你解答,谢谢你的关注。
页: [1]
查看完整版本: 红外线控制舵机,舵机在反方向一直运动