【EV Board (MM32L0136C7P)测评】红外遥控器
仔细看这块板子的外设中还蕴藏这两个东西,一个红外发射管,一个是红外接收管。我们可以利用这两个管子做遥控器了。
原理图上的管脚。
我们利用irm例程中的ask例程。
我们都知道红外发射需要载波的,这里使用了定时器进行发生。
其发射例子比较简单,就是一发一收的,所以我们用手机可以开摄像头观察。
然后我们在其基础上进行修改,主要就是按照自己电器需要的逻辑进行变换。
uint8_t AUX_ON={0xC3,0x97,0xE0,0x00,0xA0,0x00,0x20,0x00,0x00,0x20,0x00,0x05,0x00};
void irm_start()
{
IRM_WriteBit(BOARD_IRM_PORT, 1u);
delay_ms(9);
IRM_WriteBit(BOARD_IRM_PORT, 0u);
delay_us(4500);
}
void irm_stop()
{
IRM_WriteBit(BOARD_IRM_PORT, 1u);
delay_us(900);
IRM_WriteBit(BOARD_IRM_PORT, 0u);
}
void irm_write_0()
{
IRM_WriteBit(BOARD_IRM_PORT, 1u);
delay_us(560);
IRM_WriteBit(BOARD_IRM_PORT, 0u);
delay_us(560);
}
void irm_write_1()
{
IRM_WriteBit(BOARD_IRM_PORT, 1u);
delay_us(560);
IRM_WriteBit(BOARD_IRM_PORT, 0u);
delay_us(1690);
}
void irm_send(uint8_t *s,int n)
{
uint8_t i,j,temp;
irm_start();
for(i=0;i<n;i++)
{
for(j=0;j<8;j++)
{
temp=(s>>j)&0x01;
if(temp==0)//发射0
{
irm_write_0();
}
if(temp==1)//发射1
{
irm_write_1();
}
}
}
irm_stop();
}
void AUX_SET_HOT()
{
uint8_t i;
uint8_t checksum = 0;
uint8_t checksum_Two = 0;
for (i = 0; i < 12; i++)
{
checksum += AUX_ON;
}
AUX_ON = checksum;
irm_send(AUX_ON,13);
}
我设备的协议这样,所以就按照上面进行发送即可,我们可以通过逻辑分析仪看其状态。
整个发送流程都是按照上面来的。
其方波频率也是对的,所以测试也是可以通过的。
学习啦,感谢分享 有空调的编码原理的吗? loutin 发表于 2023-1-5 11:51
有空调的编码原理的吗?
空调有什么编码原理 怎么确定要传递的数据是我们所需要的数据呢? robincotton 发表于 2023-1-6 17:00
怎么确定要传递的数据是我们所需要的数据呢?
逻辑分析仪,根据协议来说,按照标准的时序就可以了 这个是自定义的时长的吗? 这个可以做遥控器 了。 这个送的过程好复杂呢。 这个的红外通信的格式是什么? 红外编码的原理在哪里看到的? 做物联网控制的首选通信协议了。 33Khz的频率怎么产生的呢?
页:
[1]