告别点灯:用Arduino UNO和SSD1306驱动0.96寸OLED,5分钟显示你的第一行字

张开发
2026/6/22 19:43:07 15 分钟阅读
告别点灯:用Arduino UNO和SSD1306驱动0.96寸OLED,5分钟显示你的第一行字
5分钟玩转Arduino与OLED零基础点亮你的第一块屏幕第一次拿到那块比硬币大不了多少的OLED屏幕时我盯着密密麻麻的引脚发愣——这么小的东西真的能显示文字直到看见它亮起Hello World的瞬间才明白为什么电子爱好者都爱玩OLED。本文将带你绕过底层协议的复杂概念用最简单的方式让0.96寸OLED在Arduino上跑起来。1. 硬件准备像拼积木一样连接打开你的Arduino入门套件找出以下部件Arduino UNO开发板其他型号也兼容SSD1306驱动的0.96寸OLED模块注意确认是I2C接口版本4根杜邦线建议用不同颜色区分连线示意图OLED引脚Arduino引脚GNDGNDVCC3.3VSCLA5SDAA4注意部分OLED模块需要焊接背面电阻来选择I2C地址默认0x3C即可工作。若屏幕不亮尝试用刀片刮开RES电阻位置的焊盘。2. 软件配置三行代码搞定库安装打开Arduino IDE依次点击工具 → 管理库 → 搜索Adafruit SSD1306安装弹出的第一个结果当前最新版为2.5.7同样方式安装Adafruit GFX Library// 验证安装成功的测试代码 #include Adafruit_SSD1306.h Adafruit_SSD1306 display(128, 64, Wire);如果编译通过说明环境配置完成。遇到过最典型的报错是端口占用——记得关闭其他串口监控软件。3. Hello World实战从黑屏到显示删除测试代码输入以下完整示例#include Adafruit_SSD1306.h #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, Wire); void setup() { display.begin(SSD1306_SWITCHCAPVCC, 0x3C); display.clearDisplay(); display.setTextSize(2); // 2倍字号 display.setTextColor(SSD1306_WHITE); // 白色文字 display.setCursor(10, 20); // 起始坐标(X,Y) display.println(Hello World!); display.display(); // 必须调用才会刷新屏幕 } void loop() {}上传后你应该看到第一行空白正常现象是清屏结果第二行居中显示的Hello World!常见问题排查表现象可能原因解决方案白屏供电不足改用3.3V供电乱码地址错误尝试0x3C或0x3D无反应线序接反检查SCL/SDA是否交叉4. 进阶玩法让屏幕活起来基础显示搞定后试试这些增强体验的技巧动态效果实现// 在loop()中添加滚动代码 void loop() { display.startscrollright(0x00, 0x0F); // 向右滚动 delay(2000); display.stopscroll(); display.startscrollleft(0x00, 0x0F); // 向左滚动 delay(2000); display.stopscroll(); }图形绘制技巧画线display.drawLine(0, 0, 127, 63, SSD1306_WHITE);画圆display.drawCircle(64, 32, 10, SSD1306_WHITE);反色显示display.invertDisplay(true);内存优化提示当需要频繁刷新时使用display.dim(true)可降低功耗实测能减少30%的电流消耗。5. 项目延伸从玩具到工具这块小屏幕能做的远不止显示文字。去年我用它做了个便携式空气质量检测器配合BME280传感器显示温湿度用进度条表示PM2.5浓度低功耗模式下用纽扣电池供电一周// 简易传感器数据显示框架 void showSensorData(float temp, float humi) { display.clearDisplay(); display.setCursor(0,0); display.print(Temp:); display.println(temp); display.print(Humi:); display.println(humi); // 绘制进度条 display.drawRect(0, 40, map(humi,0,100,0,128), 8, SSD1306_WHITE); display.display(); }最近发现个有趣的应用用OLED模拟老式CRT显示效果通过像素抖动实现灰度显示。虽然只有1位色深但玩复古游戏时别有风味。

更多文章