基于arduino的oled显示屏的使用

摘要

​ OLED属于一种电流型的有机发光器件,是通过载流子的注入和复合而致发光的现象,发光强度与注入的电流成正比。OLED在电场的作用下,阳极产生的空穴和阴极产生的电子就会发生移动,分别向空穴传输层和电子传输层注入,迁移到发光层。当二者在发光层相遇时,产生能量激子,从而激发发光分子最终产生可见光。

oled显示屏模块是每个Maker都会用到的显示器件,然而OLED本身它是使用在我们生活中很多地方的。我们这里所说的就是OLED显示屏模块,它有双色和单色的,有128X64的,有128X32等不同规格。我们这里讲的是基于arduino的OLED库的基本的调用。

1.依赖的库

Adafruit_GFX.h

Adafruit_SSD1306.h

​ 如果使用的OLED模块是128X64像素,需要修改Adafruit_SSD1306.h头文件。具体操作:找到Adafruit_SSD1306.h文件并打开!
PS:头文件不能直接使用arduino ide打开,需要使用文本编辑器打开,文本编辑器牵扯到文本编码,推荐使用editplus 或者Notepad进行修改。如果使用的是Visual studio,打开头文件就不需要找路径,选中直接右键选择打开头文件就好了。
​ 取消注释: #define SSD1306_128_64
​ 注释掉行:#define SSD1306_128_32

2.库函数简介

​ Adafruit_SSD1306.h是基于Adafruit_GFX.h开发的库,扩展重写了一些方法,在使用中,我们主要使用部分函数来实现基础的使用,其中有两个库的函数方法,主要介绍的函数如下:

display();//显示缓冲区图片
clearDisplay();//清理缓冲区`drawPixel(X_POS, Y_POS, WHITE);  // 画点
drawLine(X_POS, Y_POS,128, 64, WHITE);//画线
drawRect(X_POS, Y_POS, width, height , WHITE); // 画一个矩形
fillRect(X_POS, Y_POS, width, height, WHITE); // 画一个填充矩形
drawCircle(X_POS, Y_POS, 10, WHITE); // 画一个居中半径为10的圆
fillCircle(X_POS, Y_POS, 10, WHITE);// 画一个居中半径为10的填充圆
fillRoundRect(X_POS, Y_POS, width, height, 14, WHITE);// 画一个带半径14圆角的填充矩形startscrollright(0x00, 0x0f);//屏幕旋转
stopscroll();//屏幕旋转停止setTextSize(1);//设定字体大小
setTextColor(WHITE);//设定字体颜色
setCursor(0, 0);//设定起始点
write(i);//字符显示,asii对应的字符
println("Hello, world!"); // 文本显示drawBitmap(0, 0, logo_glcd_bmp_expendables[], HEIGHT, WIDTH, WHITE); // 显示一张图片invertDisplay(true); // 图形取反
invertDisplay(false);// 取消图形取反

3.硬件介绍

​ OLED模块是通过i2c与Arduino进行通讯的

//Arduino UNO--OLED
//VCC --3.3v  接3.3v电源
//GND--GND接地(GND)
//SCL--A5时钟线
//SDA--A4数据线

4.显示的基本操作

​ step i.显示内容更新到缓冲区

​ step ii.调用display()方法显示

​ step iii.清理缓存(在不清理缓冲区的情况下写入,如果不是写整个屏幕,写的位置与原有缓冲区数据与运算,会出现图像叠加,除非你特此设计)

5.示例

i.制作一个进度条

void Draw_Init_Interface(void) {for (size_t i = 0; i < 46; i = i + 5){display.clearDisplay();display.setTextSize(1);display.setTextColor(WHITE);display.setCursor(25, 20);display.println("Initialize...");display.drawRect(38, 38, 51, 6, WHITE);//以(38,38)为起点绘制一个长度51宽度为6的矩形display.drawLine(40, 40, 40 + i, 40, WHITE);//循环绘制线条达到显示进度的效果display.drawLine(40, 41, 40 + i, 41, WHITE);display.display();//delay(10);display.clearDisplay();}`display.display();
}

ii.显示文字

//显示字符,转换为ASCIIdisplay.setCursor(0,0);display.setTextSize(1);display.setTextColor(WHITE);for (uint8_t i=0; i < 168; i++) {if (i == '\n') continue;display.write(i);if ((i > 0) && (i % 21 == 0))display.println();}    display.display();// 显示字符串display.setTextSize(1);display.setTextColor(WHITE);display.setCursor(0,0);display.println("Hello, world!");display.setTextSize(2);display.println("Hello, world!");display.display();`delay(2000);`

iii.显示图片(中文)

// 显示一张图片
display.clearDisplay();
display.drawBitmap(0, 0, logo_glcd_bmp_expendables, LOGO_GLCD_HEIGHT, LOGO_GLCD_WIDTH, WHITE);
display.display();
delay(2000);
display.clearDisplay();

6.取模工具的使用

​ i.图片取模

​ ii.字符取模

图片和字符的取模请大家自行百度,这里免费为大家提供2款取模工具,需要的关注公众号“痴人听梦”

后台回复“取模工具”获取下载地址。

7.预设画面

​ 实例创建后,调用begin方法启动器件,在begin方法中默认会写入splash图像,作为启动画面。


此方法的具体代码:

if(HEIGHT > 32) {drawBitmap((WIDTH - splash1_width) / 2, (HEIGHT - splash1_height) / 2,splash1_data, splash1_width, splash1_height, 1);} else {drawBitmap((WIDTH - splash2_width) / 2, (HEIGHT - splash2_height) / 2,splash2_data, splash2_width, splash2_height, 1);}

​ 在使用Adafruit_SSD1306库进行OLED使用的时候,可以自己设计好自己的预设画面,更新到splash.h头文件中,替换掉其中的splash1_data[],就可以将自己的预设画面作为启动画面了。需要注意的就是图画的长宽。库预设的是82X64的,如果你自己设计的是128X64的,也要记得改splash1_width和splash1_height这两个宏定义。

完整示例代码如下:

// Visual Micro is in vMicro>General>Tutorial Mode
//
/*Name:       OlED_Display_Demo.inoCreated: 2020/3/14 星期六 18:46:31Author:     DESKTOP-4JO134Q\Administrator
*/// Define User Types below here or use a .h file
//
#include <splash.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>#define OLED_RESET -1
Adafruit_SSD1306 display(OLED_RESET);#define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2#define LOGO_GLCD_HEIGHT 128 //宏定义,定义图像的长,可根据自己的需要设置
#define LOGO_GLCD_WIDTH  64 //宏定义,定义图像的宽static const unsigned char PROGMEM logo_glcd_bmp_expendables[] =
{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x20,0x00,0x20,0x00,0x80,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x60,0x00,0x30,0x00,0x80,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0xBF,0xFC,0xDF,0xFF,0xFF,0xFF,0xFF,0xF9,0xF0,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0x3F,0xFC,0xCF,0xFF,0xFF,0xFF,0xFF,0xF9,0xF0,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0x3F,0xFC,0xEF,0xFF,0xFF,0xFF,0xFF,0xF9,0xF0,0x00,0x00,
0x00,0x00,0x03,0xFF,0xFF,0xBF,0xFC,0xF7,0xFF,0xFF,0xFF,0xFF,0xF9,0xF0,0x00,0x00,
0x00,0x00,0x23,0xFF,0xFF,0xBF,0xFC,0xF7,0xFF,0xFF,0xFF,0xFF,0xF9,0xF0,0x00,0x00,
0x00,0x00,0x60,0x00,0x1F,0x80,0x7C,0xF8,0x01,0xF8,0x07,0xE0,0xF9,0xF0,0x00,0x00,
0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x7C,0xFF,0xFD,0xF8,0x07,0xE0,0xF9,0xF0,0x00,0x00,
0x00,0x00,0xFF,0xFF,0xFF,0xFE,0x7C,0xFF,0xFD,0xF8,0x17,0xE0,0xF9,0xF0,0x00,0x00,
0x00,0x01,0xFF,0xFF,0xFF,0xFE,0x7C,0xFF,0xFD,0xF8,0x37,0xE0,0xF9,0xF0,0x00,0x00,
0x00,0x01,0xFF,0xFF,0xFF,0xFE,0x7C,0xFF,0xFD,0xFF,0xF7,0xE0,0xF9,0xF0,0x00,0x00,
0x00,0x03,0xFF,0xFF,0xFF,0xFE,0x7C,0xFF,0xFD,0xFF,0xF7,0xE0,0xF9,0xF0,0x00,0x00,
0x00,0x00,0x00,0x7C,0x1F,0x3E,0x7C,0x00,0xFD,0xFF,0xF7,0xE0,0xF9,0xF0,0x00,0x00,
0x00,0x00,0x00,0x7F,0xFF,0xBE,0x7C,0x00,0xFD,0xFF,0xF7,0xE0,0xF9,0xF0,0x00,0x00,
0x00,0x00,0x00,0x7F,0xFF,0xBE,0x7C,0xFF,0xFD,0xFF,0xF7,0xE8,0xF9,0xF0,0x00,0x00,
0x00,0x00,0x00,0x7F,0xFF,0xBE,0x7C,0xFF,0xFD,0xF8,0x07,0xEB,0xF9,0xF0,0x00,0x00,
0x00,0x00,0x00,0x7F,0xFF,0xBE,0x7C,0xFF,0xFD,0xF8,0x07,0xEF,0xF9,0xF0,0x00,0x00,
0x00,0x00,0x00,0x7F,0xFF,0xBE,0x7C,0xFF,0xFD,0xF8,0x07,0xEF,0xF1,0xF0,0x00,0x00,
0x00,0x00,0x00,0x7C,0x1F,0xBE,0x7C,0xFF,0xFD,0xF8,0x07,0xEF,0xE3,0xF8,0x00,0x00,
0x00,0x00,0x00,0x7F,0xFF,0xBE,0x7C,0x00,0xFD,0xFE,0x07,0xEF,0xCF,0xFC,0x00,0x00,
0x00,0x00,0x00,0x7F,0xFF,0xBF,0x7C,0x00,0xFC,0xFF,0x07,0xEF,0x1F,0xFF,0x00,0x00,
0x00,0x00,0x00,0x7F,0xFF,0x3F,0xFC,0x01,0xF8,0x7F,0xC7,0xEE,0x3F,0xFF,0x80,0x00,
0x00,0x00,0x00,0x7F,0xFF,0xBF,0xFC,0x03,0xF8,0x3F,0xE7,0xEC,0xFF,0xBF,0xE2,0x00,
0x00,0x00,0x02,0x7F,0xFF,0x9F,0xF8,0x03,0xF0,0x0F,0xF7,0xE1,0xFE,0x1F,0xF2,0x00,
0x00,0x00,0x06,0x7C,0x1F,0x8F,0xF8,0x07,0xE0,0x07,0xF7,0xE7,0xFC,0x07,0xFA,0x00,
0x00,0x00,0x06,0x7E,0x1F,0x87,0xF8,0x0F,0xC0,0x01,0xF7,0xEF,0xF8,0x03,0xFE,0x00,
0x00,0x00,0x0F,0xFF,0xFF,0x87,0xFC,0x0F,0xC0,0x00,0xF3,0xEF,0xE0,0x00,0xFE,0x00,
0x00,0x00,0x1F,0xFF,0xFF,0x8F,0xFE,0x1F,0x80,0x00,0x33,0xEF,0xC0,0x00,0x7E,0x00,
0x00,0x00,0x1F,0xFF,0xFF,0x8F,0xFC,0xBF,0x80,0x00,0x13,0xEF,0x80,0x00,0x34,0x00,
0x00,0x00,0x3F,0xFF,0xFF,0x9F,0xBC,0xFF,0x00,0x00,0x03,0xEE,0x00,0x00,0x0C,0x00,
0x00,0x00,0x20,0xFF,0xFF,0xBF,0x9C,0xFE,0x00,0x00,0x03,0xEC,0x00,0x00,0x04,0x00,
0x00,0x00,0x00,0x00,0x1F,0x3F,0x0C,0xFE,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0xFE,0x00,0xFC,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0xFE,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0xFC,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0xF8,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0xF0,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0xC2,0xED,0x7C,0xF6,0x6B,0x18,0xF9,0x07,0xDE,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0xC3,0x07,0x66,0x83,0x69,0x9C,0xCD,0x04,0x32,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0x83,0x63,0x66,0xA1,0x68,0x94,0xC9,0x05,0xB8,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0x02,0xE6,0x7C,0xB7,0xE8,0xB6,0xD9,0x05,0x9E,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0x03,0x07,0x61,0x86,0xA8,0xBE,0x4D,0x0C,0x23,0x00,0x00,
0x00,0x00,0x00,0x00,0x1E,0x03,0x65,0x61,0xA6,0x49,0xA2,0xC9,0x25,0xB2,0x00,0x00,
0x00,0x00,0x00,0x00,0x1C,0x00,0x6D,0x20,0x36,0x6B,0x23,0x79,0x61,0xD4,0x00,0x00,
0x00,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x10,0x00,0x03,0x02,0x12,0x24,0x0A,0x05,0x10,0x80,0x00,0x00,
0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0x41,0x20,0x48,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};//敢死队图片static const unsigned char PROGMEM char_128_64_glcd_bmp_ZH_xin[] =
{0x00, 0x00, 0x0C, 0x60, 0x0C, 0x30, 0x18, 0x7F, 0x1F, 0xC0, 0x38, 0x38, 0x79, 0xE0, 0xD8, 0x38,
0x19, 0xE0, 0x18, 0x38, 0x19, 0xF8, 0x19, 0x98, 0x19, 0xF8, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, //"信", 0
};static const unsigned char PROGMEM char_128_64_glcd_bmp_ZH_xi[] =
{0x01, 0x80, 0x03, 0x00, 0x07, 0xE0, 0x0C, 0x60, 0x0F, 0xE0, 0x0C, 0x60, 0x0F, 0xE0, 0x0C, 0x60,
0x0F, 0xE0, 0x00, 0x0E, 0x3D, 0x83, 0x3C, 0xF0, 0x66, 0x18, 0x03, 0xFC, 0x00, 0x00, 0x00, 0x00, //"息", 1
};
static const unsigned char PROGMEM char_128_64_glcd_bmp_ZH_xian[] =
{0x00, 0x00, 0x01, 0xF0, 0x1F, 0x30, 0x19, 0xF0, 0x0F, 0x30, 0x0D, 0xE0, 0x0F, 0x00, 0x06, 0xD8,
0x06, 0xD8, 0x36, 0xF0, 0x1E, 0xE0, 0x06, 0xC0, 0x07, 0xFE, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, //"显", 2
};static const unsigned char PROGMEM char_128_64_glcd_bmp_ZH_shi[] =
{0x00, 0x00, 0x00, 0x70, 0x0F, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0x7F, 0x80, 0x01, 0x80,
0x19, 0xB0, 0x19, 0x9C, 0x39, 0x8C, 0x31, 0x80, 0x03, 0x80, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, //"示", 3
};#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endifvoid Draw_Init_Interface(void) {for (size_t i = 0; i < 46; i = i + 5){display.clearDisplay();display.setTextSize(1);display.setTextColor(WHITE);display.setCursor(25, 20);display.println("Initialize...");display.drawRect(38, 38, 51, 6, WHITE);display.drawLine(40, 40, 40 + i, 40, WHITE);display.drawLine(40, 41, 40 + i, 41, WHITE);display.display();//delay(10);display.clearDisplay();}display.display();
}// The setup() function runs once each time the micro-controller starts
void setup()
{// 初始化串口Serial.begin(115200);//启动OLEDdisplay.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)display.display(); // 屏幕显示(显示内容为预设画面)delay(2000);display.clearDisplay();   //清理屏幕和缓存区(I2C只清理缓存区)Draw_Init_Interface();display.clearDisplay();  //清理屏幕和缓存区(I2C只清理缓存区)Serial.println("Display Initialize Finish");// 画点display.drawPixel(64, 32, WHITE);display.display();delay(2000);display.clearDisplay();//画线display.drawLine(0, 0, 128, 64, WHITE);display.display();delay(2000);display.clearDisplay();// 画一个矩形display.drawRect(0, 0, display.width(), display.height() , WHITE);display.display();delay(2000);display.clearDisplay();// 画一个填充矩形display.fillRect(0, 0, display.width(), display.height(), WHITE);display.display();delay(2000);display.clearDisplay();// 画一个居中半径为10的圆display.drawCircle(display.width() / 2, display.height() / 2, 10, WHITE);display.display();delay(2000);display.clearDisplay();// 画一个居中半径为10的填充圆display.fillCircle(display.width() / 2, display.height() / 2, 10, WHITE);display.display();delay(2000);display.clearDisplay();// 画一个带半径14圆角的填充矩形display.fillRoundRect(0, 0, display.width(), display.height(), display.height() / 4, WHITE);display.display();delay(2000);display.clearDisplay();//字符显示display.setTextSize(1);display.setTextColor(WHITE);display.setCursor(0, 0);for (uint8_t i = 0; i < 168; i++) {if (i == '\n') continue;display.write(i);if ((i > 0) && (i % 21 == 0))display.println();}display.display();delay(2000);display.clearDisplay();//屏幕旋转display.startscrollright(0x00, 0x0f);delay(2000);//屏幕旋转停止display.stopscroll();display.clearDisplay();// 文本显示display.setTextSize(1);display.setTextColor(WHITE);display.setCursor(0, 0);display.println("Hello, world!");display.setTextColor(BLACK, WHITE); // 'inverted' textdisplay.println(3.141592);display.setTextSize(2);display.setTextColor(WHITE);display.print("0x"); display.println(0xDEADBEEF, HEX);display.display();// 显示一张图片display.clearDisplay();display.drawBitmap(0, 0, logo_glcd_bmp_expendables, LOGO_GLCD_HEIGHT, LOGO_GLCD_WIDTH, WHITE);display.display();delay(2000);display.clearDisplay();// 图形取反display.invertDisplay(true);delay(2000);display.invertDisplay(false);delay(2000);//显示汉字display.clearDisplay();display.drawBitmap(0, 0, char_128_64_glcd_bmp_ZH_xin, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH, WHITE);display.drawBitmap(16, 0, char_128_64_glcd_bmp_ZH_xi, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH, WHITE);display.drawBitmap(32, 0, char_128_64_glcd_bmp_ZH_xian, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH, WHITE);display.drawBitmap(48, 0, char_128_64_glcd_bmp_ZH_shi, LOGO16_GLCD_HEIGHT, LOGO16_GLCD_WIDTH, WHITE);display.display();delay(2000);display.clearDisplay();
}
// Add the main program code into the continuous loop() function
void loop()
{}

基于arduino的oled显示屏的使用相关推荐

  1. android蓝牙通信_使用Arduino构建OLED显示屏与Android手机接口的智能手表

    背景知识视频教程 Arduino 训练营:通过项目学习​viadean.com 通过制作Arduino UNO FM收音机接收器学习Arduino I2C​viadean.com 通过构建实际应用程序 ...

  2. android 环形时间显示_使用Arduino构建OLED显示屏与Android手机接口的智能手表

    背景知识视频教程 Arduino 训练营:通过项目学习​viadean.com 通过制作Arduino UNO FM收音机接收器学习Arduino I2C​viadean.com 通过构建实际应用程序 ...

  3. 四针角oled屏连接arduino_使用Arduino构建OLED显示屏与Android手机接口的智能手表

    背景知识视频教程 Arduino 训练营:通过项目学习​viadean.com通过制作Arduino UNO FM收音机接收器学习Arduino I2C​viadean.com通过构建实际应用程序来掌 ...

  4. Arduino驱动OLED显示屏

    使用Arduino驱动SSD1306 OLED 显示屏工作 1.准备工作 1.1)Arduino中库的载入 #include <Adafruit_SSD1306.h>驱动128x64 an ...

  5. 基于stm32的OLED显示屏显示

    文章目录 一.内容 二.关于SPI 三.关于OLED 四.功能实现 1)实验准备 2)代码准备 1.显示学号和姓名 2.显示AHT20的温度和湿度 3.滑动显示长字符 3)结果展示 五.参考内容 六. ...

  6. 二、ESP32基于Arduino IDE OLED 联网显示时间

    上一篇学习笔记讲了如何在Arduino上配置ESP32开发环境,这次分享一下如何让ESP32联网获取时间再通过OLED来显示.此系列文章都是学习笔记,希望能有所帮助. ps:代码中调用的库如需要可在在 ...

  7. 四针角oled屏连接arduino_使用Arduino开发板连接OLED显示屏制作一款智能手表

    我们大多数人都比较熟悉1602点阵液晶显示屏,它在许多项目中用于向用户显示一些信息.但是这些LCD显示器在他们能做的事情上有很多限制.在本篇文章中,我们将使用OLED显示Android智能手机的一些基 ...

  8. 0.96寸OLED显示屏标准库移植HAL库(模拟IIC) - 基于STM32

    ** 0.96寸OLED显示屏标准库移植HAL库,使用模拟IIC ** 由于项目的需要使用OLED屏显示,并且现有的项目程序是基于HAL库编写的,而手头能找到的程序是标准库的驱动程序,大概看了一下代码 ...

  9. stm32c8t6+dht11+MQ系列环境检测模块+oled显示屏(基于物联网的家庭环境检测系统设计)

    元件清单: stm32f103c8t6.mq2 检测烟雾浓度(模拟量输出).mq7 检测一氧化碳浓度.mq135 检测空气质量.OLED屏幕(四引脚仅支持iic协议通信).dht11检测温湿度(数字量 ...

  10. OLED显示屏与Arduino接口

    原文:https://circuitdigest.com/microcontroller-projects/arduino-ssd1306-oled-display 将SSD1306 OLED显示屏与 ...

最新文章

  1. python自带的库有哪些_python常用的内置库
  2. posixkill php,在linux中使用PHP的posix_kill()会导致奇怪的行为
  3. nyoj904 search
  4. RocketMQ特性、专业术语(Producer,Producer Group,Consumer Group,Topic,Message,Tag,Broker,Name Server)等
  5. android 配置ADB环境
  6. ios 旋转屏幕试图切换_iOS增强现实应用(AR)设计指南(上)
  7. Spring Boot 打成war包的方法
  8. 基于TCP协议的网络摄像头的设计与实现
  9. Python内置函数filter, map, reduce
  10. siege压力测试工具
  11. iphone换android手机铃声,在iPhone中换个自定义铃声的11个步骤
  12. Windows11 下屏幕亮度自动调整的问题解决
  13. [http]http转义和加解密方法
  14. Android apps 拍立知-基于百度Ai的图像识别与tts语音合成(介绍)
  15. 杰里之104X之输出 3 路 PMW【篇】
  16. 2020中国高校计算机大赛网络技术挑战赛,喜报:我院学子喜获2020年中国高校计算机大赛-网络技术挑战赛13项奖励...
  17. matlab实现5自由度雄克机器人的运动仿真
  18. sys.stdout.flush()
  19. 机器学习算法-EM算法
  20. 黑苹果0005——我的config文件(笔记本 intel HD630)

热门文章

  1. win10 1050ti anaconda搭建tensorflow-gpu
  2. 针对爬取豆瓣top250电影失败的问题
  3. 服务器dns被劫持如何修复,电脑DNS被劫持如何解决?电脑DNS被劫持的解决方法
  4. IMF Is Given Tough Tasks
  5. 电脑C盘怎么清理到最干净
  6. openwrt luci固件升级流程
  7. Linux 10GE端口,CR19000关于10GE端口切换GE口
  8. LINUX彻底清除历史记录命令
  9. python安装结巴_python jieba(结巴)小模块精讲
  10. 各种水龙头拆卸图解_水龙头拆除和安装步骤图解