arduino实现oled显示
arduino实现oled显示
我们这里采用的是SH1106芯片控制的4针oled模块
我们介绍一下其中运用的u8glib库
drawStr 显示字符串
print 输出
drawPixe 点
drawLine 线
drawHLine 水平线
drawVLine 垂直线
drawTriangle 三角(实心)
drawFrame 矩形框
drawRFrame 圆角矩形框
drawBox 矩形(实心)
drawRBox 圆角矩形(实心)
drawCircle 圆
drawDisc 圆形(实心)
drawEllipse 圆弧
drawFilledEllipse 扇形(实心)
getHeight 获得显示器高度
getWidth 获得显示器宽度
getStrWidth 获得字符串宽度
setFont 设置字体
setPrintPos 设置输出位置
setColorIndex 设置显示与否
setRot90 /180 /270 显示内容旋转
void U8GLIB::setColorIndex(uint8_t color_index)的功能为显示屏幕的颜色
对于单色OLED来说,功能为是否显示。可以理解为透明还是不透明。
color_index:1:表示显示,不透明 0:表示不显示,透明。
透明为不显示,不透明为显示。
u8g_uint_t U8GLIB::drawStr(u8g_uint_t x, u8g_uint_t y, const char *s)是显示字符的功能
x:字符左下角的横坐标
y:字符左下角的纵坐标
*s:要显示的字符
void U8GLIB::drawXBMP(u8g_uint_t x, u8g_uint_t y, u8g_uint_t w, u8g_uint_t h, const u8g_pgm_uint8_t *bitmap)函数的的功能为显示一个位置图
x:位置图左上角的横坐标
y:位置图左上角的纵坐标
w:位置图的宽
h:位置图的高
*bitmap:位置图对象,定义利用取模软件获得一个bmp图片的字模数组,然后取得数组名的位置。
我们要在屏幕显示之前设置字体,运用以下函数
U8GLIB::setFont(const u8g_fntpgm_uint8_t *font)
设置要显示字符的字体, *font:字体样式。
u8g.firstPage()
表示图像循环的开始
u8g.nextPage()
表示图像循环的结束
u8g.firstPage();
do {
代码
} while( u8g.nextPage() );
为整体架构
我们的oled显示程序
#include “U8glib.h”
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);
void draw(void)
{
u8g.setFont(u8g_font_unifont);
u8g.drawStr( 0, 22, “HI BOYS AND GRILS!”);
}
void setup(void) {
if ( u8g.getMode() == U8G_MODE_R3G3B2 )
{
u8g.setColorIndex(255);
}
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT )
{
u8g.setColorIndex(1);
}
else if ( u8g.getMode() == U8G_MODE_BW )
{
u8g.setColorIndex(1);
}
else if ( u8g.getMode() == U8G_MODE_HICOLOR )
{
u8g.setHiColorByRGB(255,255,255);
}
pinMode(8, OUTPUT);
}
void loop(void)
{
u8g.firstPage();
do {
draw();
} while( u8g.nextPage() );
}