驴友花雕
发表于 2022-6-4 07:47:27
0.96寸I2C OLED液晶屏模块的几个实验1、程序一:显示"Hello World!"(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序一:显示"Hello World!"
驱动库:https://github.com/olikraus/u8glib/
Arduino------OLED屏
5V------------VCC
GND-----------GND
A4-----------SDA IIC 数据线
A5-----------SCL IIC 时钟线
*/
#include "U8glib.h"//导入驱动库
//设置 u8g 对象,请从以下构造函数调用之一中删除注释
//带有所有构造函数调用的设备在这里:https://github.com/olikraus/u8glib/wiki/device
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_DEV_0); // I2C/TWI
// U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // 快速 I2C/TWI
void draw(void) {
//重绘整个屏幕的图形命令应该放在这里
u8g.setFont(u8g_font_unifont);
//u8g.setFont(u8g_font_osb21);
u8g.drawStr( 0, 22, "Hello World!");
}
void setup(void) {
//如果需要,翻转屏幕
// u8g.setRot180();
//分配默认颜色值
if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
u8g.setColorIndex(255); // 白色
}
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
u8g.setColorIndex(3); //最大强度
}
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) {
//图片循环loop
u8g.firstPage();
do {
draw();
} while ( u8g.nextPage() );
//延迟一段时间后重建图片
//delay(50);
}
驴友花雕
发表于 2022-6-4 07:48:50
(2)实验场景图
驴友花雕
发表于 2022-6-4 07:51:18
程序二:动态Time秒表(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序二:动态Time秒表
驱动库:https://github.com/olikraus/u8glib/
*/
#include "U8glib.h"//导入驱动库
String i = "Time:";
int s = 0; //用来显示变量秒
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_DEV_0); // 小E开发板上面就是用的这个
void draw() {
u8g.setFont(u8g_font_unifont); //设置字体 这句必要
u8g.drawStr( 1, 10, "hello eagler8!");//第一个是x第二个是y坐标
u8g.setFont(u8g_font_ncenB14);//还是先设置一个字体
u8g.setPrintPos(0, 44); //然后设置一个位置
u8g.print(i);//然后就是数据
u8g.print(s);
}
void setup(void) {
}
void loop(void) {
if (s != millis() / 10)
s = millis() / 10;
//上面这一句是取系统运行秒数单位ms除以1000就是秒
u8g.firstPage();
do {
draw();
}
while ( u8g.nextPage() ); //延迟一段时间后重新生成图片
delay(10);
}
驴友花雕
发表于 2022-6-4 08:36:13
(2)实验场景图
驴友花雕
发表于 2022-6-4 08:37:55
程序三:循环显示数字1-100及cm(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序三:循环显示数字1-100及cm
驱动库:https://github.com/olikraus/u8glib/
*/
#include "U8glib.h"//导入驱动库
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);
// I2C / TWI 实例化
void setup() {
}
void loop() {
for(int i=1;i<101;i++){
u8g.firstPage();//一下是显示实现部分
do {
u8g.setFont(u8g_font_fub30);
//设置字体和自号,目前测试字号有fub14,17,20,30
u8g.setPrintPos(10, 50); //显示的位置
u8g.print(i);//显示变量i的值
u8g.setFont(u8g_font_fub17);//设置字体和自号
u8g.setPrintPos(80, 50); //显示的位置
u8g.print("cm");//显示cm字样
}
while( u8g.nextPage() );
delay(100);//显示的时间间隔。
}
}
驴友花雕
发表于 2022-6-4 08:41:09
(2)实验场景图
驴友花雕
发表于 2022-6-4 10:01:46
程序四:显示U8Glib标志,以及Copyright(c)2022, eagler8@126.com(1)Arduino参考开源代码
/*
【Arduino】168种传感器模块系列实验(资料代码+仿真编程+图形编程)
程序四:显示U8Glib标志,以及Copyright(c)2022, eagler8@126.com
驱动库:https://github.com/olikraus/u8glib/
Arduino------OLED屏
5V------------VCC
GND-----------GND
A4-----------SDA IIC 数据线
A5-----------SCL IIC 时钟线
*/
#include "U8glib.h"//导入驱动库
// I2C / TWI 实例化
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE | U8G_I2C_OPT_DEV_0);
void drawColorBox(void) {
u8g_uint_t w, h;
u8g_uint_t r, g, b;
w = u8g.getWidth() / 32;
h = u8g.getHeight() / 8;
for ( b = 0; b < 4; b++ )
for ( g = 0; g < 8; g++ )
for ( r = 0; r < 8; r++ )
{
u8g.setColorIndex((r << 5) |(g << 2) | b );
u8g.drawBox(g * w + b * w * 8, r * h, w, h);
}
}
void drawLogo(uint8_t d) { //U8Glib标志LOGO
#ifdef MINI_LOGO
u8g.setFont(u8g_font_gdr17r);
u8g.drawStr(0 + d, 22 + d, "U");
u8g.setFont(u8g_font_gdr20n);
u8g.drawStr90(17 + d, 8 + d, "8");
u8g.setFont(u8g_font_gdr17r);
u8g.drawStr(39 + d, 22 + d, "g");
u8g.drawHLine(2 + d, 25 + d, 34);
u8g.drawVLine(32 + d, 22 + d, 12);
#else
u8g.setFont(u8g_font_gdr25r);
u8g.drawStr(0 + d, 30 + d, "U");
u8g.setFont(u8g_font_gdr30n);
u8g.drawStr90(23 + d, 10 + d, "8");
u8g.setFont(u8g_font_gdr25r);
u8g.drawStr(53 + d, 30 + d, "g");
u8g.drawHLine(2 + d, 35 + d, 47);
u8g.drawVLine(45 + d, 32 + d, 12);
#endif
}
void drawURL(void) {
#ifndef MINI_LOGO
u8g.setFont(u8g_font_4x6);
if ( u8g.getHeight() < 59 )
{
u8g.drawStr(53, 9, "Copyright(c)2022,");
u8g.drawStr(77, 18, "eagler8@126.com");
}
else
{
u8g.drawStr(0, 54, "Copyright(c)2022,eagler8@126.com");//底下小字
}
#endif
}
void draw(void) {
if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
drawColorBox();
}
u8g.setColorIndex(1);
if ( U8G_MODE_GET_BITS_PER_PIXEL(u8g.getMode()) > 1 ) {
drawLogo(2);
u8g.setColorIndex(2);
drawLogo(1);
u8g.setColorIndex(3);
}
drawLogo(0);
drawURL();
}
void setup(void) {
}
void loop(void) {
u8g.firstPage();
do {
draw();
u8g.setColorIndex(1);
} while ( u8g.nextPage() );
delay(200);
}
驴友花雕
发表于 2022-6-4 10:02:56
(2)实验场景图
驴友花雕
发表于 2022-6-5 19:40:19
程序五:显示 Hello! 2022.5.12(1)实验开源仿真编程(Linkboy V4.63)
驴友花雕
发表于 2022-6-5 19:41:57
(2)实验场景图
驴友花雕
发表于 2022-6-5 19:43:12
程序六:显示数字与字母(1)实验开源图形编程(Mind+、编玩边学)
驴友花雕
发表于 2022-6-5 19:44:48
(2)实验场景图
驴友花雕
发表于 2022-6-5 19:46:23
程序七:画格子(1)实验开源图形编程(Mind+、编玩边学)
驴友花雕
发表于 2022-6-5 19:47:43
(2)实验场景图
驴友花雕
发表于 2022-6-6 09:26:12
程序八:二个三角形(1)实验开源图形编程(Mind+、编玩边学)
驴友花雕
发表于 2022-6-6 09:27:54
(2)实验场景图
驴友花雕
发表于 2022-6-6 09:29:43
程序九:二个同心圆形(1)实验开源图形编程(Mind+、编玩边学)
驴友花雕
发表于 2022-6-6 09:31:42
(2)实验场景图
驴友花雕
发表于 2022-6-7 09:00:10
2、程序十:大号字体的“hello”(1)实验开源图形编程(Mind+、编玩边学)
驴友花雕
发表于 2022-6-7 09:02:14
(2)实验场景图
糖醋花生
发表于 2022-6-8 08:46:29
驴友花雕 发表于 2022-6-2 19:41
2、外观规格
我用的还是旧版的,哈哈哈