完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
来开始实现 66220透传 智能控制文件照明场景,使用通讯到两个工程(uart_profile_server_demo和ble_uart_profile_client_demo) 要控制板子上的RGB灯来演示,需要添加Packages中的drv_light 修改init.c文件 ''' #include #include #include #include #include #include <设备/设备列表.h> #include #include "pin_name.h" #include "app_init.h" #include "../app_main.h" #include #include “drv_light.h” const char *TAG = "初始化"; #IFndef CONSOLE_IDX #define CONSOLE_IDX 0 #万一 静态 init_flag = 1; #define ON 1 #define 关闭 0 静态 pwm_dev_t pmw_light[3]; 静态 pwm_port_func_t pwm_channel_config[] = { {PIN_LED_R,PIN_LED_R_CHANNEL,PWM_LED_R_PORT}, {PIN_LED_G,PIN_LED_G_CHANNEL,PWM_LED_G_PORT}, {PIN_LED_B,PIN_LED_B_CHANNEL,PWM_LED_B_PORT}, }; 静态 led_light_cfg_t led_light_config[] = { LED_LIGHT_MODEL(RGB_LIGHT, &pwm_channel_config[0], LOW_LIGHT, &pmw_light[0], 3) }; 静态无效_led_init(无效) { 如果(初始化标志){ led_light_init(led_light_config); 初始化标志 = 0; } } 静态无效_led_set(bool on,uint8_t r_s,uint8_t g_s,uint8_t b_s,uint8_t r_a,uint8_t g_a,uint8_t b_a) { 结构 genie_rgb_op rgb_config; 如果(开){ rgb_config.rgb_config[0].power_switch = r_s; rgb_config.rgb_config[1].power_switch = g_s; rgb_config.rgb_config[2].power_switch = b_s; rgb_config.rgb_config[0].led_actual = r_a; rgb_config.rgb_config[1].led_actual = g_a; rgb_config.rgb_config[2].led_actual = b_a; }别的 { rgb_config.rgb_config[0].power_switch = 0; rgb_config.rgb_config[1].power_switch = 0; rgb_config.rgb_config[2].power_switch = 0; rgb_config.rgb_config[0].led_actual = 0; rgb_config.rgb_config[1].led_actual = 0; rgb_config.rgb_config[2].led_actual = 0; } led_light_control((void *)&rgb_config); } 无效 app_set_led_state(int 状态) { _led_init(); 开关(状态){ 案例 LED_OFF: _led_set(OFF,OFF,OFF,OFF,0,0,0); 休息; 案例 LED_ON: _led_set(开,开,开,开,255,255,255); 休息; 案例 LED_ATTENTION_ON: _led_set(ON,ON,OFF,OFF,255,0,0); 休息; 案例 LED_ATTENTION_OFF: _led_set(OFF,OFF,OFF,OFF,0,0,0); 休息; 案例 LED_UNPROVED: _led_set(ON,OFF,ON,OFF,0,255,0); 休息; 案例 LED_PROVED: _led_set(ON,OFF,OFF,ON,0,0,255); 休息; 默认: _led_set(OFF,OFF,OFF,OFF,0,0,0); 休息; } /* LED 灯一直在工作,无需关闭。*/ //led_close(led_dev); } 无效 board_yoc_init() { 诠释; board_init(); console_init(CONSOLE_UART_IDX, 115200, 0); ulog_init(); aos_set_log_level(AOS_LL_debug); /* 加载分区 */ ret = partition_init(); 如果(ret <= 0){ LOGE(TAG, "分区初始化失败"); } 别的 { LOGI(TAG, "找到 %d 个分区", ret); } /* kvfs 初始化 */ aos_kv_init("kv"); LOGI(TAG, "构建:%s,%s", __DATE__, __TIME__); } ''' 修改main.c ''' /* * 版权所有 (C) 2019-2020 阿里巴巴集团控股有限公司 */ #include #include #include #include "aos/ble.h" #include “app_main.h” #include "app_init.h" #include "pin_name.h" #include "common/log.h" #include "yoc/uart_client.h" #define TAG "UART 客户端" #define DEVICE_NAME "YoC UART 客户端" ble_uart_client_t g_uart_client; uart_handle_t g_uart_client_handler = NULL; aos_sem_t sync_sem; uint8_t g_scan_start_flag = 0; 静态无效 conn_change(ble_event_en 事件,无效 *event_data) { evt_data_gap_conn_change_t *e = (evt_data_gap_conn_change_t *)event_data; if (e->connected == CONNECTED) { connect_info_t 信息 = {0}; ble_stack_connect_info_get(e->conn_handle, &info); LOGI(TAG, "+CONNECTED:%02x:%02x:%02x:%02x:%02x:%02x,%02x", info.peer_addr.val[5], info.peer_addr.val[4], info.peer_addr.val[3]、info.peer_addr.val[2]、info.peer_addr.val[1]、info.peer_addr.val[0]、info.peer_addr.type); } 别的 { LOGI(TAG, "+DISCONNECTED:%02x", e->err); g_scan_start_flag = 0; } } 静态无效 mtu_exchange(ble_event_en 事件,无效 *event_data) { 逻辑(标签,“”); } 静态 int uart_client_profile_recv(const uint8_t *data, int length) { LOGI(TAG, "+DATA:%s", bt_hex(数据, 长度)); 返回0; } 静态 int user_event_callback(ble_event_en 事件,无效 *event_data) { 开关(事件){ //普通事件 案例 EVENT_GAP_CONN_CHANGE: conn_change(事件,事件数据); 休息; 案例 EVENT_GATT_MTU_EXCHANGE: mtu_exchange(事件,事件数据); 休息; 默认: 休息; } 返回0; } 主函数() { 诠释; init_param_t 初始化 = { .dev_name = 设备名称, .dev_addr = NULL, .conn_num_max = 1, }; board_yoc_init(); LOGI(TAG, "蓝牙 uart 客户端演示!"); aos_sem_new(&sync_sem, 0); ble_stack_init(&init); g_uart_client.uart_recv = uart_client_profile_recv; g_uart_client.uart_event_callback = user_event_callback; g_uart_client.client_data.client_conf.conn_def_on = 1; g_uart_client_handler = uart_client_init(&g_uart_client); 如果(!g_uart_client_handler){ LOGE(TAG, "init ble uart client demo failed"); } 整数总和 = 0; 字符数据[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; 字符数据2[3] = {0, 1, 2}; app_set_led_state(LED_OFF); 而(1){ 总和 = 总和 + 1 ; aos_sem_wait(&sync_sem, 2000); 如果(g_uart_client.conn_handle >= 0){ 如果(g_uart_client.client_data.uart_profile.notify_enabled){ //ret = uart_client_send(g_uart_client_handler, data, sizeof(data), NULL); 如果(总和%2==0){ ret = uart_client_send(g_uart_client_handler, data, sizeof(data), NULL); app_set_led_state(LED_OFF); } 别的 { ret = uart_client_send(g_uart_client_handler, data2, sizeof(data2), NULL); app_set_led_state(LED_ON); } 如果(返回){ LOGE(TAG, "发送数据失败"); } } } 别的 { 如果(!g_scan_start_flag){ ret = uart_client_scan_start(); 如果(返回){ LOGE(TAG, "扫描开始失败"); } 别的 { g_scan_start_flag = 1; } } } } 返回0; } ''' ble_uart_profile_server_demo项目中的注意事项修改一下,收到通知后触发RGB亮灭 PHY6220分别烧录后,就可以正常进行实时透传液晶指令控制照明了。 文章转载自:平头哥芯片开放社区作者:Spring123 |
|
相关推荐
|
|
只有小组成员才能发言,加入小组>>
【平头哥Sipeed LicheeRV 86开发板试用体验】Waft初体验
15749 浏览 1 评论
13801 浏览 4 评论
【平头哥Sipeed LicheeRV 86开发板试用体验】四、烧写waft系统&搭建waft测试环境
19713 浏览 2 评论
59204 浏览 19 评论
【限时福利】加入芯片开发社区,领100G电子工程师资料大礼包
88436 浏览 121 评论
邀请函 | 3月2日 来上海参加平头哥“玄铁RISC-V生态大会”
822浏览 0评论
读书分享会 | 玄铁RISC-V处理器入门与实战电子书免费下载!
723浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-22 17:44 , Processed in 0.675383 second(s), Total 65, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号