由于U8g2库中没有可以位移的函数,所以简单编写了一个可以实现字符滚动的代码。主要是为了记录一下自己学习Arduion的过程。算是一个记事本吧!当然如果你对于这方面有所需求,可以拿去使用。
主要是利用显示器范围只有0----128,同时不断调整输出字符的位置实现的。
代码中运用到了两端字符输出函数(若只有一段,无法达到轮流的效果,只能从0-128)
(一段输出效果)
(两端输出效果)
代码如下:
#include <U8g2lib.h>
#include <Wire.h>
U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);//该驱动是1.3寸的OLED屏幕。---------U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);这是比较常用的0.9寸的OLED显示器的驱动
void setup(void) {
u8g2.begin();
}
void loop(void) {
/*循环输出字符,同时输出两端字符,x轴不断改变实现移动。
* 第一段移动范围0-----128-----256
* 第二段移动范围-128-----0------128
*/
int y=1;//调节位移速度,可用于加快字符位移速度
for(int x=0;x<256;x+=y){//x+=y ----->等价于x=x+y
u8g2.clearBuffer(); // 清除内部缓冲区
u8g2.setFont(u8g2_font_ncenB08_tr); //设置字体
u8g2.drawStr(x,10,"Hello World!"); // 第一段输出位置
u8g2.drawStr(x-128,10,"Hello World!");//第二段输出位置
delay(20);//延时程序,可以降低位移速度
u8g2.sendBuffer(); // transfer internal memory to the displa
}
}