注意:为防止电脑 USB 供电不足导致下载完成后,开发板不断重启,推荐使用独立电源板供电,或者,下载时将 RGB 板取下,下载完成后再接上。
开发者需要重点关注三个函数setup(),loop()与 dp_download_handle()
void setup() {
pinMode(PC13, INPUT); //配网初始化
mySerial.begin(9600); //软件串口初始化
mySerial.println("myserial init successful!");
Serial.begin(115200); //PA3 RX PA2 TX
Serial.println("serial init successful!\r\n");
light_data_int(); //RGB冷暖灯初始化
IIC_Init(); //IIC初始化用于驱动RGB灯
delay(10);
rgb_init(0, 0, 0);
wifi_protocol_init(); //协议串口初始化函数
timer_init(); //定时器初始化
Hue_shade_start(&a);
}
void loop() {
if (init_flag == 0) {
time_cnt++;
if (time_cnt % 6000 == 0) {
time_cnt = 0;
cnt ++;
}
wifi_stat_led(&cnt); //WI-FI状态处理
}
wifi_uart_service(); //WI-FI串口处理服务
myserialEvent(); //串口接收处理
key_scan(); //重置配网按键检测
}
/*****************************************************************************
函数名称 : dp_download_handle
功能描述 : dp下发处理函数
输入参数 : dpid:DP序号
value:dp数据缓冲区地址
length:dp数据长度
返回参数 : 成功返回:SUCCESS/失败返回:ERRO
使用说明 : 该函数用户不能修改
*****************************************************************************/
unsigned char dp_download_handle(unsigned char dpid, const unsigned char value[], unsigned short length)
{
/*********************************
当前函数处理可下发/可上报数据调用
具体函数内需要实现下发数据处理
完成用需要将处理结果反馈至APP端,否则APP会认为下发失败
***********************************/
unsigned char ret;
printf("dpid = %d\r\n", dpid);
switch (dpid)
{
case DPID_SWITCH_LED:
//开关处理函数
ret = dp_download_switch_led_handle(value, length);
break;
case DPID_WORK_MODE:
//模式处理函数
ret = dp_download_work_mode_handle(value, length);
break;
case DPID_BRIGHT_VALUE:
//白光亮度处理函数
ret = dp_download_bright_value_handle(value, length);
break;
case DPID_TEMP_VALUE:
//白光色温处理函数
ret = dp_download_temp_value_handle(value, length);
break;
case DPID_COLOUR_DATA:
//彩光颜色处理函数
ret = dp_download_colour_data_handle(value, length);
break;
case DPID_CONTROL_DATA:
//调节处理函数
ret = dp_download_control_data_handle(value, length);
break;
default:
break;
}
return ret;
}
/*****************************************************************************
函数名称 : dp_download_handle
功能描述 : dp下发处理函数
输入参数 : dpid:DP序号
value:dp数据缓冲区地址
length:dp数据长度
返回参数 : 成功返回:SUCCESS/失败返回:ERRO
使用说明 : 该函数用户不能修改
*****************************************************************************/
unsigned char dp_download_handle(unsigned char dpid, const unsigned char value[], unsigned short length)
{
/*********************************
当前函数处理可下发/可上报数据调用
具体函数内需要实现下发数据处理
完成用需要将处理结果反馈至APP端,否则APP会认为下发失败
***********************************/
unsigned char ret;
printf("dpid = %d\r\n", dpid);
switch (dpid)
{
case DPID_SWITCH_LED:
//开关处理函数
ret = dp_download_switch_led_handle(value, length);
break;
case DPID_WORK_MODE:
//模式处理函数
ret = dp_download_work_mode_handle(value, length);
break;
case DPID_BRIGHT_VALUE:
//白光亮度处理函数
ret = dp_download_bright_value_handle(value, length);
break;
case DPID_TEMP_VALUE:
//白光色温处理函数
ret = dp_download_temp_value_handle(value, length);
break;
case DPID_COLOUR_DATA:
//彩光颜色处理函数
ret = dp_download_colour_data_handle(value, length);
break;
case DPID_CONTROL_DATA:
//调节处理函数
ret = dp_download_control_data_handle(value, length);
break;
default:
break;
}
return ret;
}
面板RGB数据处理函数 | dp_download_colour_data_handle() |
---|---|
面板冷光数据处理函数 | dp_download_bright_value_handle() |
面板暖光数据处理函数 | dp_download_temp_value_handle() |
云端下发的颜色数据为 HSV 格式我们需要将其转化为 RGB 格式,并对 RGB 数据修正,即得到正确的 RGB 值供显示
RGB 调光部分几个重要API:
HSV转RGB接口 | hsv2rgb(); |
---|---|
RGB数据修正接口 | tuya_light_gamma_adjust(); |
RGB颜色设置接口 | rgb_init(); |
具体实现细节可查看 Demo
由于涂鸦三明治开发板编程采用 Arduino 标准API,Arduino-API 使用方法开发者可参考以下网址:
ArduinoIDE 也提供了 Demo 来演示相关 API 的用法
该内容对您有帮助吗?
是我要提建议