在测评之初,就为开发板没有配置显示屏而设下一个小目标,要为它配上一个OLED屏来显示信息,以免各种调试都要借助coolwatcher 来观察。 但在实现时还是比较困难的,因为HaaS 610 Kit 4G开发板所使用的是轻应用框架,而非常规的C语言,这样一切就要从摸索中开始。 此外,JS的程序设计对格式的检测是比较宽松的,又是转换时没报错并不代表没有问题,往往是程序下载进去了,但却观察不到预想的结果。问题无他程序的逻辑没问题,可能在语句的拼写时出现了一些小纰漏,但又较难发觉。其解决之道就是步步为营,能验证尽量验证后再向下进行。 为了节省引脚资源,这里使用的是I2C接口的OLED屏,所使用的引脚则是Arduino接口上的I2C引脚。所用的Arduino接口见图1所示,所用的引脚号则需另行查找。
图1 Arduino接口 经查询可定下,OLED屏与开发板的连接关系为: SCL—P41 SDA—P42 为此,所编写的json文件内容为:
- {
- "version": "1.0.0",
- "io": {
- "led": {
- "type": "GPIO",
- "port": 4,
- "dir": "output",
- "pull": "pulldown"
- },
- "scl": {
- "type": "GPIO",
- "port": 41,
- "dir": "output",
- "pull": "pulldown"
- },
- "sda": {
- "type": "GPIO",
- "port": 42,
- "dir": "output",
- "pull": "pulldown"
- }
- },
- "debugLevel": "DEBUG"
- }
复制代码
为一种OLED屏的可驱动性,所设计的测试函数为:
- function LCD_Clear() {
- vari,n;
- for(i=0;i<8;i++)
- {
- OLED_WR_Byte(0xb0+i,0);
- OLED_WR_Byte(0x00,0);
- OLED_WR_Byte(0x10,0);
- for(n=0;n<128;n++) OLED_WR_Byte(0xf0,1);
- }
- }
复制代码
在下载程序后,其测试效果如图2所示。
图2测试效果 测试中比较惨重的后果是显示屏的电源线接反了,先是闻到阵阵糊味儿,再是显示屏烫手,结果是显示屏的左侧开始变暗,只剩了半条命。 好在显示屏是点亮了,随后又添加了字符显示功能,其函数为:
- function OLED_ShowChar(x, y, chr){
- var c=0,i=0;
- c=chr;
- OLED_Set_Pos(x,y);
- for(i=0;i<8;i++) OLED_WR_Byte(F8X16[c*16+i],1);
- OLED_Set_Pos(x,y+1);
- for(i=0;i<8;i++) OLED_WR_Byte(F8X16[c*16+i+8],1);
- }
复制代码
经程序下载,其显示效果如图3所示。
图3字符显示效果 为了防止再次连线错误将显示屏给毁了,最终通过引脚的调整彻底地将OLED屏插到了Arduino接口上,其显示效果如图4所示。
图4测试效果 经此实践,终于可以通过自行编程来完成设计目标了!
|