Arduino 我无法让欧文从远程图书馆去工作

Arduino 我无法让欧文从远程图书馆去工作,arduino,arduino-mkr1000,Arduino,Arduino Mkr1000,您好,我使用的是arduino mkr1000,因此使用IRremote库发送和接收信号。我和艾森德有问题 首先,我使用IRdump示例从远程按钮获取数据。当我完成这项工作时,我尝试了IRsend示例,但它似乎不起作用 我临时用一个普通的LED来代替它,以显示它是否真的在闪烁,但它不是。我已经测试了它们工作的普通LED和IR LED 我还认为我已根据示例正确连接LED 引脚3->发光二极管->电阻->接地 当我上传一个使电路闪烁的草图时,我的电路被进一步确认是正确的 基本上,我试图发送一个NEC

您好,我使用的是arduino mkr1000,因此使用IRremote库发送和接收信号。我和艾森德有问题

首先,我使用IRdump示例从远程按钮获取数据。当我完成这项工作时,我尝试了IRsend示例,但它似乎不起作用

我临时用一个普通的LED来代替它,以显示它是否真的在闪烁,但它不是。我已经测试了它们工作的普通LED和IR LED

我还认为我已根据示例正确连接LED

引脚3->发光二极管->电阻->接地

当我上传一个使电路闪烁的草图时,我的电路被进一步确认是正确的

基本上,我试图发送一个NEC 32位信号0x2FD807F

但我猜他们没能完成mkr1000的发送库

在一篇评论中,作者使用了一段代码,但实际上并没有关于如何使用它的任何细节

这就是我目前所在的位置

intir\us=3;
无效设置()
{
pinMode(红外,输出);
}
void循环(){
IR_发送代码(0x2FD807F);
延迟(1000);
}
void IR_Send38KHZ(int x,int位)//产生38KHZ红外脉冲
{      
对于(int i=0;i1;
}  

}
我在等待回复时创建了自己的代码。我已经完成并测试了它。理论上,它应该可以在任何arduino上运行

/*
这是NEC红外传输协议发送器的代码
NEC规格为
~载波频率为38kHz
*逻辑“0”-一个562.5µs脉冲突发,随后是562.5µs空间,总传输时间为1.125ms
*逻辑“1”-562.5µs脉冲突发,随后是1.6875ms空间,总传输时间为2.25ms
-9ms超前脉冲串(逻辑数据位使用的脉冲串长度的16倍)
-4.5毫秒的空间
-接收设备的8位地址
-地址的8位逻辑倒数
-8位命令
-命令的8位逻辑逆
-最后一个562.5µs脉冲突发,表示消息传输结束。
例子,
如果从IRemote库的数据转储接收到的代码为0x2FD807F
-0x02是地址
-0xFD是反向地址
-0x80是命令
-0x7F是反向命令
这个程序是一个阻塞程序
*/
#定义IR 3
#定义CarrierFreqInterval 11
无效设置(){
pinMode(红外,输出);
数字写入(红外,低电平);
}
void循环(){
//无符号长启动=微秒();
发送(0x02FD807F);
//无符号长端=微米();
//无符号长增量=结束-开始;
//序列号println(delta);
延迟(500);
}
无效传输(uint32_t数据){
//用于传输数据的函数
uint32\u t比特数=0x8000000;
//9ms脉冲群
对于(int i=0;i<355;i++){
数字写入(红外,高);
延迟微秒(CarrierReqInterval);
数字写入(红外,低电平);
延迟微秒(CarrierReqInterval);
}
//4.5ms空间
延迟微秒(4500);
//8位地址、地址反转、命令、命令反转
while(比特数!=0b0){
if((数据和位计数)=位计数){
脉冲高();
}
否则{
脉冲流();
}
比特计数=比特计数>>1;
}
//最终脉冲群
对于(int i=0;i<21;i++){
数字写入(红外,高);
延迟微秒(CarrierReqInterval);
数字写入(红外,低电平);
延迟微秒(CarrierReqInterval);
}
}
无效脉冲高(){
//脉冲38KHz适用于逻辑“1”
对于(int i=0;i<21;i++){
数字写入(红外,高);
延迟微秒(CarrierReqInterval);
数字写入(红外,低电平);
延迟微秒(CarrierReqInterval);
}
延迟(1);
延迟微秒(687.5);
}
void pulseLOW(){
//脉冲38KHz适用于逻辑“0”
对于(int i=0;i<21;i++){
数字写入(红外,高);
延迟微秒(CarrierReqInterval);
数字写入(红外,低电平);
延迟微秒(CarrierReqInterval);
}
延迟微秒(562.5);

}
我在等待回复时创建了自己的代码。我已经完成并测试了它。理论上,它应该可以在任何arduino上运行

/*
这是NEC红外传输协议发送器的代码
NEC规格为
~载波频率为38kHz
*逻辑“0”-一个562.5µs脉冲突发,随后是562.5µs空间,总传输时间为1.125ms
*逻辑“1”-562.5µs脉冲突发,随后是1.6875ms空间,总传输时间为2.25ms
-9ms超前脉冲串(逻辑数据位使用的脉冲串长度的16倍)
-4.5毫秒的空间
-接收设备的8位地址
-地址的8位逻辑倒数
-8位命令
-命令的8位逻辑逆
-最后一个562.5µs脉冲突发,表示消息传输结束。
例子,
如果从IRemote库的数据转储接收到的代码为0x2FD807F
-0x02是地址
-0xFD是反向地址
-0x80是命令
-0x7F是反向命令
这个程序是一个阻塞程序
*/
#定义IR 3
#定义CarrierFreqInterval 11
无效设置(){
pinMode(红外,输出);
数字写入(红外,低电平);
}
void循环(){
//无符号长启动=微秒();
发送(0x02FD807F);
//无符号长端=微米();
//无符号长增量=结束-开始;
//序列号println(delta);
延迟(500);
}
无效传输(uint32_t数据){
//用于传输数据的函数
uint32\u t比特数=0x8000000;
//9ms脉冲群
对于(int i=0;i<355;i++){
数字写入(红外,高);
延迟微秒(CarrierReqInterval);
数字写入(红外,低电平);
延迟微秒(CarrierReqInterval);
}
//4.5ms空间
延迟微秒(4500);
//8位地址、地址反转、命令、命令反转
while(比特数!=0b0){
if((数据和位计数)=位计数){
脉冲高();
}
否则{
脉冲流();
}
比特计数=比特计数>>1;
}
//决赛