驴友花雕 发表于 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、外观规格

我用的还是旧版的,哈哈哈
页: 1 [2] 3 4 5
查看完整版本: 【Arduino】168种传感器模块系列实验(97)---0.96寸OLED液晶屏