前几天我的arduino2560mege还能正常使用,今天突然插电脑上电脑识别不出来,开发板上绿灯常亮,橙灯闪烁,设备管理器电脑上端口显示为灰色:代码45,没有这个设备。用别人的板子还能正常识别,线和电脑都没问题,初步判断是开发板的问题,只正确接过显示屏。
参考GPT和自己的思路:
首先,您可以尝试按以下步骤进行排解:
检查USB线是否正常连接开发板和电脑,可以尝试更换一根USB线再试。
检查电脑上的驱动程序是否正确安装。可以尝试重新安装驱动程序再试。
在设备管理器中查看是否有未识别的设备,如果有的话,可以尝试卸载该设备并重新插拔开发板。
尝试在另一台电脑上连接该开发板,看是否可以被识别。
如果以上方法均无效,则很可能是开发板本身的问题。此时建议将该开发板送回厂家维修或更换。
不知道你这个问题是否已经解决, 如果还没有解决的话:/*
* FFA25D CH-
* FF629D CH
* FFE21D CH+
* FF22DD PREV
* FF02FD NEXT
* FFC23D PLAY/PAUSE
* FFE01F -
* FFA857 +
* FF906F EQ
* FF6897 0
* FF30CF 1
* FF18E7 2
* FF7A85 3
* FF10EF 4
* FF38C7 5
* FF5AA5 6
* FF42BD 7
* FF4AB5 8
* FF52AD 9
* FF9867 100+
* FFB04F 200+
*/
我手里的遥控器有好几个,但是应该都是NEC编码的遥控器为了测试这个解析是否可以解析其它格式的红外波我用我的华为手机(对我的手机具备万能遥控器的功能)简单测了一下其它格式比如SONY协议红外也是客户以识别的,我前几天看了正点原子的解析函数也挺复杂的感觉,而且只是解析了一种编码格式。
其实这里解析也不是百分之百准确有的时候你按键按下的时候程序会识别错,甚至认为是其它编码的格式,当你重复按下这个按键的时候它会解读为FFFFFFFF
写按键处理的函数时候这个情况要考虑进去是否支持按着不松的情况。
/*
* IRrecvDemo
* 目前按键没有做连续按键的检测
*/
/*
* FFA25D CH-
* FF629D CH
* FFE21D CH+
* FF22DD PREV
* FF02FD NEXT
* FFC23D PLAY/PAUSE
* FFE01F -
* FFA857 +
* FF906F EQ
* FF6897 0
* FF30CF 1
* FF18E7 2
* FF7A85 3
* FF10EF 4
* FF38C7 5
* FF5AA5 6
* FF42BD 7
* FF4AB5 8
* FF52AD 9
* FF9867 100+
* FFB04F 200+
*/
#include <IRremote.h>
int RECV_PIN = 11; /*红外接收的信号输入引脚*/
int RED_LED = 10;
int UNO_LED = 13;
IRrecv irrecv(RECV_PIN);/*创建红外接收的一个对象*/
IRsend irsend; /*定义 IRsend 物件来发射红外线讯号*/
// 头文件已经定义PIN 3为信号输出
// 所以只能连接PIN 3 ,若更改请在头文件更改
//irsend.sendNEC(0xFF02FD, 32); //这里的FF02FD编码
decode_results results; /*解析的一个结果放在decode_results构造的对象中去*/
void setup()
{
Serial.begin(115200);/*串口波特率初始化*/
irrecv.enableIRIn(); /*开始接收红外信号*/
pinMode(UNO_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
digitalWrite(UNO_LED, HIGH);/*低电平驱动的方式点亮LED*/
digitalWrite(RED_LED, LOW); /*高定平驱动的方式点亮LED*/
}
/*
* 显示红外线协定种类
* 显示红外键值HEX格式
* 显示红外码元数bits
* 传入参数是对象指针
*/
void ShowIRProtocol(decode_results *results)
{
Serial.println("您输入的红外协议参数如下 ");
switch(results->decode_type)
{
case NEC:
Serial.println("NEC协议红外");
break;
case SONY:
Serial.println("SONY协议红外");
break;
case RC5:
Serial.println("RC5协议红外");
break;
case RC6:
Serial.println("RC6协议红外");
break;
default:
Serial.println("Unknown encoding ...");
}
Serial.print("红外键值是hex:");
Serial.println(results->value,HEX); /*十六进制输出红外键值*/
Serial.print("红外键码元bit:");
Serial.println(results->bits); /*默认是十进制输出*/
}
/*
* 红外控制函数
* 函数说明:
* 传入红外键值
* 执行对应动作
*/
void IR_Contrl(unsigned int key_val)
{
switch(key_val)
{
case 0xFFA25D:
Serial.println("CH-");
break;
case 0xFF629D:
Serial.println("CH");
break;
case 0xFFE21D:
Serial.println("CH+");
break;
case 0xFF22DD:
Serial.println("PREV");
break;
case 0xFF02FD:
Serial.println("NEXT");
break;
case 0xFFC23D:
Serial.println("PLAY/PAUSE");
break;
case 0xFFE01F:
Serial.println("-");
break;
case 0xFFA857:
Serial.println("+");
break;
case 0xFF906F:
Serial.println("EQ");
break;
case 0xFF6897:
Serial.println("0");
break;
case 0xFF30CF:
Serial.println("1");
break;
case 0xFF18E7:
Serial.println("2");
break;
case 0xFF7A85:
Serial.println("3");
break;
case 0xFF10EF:
Serial.println("4");
break;
case 0xFF38C7:
Serial.println("5");
break;
case 0xFF5AA5:
Serial.println("6");
break;
case 0xFF42BD:
Serial.println("7");
break;
case 0xFF4AB5:
Serial.println("8");
break;
case 0xFF52AD:
Serial.println("9");
break;
case 0xFF9867:
Serial.println("100+");
break;
case 0xFFB04F:
Serial.println("200+");
break;
}
}
void loop()
{
if (irrecv.decode(&results)) /*收到一组红外信号用decode进行解码*/
{
//ShowIRProtocol(&results);
IR_Contrl(results.value);
irrecv.resume(); /*准备下一次接收红外信号*/
}
delay(100);
}