附上代码
- //这段代码来自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还是老样子,是不是代码有问题,求解
|