如何使用Arduino Nano点亮OLED显示屏(一):Hello word!

ChangeCode
原创
发布时间: 2025-06-11 10:08:52 | 阅读数 0收藏数 0评论数 0
封面
在本教程的第一部分中,我们将学习如何使用Arduino Nano和SSD1306驱动的OLED显示屏来显示简单的文本信息。这个项目不仅适合初学者了解Arduino编程的基础知识,也是探索OLED技术的一个好起点。
1

接口定义与硬件参数

  1. 四脚接口
  2. 引脚功能
  3. GND:逻辑电路接地;
  4. VDD:逻辑电源(3.3V或5V兼容);
  5. SCL:I2C时钟线;
  6. SDA:I2C数据线。
  7. 设备地址:默认I2C从地址为0x3C(SA0=0时),部分模块可能为0x3D(SA0=1时)。
  8. 硬件规格
  9. 分辨率:128×64像素,显示区域21.74×10.864 mm;
  10. 点间距:0.17×0.17 mm;
  11. 功耗:正常显示时约20-28mA,休眠时为微安级;
  12. 工作温度:-20℃~70℃。
2

通信协议与驱动原理

  1. I2C通信时序
  2. 命令与数据区分
  3. 写命令时,首字节为0x00,后跟命令字节;
  4. 写数据时,首字节为0x40,后跟数据字节。
  5. 数据帧格式:起始信号→从机地址→控制字节(命令/数据标识)→数据内容→停止信号。
  6. 显存管理
  7. GRAM结构:显存分为8页(每页8行),每页128字节,对应屏幕的128列×8行;
  8. 地址模式
  9. 页模式:逐列写入,列地址自动递增,换页需手动设置;
  10. 水平/垂直模式:自动换行或换列。
  11. 坐标设置:通过0xB0~B7设置页地址,0x00~0x0F0x10~0x1F分别设置列地址的低/高位8
3

驱动方法与代码示例

  1. 初始化流程
  2. 关闭显示(0xAE);
  3. 设置对比度(0x81 + 对比度值);
  4. 设置显示起始行(0x40);
  5. 配置扫描方向、复用比率、预充电周期等。
// 示例初始化命令序列
Oled_WriteByte(0xAE, OLED_CMD); // 关闭显示
Oled_WriteByte(0x81, OLED_CMD); // 对比度控制
Oled_WriteByte(0xFF, OLED_CMD); // 最大对比度
Oled_WriteByte(0xA1, OLED_CMD); // 段重映射(水平翻转)
  1. 显示控制
  2. 清屏:填充显存为0;
  3. 字符显示:通过预取字模数据逐列写入(如6×8 ASCII或16×16汉字);
  4. 图形绘制:通过操作显存实现点、线、圆等基本图形。
4

硬件准备与接线

对于本教程,我们将使用带有SSD1306控制器的128x64 OLED显示屏,以及Arduino Nano。

所需材料

  1. Arduino Nano
  2. SSD1306驱动的OLED显示屏(128x64)
  3. 杜邦线若干
  4. 面包板(可选)

接线图


OLED

Arduino Nano

VCC

5V

GND

GND

SDA

A4

SCL

A5

5

软件准备

  1. 安装库文件:通过Arduino IDE的库管理器搜索并安装Adafruit SSD1306Adafruit GFX库。
6

编写代码

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1 // 如果未连接复位引脚,请设置为-1

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
Serial.begin(9600);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.display();
delay(2000); // 显示启动画面2秒
display.clearDisplay(); // 清除屏幕
display.setTextSize(1); // 设置文本大小
display.setTextColor(SSD1306_WHITE); // 设置文本颜色
display.setCursor(0, 20); // 设置光标位置
display.print("Hello World!"); // 打印文本
display.display(); // 更新显示
}

void loop() {
// 主循环保持空闲
}
7

调试与优化

  1. 检查物理连接:确保所有连线正确无误。
  2. 确认I2C地址:大多数情况下是0x3C0x3D,可以通过I2C扫描工具来检测具体地址。
  3. 调整显示内容:根据需要修改代码中的显示内容、字体大小等参数。
8

上传代码

  1. 打开Arduino IDE。
  2. 通过菜单栏选择工具 > 开发板 > Arduino Nano来设置你的开发板类型。
  3. 由于市场上存在不同版本的Arduino Nano,它们可能使用不同的微控制器(如ATmega168或ATmega328)。因此,你需要根据你的板子选择正确的处理器:
  4. 选择工具 > 处理器 > ATmega328P (Old Bootloader)如果你使用的是较旧版本的Nano。
  5. 或者选择工具 > 处理器 > ATmega328P对于新版本的Nano。
  6. 连接Arduino Nano后,在Arduino IDE中选择工具 > 端口,然后选择与Arduino Nano对应的串行端口。通常情况下,它会被标记为类似COM3(Windows)或者/dev/ttyUSB0(Linux/macOS)的形式。
  7. 上传代码
  8. 当确认代码无误后,点击“上传”按钮(右箭头图标)。
  9. Arduino IDE将会编译代码并将它上传到Arduino Nano。
  10. 在上传过程中,你会看到TX和RX LED灯闪烁,表示数据正在传输。
  11. 成功上传后,你应该能在OLED屏幕上看到预期的结果。
阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载