|
|

楼主 |
发表于 2014-5-6 18:31:19
|
显示全部楼层
解决方案,换了一套红外接收代码,如下- #include <Adafruit_ssd1306syp.h>
- #define SDA_PIN 8
- #define SCL_PIN 9
- Adafruit_ssd1306syp display(SDA_PIN,SCL_PIN);
- #include <IRremote.h> // 使用IRRemote函数库
- const int irReceiverPin = 2; // 红外接收器的 OUTPUT 引脚接在 PIN2 接口 定义irReceiverPin变量为PIN2接口
- IRrecv irrecv(irReceiverPin); // 设置irReceiverPin定义的端口为红外信号接收端口
- decode_results results; // 定义results变量为红外结果存放位置
- int n; //整形变量n遥控器键位
- int level; //转速等级
- int mspeed; //电机转速
- void setup()
- {
- delay(1000);
- display.initialize();
- level=0;//assignment speed level
- mspeed=0;
- pinMode(5,OUTPUT);
- irrecv.enableIRIn(); // 启动红外解码
- Serial.begin(9600); // 开启串口,波特率为9600
- }
- void loop()
- {
- int mode;
- double T;
- T=(analogRead(A5)*0.488);//assignment temperature
- mode=1;//Mode number
- if (irrecv.decode(&results))
- { // 解码成功,把数据放入results变量中
- // 把数据输入到串口
- n=int(results.value);
- irrecv.resume(); // 继续等待接收下一组信号
- }
- mspeed=map(level,1,50,35,255);
-
- if(n==-23971)
- {
- Serial.println("CH-");
- level--;
- n=0;
- }
- else if(n==25245)
- {
- Serial.println("CH");
- level=0;
- n=0;
- }
- else if(n==-7651)
- {
- Serial.println("CH+");
- level++;
- n=0;
- }
- if(((level)==(0)))
- {
- mspeed=0;
- }
- analogWrite(5,mspeed);
- Serial.println(level);
- display.clear();
- display.setTextSize(1);
- display.setCursor(0,0);
- display.println("Temperature:");
- display.setTextSize(2);
- display.print(T);
- display.setTextSize(1);
- display.print("o");
- display.setTextSize(2);
- display.println("C");
- display.println("");
- display.setTextSize(1);
- display.print("Speed Level:");
- display.print(level);
- display.println("");
- display.setTextSize(1);
- display.println("");
- display.print("Mode:");
- display.print(mode);
- display.update();
- }
复制代码 |
|