查看: 867|回复: 4
打印 上一主题 下一主题

初玩Arduino之U8glib那点事

[复制链接] qrcode

31

主题

54

帖子

143

积分

注册会员

Rank: 2

积分
143
楼主
跳转到指定楼层
发表于 2014-11-6 08:12 PM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

U8gLib是一个驱动128 64 OLED之类液晶屏的一个Arduino库。

启用I2C用例程点亮液晶屏之后就开始着手写自己的程序来显示内容了。

于是写了下边一段程序来显示从上往下滚动显示的文字:

#include "U8glib.h"
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);	// 构造函数,不同的Oled芯片使用的构造函数不同
int y_pos = 0;
void draw(void) {
  u8g.drawStr( 0, y_pos, "Dark World!");
}
void setup(void) {
  u8g.setColorIndex(1);         // pixel on
  u8g.setFont(u8g_font_unifont);
  u8g.setFontPosTop();
}
void loop(void) {
  // picture loop
  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );
  y_pos==64?y_pos=0:y_pos++;
}
翻了下Wiki,使用U8gLib有以下注意事项:

1、不要在draw()过程中修改任何全局变量的值
2、不要在draw()过程内部声音任何静态变量
3、在draw()过程的开始呈现一个空屏幕
4、像draw color或者当前font等变量值应当在draw()过程开始进行设置
5、像draw color或者当前font等变量值如果在picture loop中没有改变的话,可以在picture loop之外进行声明
在写程序之前没有注意第二点,在draw()内部声明了一个变量,进行循环,结果显示异常,最后翻了翻Wiki才发现需要注意第二点。

u8glib的picture loop非常特别

// picture loop
  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );
必须在loop中加这么一个picture loop,循环可以写在后边。

最终效果:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

65

帖子

6

积分

新手上路

Rank: 1

积分
6
沙发
发表于 2014-11-6 10:19 PM | 只看该作者
有点意思~
回复 支持 反对

使用道具 举报

0

主题

67

帖子

4

积分

新手上路

Rank: 1

积分
4
板凳
发表于 2014-11-7 10:02 AM | 只看该作者
很有趣
回复 支持 反对

使用道具 举报

0

主题

75

帖子

12

积分

新手上路

Rank: 1

积分
12
地板
发表于 2014-11-11 09:36 AM | 只看该作者

不错不错,支持一下,多发原创哈……

回复 支持 反对

使用道具 举报

0

主题

81

帖子

4

积分

新手上路

Rank: 1

积分
4
5#
发表于 2015-6-25 01:03 AM | 只看该作者
那不是注释么   语法何在?规则何在?这个ide有时候也乱来
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表