M61-32S 红外遥控

[复制链接]
查看215 | 回复9 | 2024-7-7 02:05:16 | 显示全部楼层 |阅读模式
今天给大家分享一个M61接收红外信号的代码。群里一直说SDK有更新,可是我在github找不到一点。 然后目前使用的SDK是BL的SDK,昨天晚上才拉下来的。

360截图20240707015824.jpg


在上述文件夹下,提供了一个example关于如何使用IR的。 也就是下图的这个库

360截图20240707015944.jpg


但是群友可能并没有那么多BL的芯片,M61,32S的芯片是BL616(可以使用不同的编译命令编译不同的芯片固件). 所以我这边在它的代码上面加以修改使其可以烧录后直接通过红外遥控可以控制LED的闪烁(M61,BL616)

实验效果是每次按下遥控器按键的话,那么会toggle 蓝色led,同时串口输出数据

360截图20240707020245.jpg



代码如下:
  1. #include "board.h"
  2. #include "bflb_ir.h"
  3. #include "bflb_gpio.h"
  4. #include "bl616_glb.h"
  5. #ifdef BL616
  6. #define TEST_IR_RX
  7. #endif

  8. struct bflb_device_s *irrx;

  9. struct bflb_device_s *gpio;

  10. void toggle_gpio(void)
  11. {
  12.     static int state = 1;

  13.     if (state)
  14.     {
  15.         bflb_gpio_set(gpio, GPIO_PIN_15);
  16.         state = 0;
  17.     }
  18.     else
  19.     {
  20.         bflb_gpio_reset(gpio, GPIO_PIN_15);
  21.         state = 1;
  22.     }
  23. }
  24. /* main */
  25. int main(void)
  26. {
  27.     board_init();
  28.     gpio = bflb_device_get_by_name("gpio");
  29.     // 初始化GPIO PIN
  30.     bflb_gpio_init(gpio, 11, (1 << 5) | (1 << (11)) | (0 << (12)));
  31.     // 设置IR的接收或者发送PIN
  32.     GLB_IR_RX_GPIO_Sel((11));

  33.     // 初始化LED
  34.     bflb_gpio_init(gpio, GPIO_PIN_15, GPIO_OUTPUT | GPIO_PULLUP);
  35.     uint64_t rx_data;
  36.     uint8_t rx_len;
  37.     // 配置红外接收
  38.     struct bflb_ir_rx_config_s rx_cfg;
  39.     irrx = bflb_device_get_by_name("irrx");

  40.     /* RX init */
  41.     rx_cfg.rx_mode = IR_RX_NEC;
  42.     // 数据校验, 必须开启 0x00 反转后为0xff
  43.     rx_cfg.input_inverse = true;
  44.     // 滤波
  45.     rx_cfg.deglitch_enable = false;
  46.     bflb_ir_rx_init(irrx, &rx_cfg);

  47.     // 开启接收
  48.     bflb_ir_rx_enable(irrx, true);

  49.     while (1)
  50.     {

  51.         /* Receive */
  52.         rx_len = bflb_ir_receive(irrx, &rx_data);
  53.         printf("Receive bit: %d, value: 0x%x\r\n", rx_len, rx_data);
  54.         printf("%d", ((rx_data & 0xff000000) >> 24));
  55.         if (((rx_data & 0xff000000) >> 24) == 0xba)
  56.         {
  57.             toggle_gpio();
  58.         }
  59.     }
  60. }
复制代码


工程文件我就不贴了,因为你需要根据你自己的环境设置SDK的目录,不如直接拷贝这个代码去运行



回复

使用道具 举报

lsrly | 2024-7-7 09:40:18 | 显示全部楼层
好好学习,努力挣钱,专心
回复

使用道具 举报

iiv | 2024-7-7 10:06:01 | 显示全部楼层
回复

使用道具 举报

bzhou830 | 2024-7-7 12:29:59 | 显示全部楼层
王哥厉害
选择去发光,而不是被照亮
回复

使用道具 举报

1084504793 | 2024-7-7 12:40:59 | 显示全部楼层
回复

使用道具 举报

一只呆头鹅 | 2024-7-7 13:38:23 | 显示全部楼层
厉害了
回复

使用道具 举报

lazy | 2024-7-7 15:21:35 | 显示全部楼层

厉害

回复 支持 反对

使用道具 举报

爱笑 | 2024-7-8 08:58:53 | 显示全部楼层
王哥厉害!
用心做好保姆工作
回复

使用道具 举报

WT_0213 | 2024-7-8 10:53:18 | 显示全部楼层
回复

使用道具 举报

WildboarG | 2024-7-20 23:32:19 来自手机 | 显示全部楼层
🐮
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则