TA的每日心情 | 开心 2015-6-14 16:01 |
|---|
签到天数: 87 天 连续签到: 1 天 [LV.6]常住居民II
翰林
- 积分
- 11232
|
本帖最后由 wenyangzeng 于 2015-6-7 21:24 编辑
为机智云配置了OLED,就应当把硬件资源充分利用起来。直接在机智云主机的屏幕上显示工作状态总比通过USB连接到PC机显示要方便许多,我们要在OLED屏幕上实时显示3色LED和马达的工作参数。
先在IOTKIT软件包中的main.c中的Hal_Init()函数的末尾去掉原来Gokit广告函数,增加以下代码:
OLED_ShowString(2, 0, "R LED");
OLED_ShowString(2, 16, "G LED");
OLED_ShowString(2, 32, "B LED");
OLED_ShowString(2, 48, "MOTOR");
接着在Protocol.c里增加一个新函数:
uint8_t OLED_Buf[4];
void OLED_Disp(uint8_t x,uint8_t y,int16_t Data)
{
uint8_t *ptr;
ptr=OLED_Buf;
if(y==48)
{Data=Data/0x100-5;
if(Data<0)
{
OLED_Buf[0]='-';
Data=Data*(-1);
}
}
else
OLED_Buf[0]=' ';
OLED_Buf[1]=Data/100+0x30;
OLED_Buf[2]=Data%100/10+0x30;
OLED_Buf[3]=Data%10+0x30;
OLED_ShowString(x,y,ptr++);
}
调试中发现:电机的转速值是从0到0xa00,步长值为0x100,从0x00到0x400是反向转动,0x500停止,0x600到0xa00为正向转动。故以上函数中需对电机数据另行处理。
然后,我们在Protocol.c的Pro_D2W_ReportDevStatusHandle()函数的末尾增加:
OLED_Disp(50,0,Device_WirteStruct.LED_R);
OLED_Disp(50,16,Device_WirteStruct.LED_G);
OLED_Disp(50,32,Device_WirteStruct.LED_B);
OLED_Disp(50,48,Device_WirteStruct.Motor);
编译运行后终于可以让OLED发挥作用了。
手机要遥控Gokit, 无法拍摄视频,上几张图:
感觉当电机转动时wifi非常容易掉线,不知何故?
|
|