感谢电子发烧友论坛和武汉芯源所提供的CW32饭盒派开发板的测试机会。
上次我们介绍了如何处理机智云的事件并控制CW32饭盒派的硬件,不过当时只是完成了一个对LED灯的控制。今天完成一个控制LCD屏显示的例子,作为这个系列的结束。
上次我们介绍了在gizwitsEventProcess函数中处理机智云的事件。其中EVENT开头的事件都是用于配置设备的,这部分事件在机智云中通常被称为数据点。
在机智云的后台可以添加、删除或编辑这些数据点信息,如下图所示。像我们创建的设备属于灯带,它就包括R灯珠、G灯珠等控制颜色的数据点。数据点都是可以自定义的,非常方便用户设计个性化产品。
这些数据点也都可以在手机App上灵活设置,如下图所示。
饭盒派带有一块1.77寸的彩色液晶屏,160*128点阵大小。饭盒派在其“实验七 TFT彩屏实验”中提供了基本的驱动函数和示例程序。如果想在程序中使用其LCD显示功能,只需要把TFT目录中的内容加到工程中即可。
为了方便显示RGB颜色信息,我们在lcd_driver.h中添加如下RGB565宏,方便把RGB888颜色转换RGB565为:
#define
RGB565(r, g, b) (((r) >> 3) << 11 | ((g) >> 2) << 5 |
((b) >> 3))
最后介绍一下使用机智云的LCD屏幕绘制一个矩形区域,其颜色由机智云下发的R灯珠、G灯珠和B灯珠数据点决定。这里我们用了lcddriver.c中提供的一个函数Lcd_Clear_1,它在屏幕右下角用指定的颜色绘制一个小区域。
代码如下:
case EVENT_led_r:
currentDataPoint.valueled_r = dataPointPtr->valueled_r;
GIZWITS_LOG("Evt:EVENT_led_r %d\n",currentDataPoint.valueled_r);
Lcd_Clear_1(RGB565(currentDataPoint.valueled_r, currentDataPoint.valueled_g, currentDataPoint.valueled_b));
//user handle
break;
case EVENT_led_g:
currentDataPoint.valueled_g = dataPointPtr->valueled_g;
GIZWITS_LOG("Evt:EVENT_led_g %d\n",currentDataPoint.valueled_g);
//user handle
Lcd_Clear_1(RGB565(currentDataPoint.valueled_r, currentDataPoint.valueled_g, currentDataPoint.valueled_b));
break;
case EVENT_led_b:
currentDataPoint.valueled_b = dataPointPtr->valueled_b;
GIZWITS_LOG("Evt:EVENT_led_b %d\n",currentDataPoint.valueled_b);
//user handle
Lcd_Clear_1(RGB565(currentDataPoint.valueled_r, currentDataPoint.valueled_g, currentDataPoint.valueled_b));
下面的视频就是实际的控制效果。
CW32的LCD屏还是不错的,不过它所提供的API太简陋了,下次我们会介绍如何使用LCD屏实现酷炫的效果。
更多回帖