一、准备工作
1、硬件
UNO R3 :1套
OLED触摸屏:1套
导线诺干
2、软件
arduino
二、接线
UNO R3 | OLED | |
5V | VCC | |
GND | GND | |
A5 | SCL | |
A4 | SDA |
脚位如下图所示:
Uno R3脚位图
触摸屏脚位图
查阅显示屏的驱动规格:通常显示屏驱动芯片有SSD1306,SH1106
我在淘宝买到的这款比较奇怪,是SSD1106的
三、写代码
1、安装驱动
Tools->Manage Libraries
在搜索栏收索U8glib,点击安装。(如果是SSD1306驱动的显示屏,则搜索SSD1306)
2、按照厂家示例代码,修改编写一个显示hello world的小程序,通过Arduino IDE下载到R3中(SSD1306驱动的显示屏,第一行改#include “ACROBOTIC SSD 1306”)
#include "U8glib.h"
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE);
void u8g_prepare(void) {
u8g.setFont(u8g_font_6x10); // 使用6x10像素字体
u8g.setFontRefHeightExtendedText();
u8g.setDefaultForegroundColor();
u8g.setFontPosTop();
}
void drawHelloWorld(void) {
u8g_prepare();
u8g.firstPage();
do {
// 计算居中坐标("helloworld"共10字符,6像素宽/字符)
int x = (128 - 10*6)/2; // 水平居中
int y = 32; // 垂直居中
u8g.drawStr(x, y, "helloworld");
} while(u8g.nextPage());
}
void setup() {
// 显示模式设置
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);
u8g_prepare();
}
void loop() {
drawHelloWorld();
// 移除所有动画逻辑,保持静态显示
// 延迟可保留但非必须
delay(100);
}
注意,下载到R3之前,需要安装 U8glib驱动。否则会出现U8glib缺失的报错
如果安装驱动不匹配,可能会出现下面效果或者显示屏不亮的情况
四、测试
显示屏成功显示 “hello world”,测试成功