Ardunio 连接OLED触摸屏(SSD1106驱动 4针 IIC通信)

发布于:2025-03-20 ⋅ 阅读:(24) ⋅ 点赞:(0)

 一、准备工作

        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”,测试成功