使用Arduino Nano与OLED显示屏:导入外部图像(三)

ChangeCode
原创
发布时间: 2025-06-10 17:31:56 | 阅读数 0收藏数 0评论数 0
封面
在本篇文章中,我们将详细介绍如何使用Arduino Nano与OLED显示屏来显示图像。这个过程不仅包括硬件连接,还涵盖了软件安装、图像取模以及编程实现。让我们开始吧!
1

确认I2C地址

通过Arduino IDE上传一段简单的代码以扫描I2C总线上的设备地址,确认你的OLED屏幕的I2C地址(通常是0x3C或0x3D)。这可以通过运行I2C扫描示例程序来完成。

#include <Wire.h>

void setup() {
Wire.begin();
Serial.begin(9600);
while (!Serial); // 等待串口监视器开启
Serial.println("\nI2C Scanner");
}

void loop() {
byte error, address;
int nDevices;

Serial.println("Scanning...");

nDevices = 0;
for(address = 1; address < 127; address++ ) {
Wire.beginTransmission(address);
error = Wire.endTransmission();

if (error == 0) {
Serial.print("I2C device found at address 0x");
if (address<16)
Serial.print("0");
Serial.print(address,HEX);
Serial.println(" !");

nDevices++;
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");

delay(5000);
}
2

转换图像成位图格

为了在OLED上显示图像,需要先将其转换为单色位图格式。可以使用在线工具如LCD Assistant或本地软件ImageMagick来完成。

3

取模

确保输出的位图大小不超过OLED的分辨率(例如128x64),并将生成的十六进制数组复制下来。

4

导入外部图像

要显示位图图像,首先需要将图像转换成单色位图格式,然后将其作为数组加载到程序中。假设你已经有了这样的一个数组image[],你可以使用drawBitmap(x, y, bitmap, width, height, color)函数来显示它。

static const unsigned char PROGMEM image[] = {
// 这里放置你的位图数据
};
display.drawBitmap(10, 10, image, 16, 16, WHITE); // 在坐标(10,10)处显示一个16x16的图像
5

图像代码演示

/*
OLED显示图片
*/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(128, 64, &Wire, OLED_RESET);
//取128*64 逐行式 顺向高位在前
static const unsigned char PROGMEM pic1[] =
{
0x00, 0x00, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00,
0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00,
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00,
0x00, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00,
0x00, 0x01, 0xE3, 0xFF, 0xFF, 0xFC, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00,
0x00, 0x03, 0xC7, 0xFF, 0xFF, 0xFD, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00,
0x00, 0x07, 0x87, 0xFF, 0xFF, 0xF9, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00,
0x00, 0x07, 0x07, 0xFF, 0xFF, 0xF9, 0x9B, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00,
0x00, 0x0E, 0x07, 0xFF, 0xFF, 0xF9, 0x99, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF0, 0x00, 0x00,
0x00, 0x0C, 0x0F, 0xFF, 0xFF, 0xF9, 0x9D, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xF0, 0x00, 0x00,
0x00, 0x08, 0x0F, 0xF7, 0xFF, 0xD1, 0x8C, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xF0, 0x00, 0x00,
0x00, 0x18, 0x0F, 0x77, 0xFF, 0xD1, 0x8C, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xF0, 0x00, 0x00,
0x00, 0x10, 0x0F, 0x77, 0xFF, 0x91, 0x8E, 0x7F, 0xFF, 0xDF, 0xFB, 0xFF, 0xFF, 0xE0, 0x00, 0x00,
0x00, 0x00, 0x0F, 0x67, 0xEF, 0xFD, 0x86, 0x3F, 0xFF, 0xEF, 0xF9, 0xFF, 0xFF, 0xE0, 0x00, 0x00,
0x00, 0x00, 0x0F, 0x67, 0xCF, 0xFF, 0xFE, 0x1F, 0xFF, 0xF3, 0xFD, 0xFF, 0xFF, 0xE0, 0x00, 0x00,
0x00, 0x00, 0x0F, 0x63, 0xDF, 0xFF, 0xFF, 0x0F, 0xFF, 0xF8, 0x7F, 0xF5, 0xFF, 0xC0, 0x00, 0x00,
0x00, 0x00, 0x0F, 0x63, 0xFF, 0x88, 0xFF, 0xC7, 0xFF, 0xFE, 0x1F, 0xF6, 0xFF, 0xC0, 0x00, 0x00,
0x00, 0x00, 0x0F, 0x63, 0xFF, 0x88, 0x7F, 0xE3, 0x3F, 0xFF, 0xFE, 0xE2, 0xFF, 0xC0, 0x00, 0x00,
0x00, 0x00, 0x07, 0x63, 0xFF, 0x87, 0x27, 0xE1, 0x8F, 0xFF, 0xFF, 0xF8, 0xFF, 0x80, 0x00, 0x00,
0x00, 0x00, 0x07, 0x63, 0xF6, 0x9F, 0xE0, 0xF0, 0xE3, 0xFF, 0xFF, 0xFE, 0xFF, 0x80, 0x00, 0x00,
0x00, 0x00, 0x03, 0x23, 0xF6, 0x71, 0xF0, 0x70, 0x39, 0xFF, 0xF8, 0x3F, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x03, 0xA7, 0xF2, 0xE3, 0x18, 0x30, 0x0F, 0xF8, 0x7F, 0x87, 0xFF, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x87, 0xDA, 0xC3, 0x0C, 0x18, 0x07, 0x79, 0xE1, 0xE3, 0x7E, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x83, 0xD9, 0x8B, 0x04, 0x1F, 0xC2, 0x3B, 0xC0, 0x71, 0xBC, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xC3, 0xCB, 0x19, 0x00, 0x1F, 0xFE, 0x19, 0xC1, 0x19, 0xF8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x60, 0xE6, 0x18, 0x00, 0x1F, 0xFC, 0x18, 0x40, 0x88, 0xF8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x64, 0x1C, 0x04, 0x1F, 0xFC, 0x0B, 0x00, 0x8C, 0xF8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x44, 0x1C, 0x0C, 0x00, 0x0C, 0x01, 0x00, 0x84, 0xF8, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x66, 0x1D, 0xF8, 0x00, 0x04, 0x03, 0x81, 0x80, 0xF0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x04, 0x62, 0x0F, 0xF0, 0x00, 0x04, 0x03, 0x93, 0x80, 0xE0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x02, 0x63, 0x03, 0xC0, 0x20, 0x06, 0x01, 0xFE, 0x00, 0xC0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x02, 0x31, 0x00, 0x00, 0x20, 0x06, 0x00, 0x7C, 0x00, 0xD0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x02, 0x30, 0x00, 0x60, 0x40, 0x02, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x18, 0x01, 0x00, 0x80, 0x03, 0x00, 0x00, 0x01, 0x88, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x01, 0x0C, 0x00, 0x01, 0x80, 0x01, 0x00, 0x41, 0x83, 0x98, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x92, 0x00, 0x03, 0x02, 0x00, 0x80, 0x00, 0x07, 0x10, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x49, 0x80, 0x0C, 0x02, 0x00, 0x40, 0x00, 0x06, 0x30, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x04, 0xC0, 0x00, 0x00, 0x00, 0x20, 0x00, 0x0C, 0x20, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x20, 0x80, 0x00, 0x04, 0x80, 0x18, 0x00, 0x18, 0xC0, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x02, 0x00, 0x07, 0x00, 0x71, 0x80, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0xE0, 0x60, 0x10, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x01, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x03, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x60, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x43, 0xC0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x01, 0xC1, 0xC0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x07, 0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x87, 0x00, 0x00, 0x1C, 0x18, 0x60, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x80, 0x00, 0xF1, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x20, 0xE0, 0x07, 0x83, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x04, 0x1C, 0x7C, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x01, 0x20, 0x30, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x90, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x10, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x80, 0x3C, 0x08, 0x20, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x10, 0x01, 0x03, 0x32, 0x60, 0x40, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x83, 0xC1, 0x80, 0x40, 0x04, 0x18, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x86, 0x00, 0x80, 0x04, 0x0E, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x86, 0xC1, 0x00, 0x04, 0x01, 0x80, 0x00, 0x00, 0x00
};
static const unsigned char PROGMEM pic2[] =
{
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, 0x3F, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xE0, 0x00, 0x06, 0x
6

上传并显示图像


阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载