?一、準備工作
????????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”,測試成功