oled屏幕
oled
連接線路
Oled-Arduino:
GND-GND
VCC-3v3
SCL-A4
SDA-A5
案例
使用arduino控制oled屏幕循環(huán)輪播顯示兩種不同的“續(xù)加儀”字樣。
庫使用
需要使用到已有庫Wire、Adafruit_GFX、Adafruit_SSD1306,可直接在arduino中搜素安裝
基本的用法如下:
//引入IIC通訊所需的Wire庫文件
#include
// 引入驅(qū)動OLED0.96所需的庫
#include
#include
// 參數(shù)依次為:屏幕像素寬、高、Wire對象、重置引腳
Adafruit_SSD1306 display(128, 64, &Wire, 4);
// 初始化OLED并設(shè)置其IIC地址為 0x3C
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
//設(shè)置光標(biāo)位置
display.setCursor(0, 0);
//輸出文字(西文);
display.print("hello Xujiayi!");
//顯示
display.display();
自定義圖形/文字輸出:
static const unsigned char PROGMEM xu[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x01,0x00,0x1C,0x00,0x03,0x80,0x18,0x00,
0x03,0x00,0x18,0x60,0x02,0x07,0xFF,0xF0,0x06,0x00,0x18,0x00,0x04,0x20,0x18,0x00,
0x0C,0x38,0x18,0x00,0x08,0x70,0x18,0x08,0x10,0x6F,0xFF,0xFC,0x31,0xC0,0x08,0x1C,
0x3E,0x82,0x0E,0x30,0x11,0x81,0xCC,0x20,0x01,0x00,0xCC,0x00,0x02,0x00,0x4C,0x00,
0x06,0x06,0x0C,0x00,0x04,0x03,0x8C,0x00,0x08,0xF1,0x8C,0x00,0x1F,0x01,0x08,0x18,
0x18,0x1F,0xFF,0xFC,0x00,0x00,0x08,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,
0x00,0xE0,0x37,0x00,0x1F,0x00,0x61,0xC0,0x38,0x00,0xC0,0x70,0x00,0x03,0x80,0x30,
0x00,0x0E,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*"續(xù)",0*/
// 顯示文字 (左上x坐標(biāo),右上y坐標(biāo), 圖形數(shù)組, 圖形像素點寬、高, 顏色)
display.drawBitmap(0, 0, xu, 32, 32, 1);
其中圖形數(shù)組的獲取方法見下文。
取模
使用pctolcd軟件即可完成:
然后復(fù)制數(shù)據(jù)作為數(shù)組數(shù)據(jù)即可
實現(xiàn)
static const unsigned char PROGMEM xu[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x01,0x00,0x1C,0x00,0x03,0x80,0x18,0x00,
0x03,0x00,0x18,0x60,0x02,0x07,0xFF,0xF0,0x06,0x00,0x18,0x00,0x04,0x20,0x18,0x00,
0x0C,0x38,0x18,0x00,0x08,0x70,0x18,0x08,0x10,0x6F,0xFF,0xFC,0x31,0xC0,0x08,0x1C,
0x3E,0x82,0x0E,0x30,0x11,0x81,0xCC,0x20,0x01,0x00,0xCC,0x00,0x02,0x00,0x4C,0x00,
0x06,0x06,0x0C,0x00,0x04,0x03,0x8C,0x00,0x08,0xF1,0x8C,0x00,0x1F,0x01,0x08,0x18,
0x18,0x1F,0xFF,0xFC,0x00,0x00,0x08,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x18,0x00,
0x00,0xE0,0x37,0x00,0x1F,0x00,0x61,0xC0,0x38,0x00,0xC0,0x70,0x00,0x03,0x80,0x30,
0x00,0x0E,0x00,0x10,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*"續(xù)",0*/
static const unsigned char PROGMEM jia[] = {
0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x01,0x80,0x00,0x00,
0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x00,0x01,0x80,0x00,0x10,0x01,0x82,0x1F,0xF8,
0x3F,0xFF,0x10,0x18,0x01,0x83,0x10,0x18,0x01,0x82,0x10,0x18,0x01,0x82,0x10,0x18,
0x01,0x82,0x10,0x18,0x01,0x82,0x10,0x18,0x01,0x82,0x10,0x18,0x01,0x82,0x10,0x18,
0x01,0x82,0x10,0x18,0x01,0x82,0x10,0x18,0x01,0x02,0x10,0x18,0x01,0x02,0x10,0x18,
0x03,0x06,0x10,0x18,0x03,0x06,0x10,0x18,0x02,0x06,0x10,0x18,0x06,0x06,0x10,0x18,
0x04,0x06,0x10,0x18,0x0D,0x0C,0x1F,0xF8,0x08,0xFC,0x10,0x18,0x10,0x38,0x10,0x18,
0x20,0x10,0x10,0x18,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*"加",1*/
static const unsigned char PROGMEM yi[] = {
0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x70,0x80,0x00,0x00,0xE0,0x40,0x00,
0x00,0xC0,0x20,0x00,0x00,0xC0,0x30,0x00,0x01,0x80,0x38,0x40,0x01,0x80,0x18,0x60,
0x03,0x04,0x10,0xE0,0x03,0x04,0x00,0xC0,0x03,0x82,0x00,0x80,0x07,0x82,0x01,0x80,
0x0D,0x82,0x01,0x80,0x09,0x81,0x03,0x00,0x19,0x81,0x03,0x00,0x11,0x80,0x86,0x00,
0x21,0x80,0xC6,0x00,0x41,0x80,0x44,0x00,0x01,0x80,0x6C,0x00,0x01,0x80,0x28,0x00,
0x01,0x80,0x38,0x00,0x01,0x80,0x38,0x00,0x01,0x80,0x6C,0x00,0x01,0x80,0x46,0x00,
0x01,0x80,0x83,0x80,0x01,0x83,0x01,0xC0,0x01,0x86,0x00,0xF0,0x01,0x88,0x00,0x7E,
0x01,0xB0,0x00,0x30,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*"儀",2*/
static const unsigned char PROGMEM xu1[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x00,
0x00,0x60,0x38,0x00,0x00,0xE3,0xFF,0xC0,0x01,0xE3,0xFF,0xC0,0x07,0x80,0x38,0x30,
0x0E,0x37,0xFF,0xF0,0x1C,0xF7,0x00,0x70,0x1F,0xE1,0xCC,0x30,0x11,0xC0,0xEE,0x10,
0x03,0x03,0x0C,0x10,0x06,0xF3,0xCC,0x10,0x0F,0xC0,0x2C,0x00,0x0E,0x07,0xFF,0xFE,
0x00,0x7F,0xFF,0xFE,0x07,0xE0,0x38,0x3C,0x3F,0x80,0x77,0x00,0x7E,0x01,0xE7,0x80,
0x38,0x3F,0xC1,0xC0,0x00,0x1E,0x00,0xE0,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*"續(xù)",0*/
static const unsigned char PROGMEM jia1[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,
0x00,0x1C,0x00,0x00,0x03,0x18,0x00,0x00,0x07,0xF8,0x00,0x00,0x0F,0xFF,0x18,0x18,
0x00,0x3F,0xBF,0xF8,0x00,0x73,0xBF,0xF8,0x00,0x63,0xB8,0x38,0x00,0xE3,0x38,0x18,
0x00,0xC3,0x38,0x18,0x01,0xC3,0x38,0x18,0x03,0x87,0x38,0x18,0x03,0x86,0x38,0x38,
0x07,0x0E,0x3F,0xF8,0x1E,0x0E,0x1F,0xF8,0x3C,0x1C,0x00,0x00,0x78,0x78,0x00,0x00,
0x31,0xF8,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*"加",1*/
static const unsigned char PROGMEM yi1[] = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,
0x00,0x70,0xC3,0x00,0x03,0xE0,0xE3,0x80,0x7F,0xC0,0x63,0x80,0x7F,0x80,0x27,0x00,
0x7F,0x8E,0x07,0x00,0x33,0x8F,0x07,0x00,0x03,0x83,0xCE,0x00,0x03,0x81,0xEE,0x00,
0x03,0x80,0x7C,0x00,0x03,0x80,0x3C,0x00,0x03,0x80,0x3C,0x00,0x03,0x80,0x7F,0x00,
0x03,0x81,0xE7,0x80,0x03,0x87,0xC3,0xE0,0x03,0xFF,0x81,0xF8,0x03,0xBE,0x00,0xFF,
0x03,0x80,0x00,0xFE,0x03,0x80,0x00,0x7C,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};/*"儀",2*/
//引入IIC通訊所需的Wire庫文件
#include
// 引入驅(qū)動OLED0.96所需的庫
#include
#include
// 參數(shù)依次為:屏幕像素寬、高、Wire對象、重置引腳
Adafruit_SSD1306 display(128, 64, &Wire, 4);
void setup()
{
// 初始化OLED并設(shè)置其IIC地址為 0x3C
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
}
int pos_x = 0;
void loop()
{
if(pos_x<256){
// 顯示之前清屏
display.clearDisplay();
showCon(pos_x++);
showCon(pos_x-128);
//顯示圖形
display.display();
}else if(pos_x<512){
// 顯示之前清屏
display.clearDisplay();
showCon1(pos_x++-256);
showCon1(pos_x-256-128);
//顯示圖形
display.display();
}else
pos_x=0;
}
void showCon(int x)
{
display.drawBitmap(x, 16, xu, 32, 32, 1);
display.drawBitmap(x+32, 16, jia, 32, 32, 1);
display.drawBitmap(x+64, 16, yi, 32, 32, 1);
}
void showCon1(int x)
{
display.drawBitmap(x+0, 16, xu1, 32, 32, 1);
display.drawBitmap(x+32, 16, jia1, 32, 32, 1);
display.drawBitmap(x+64, 16, yi1, 32, 32, 1);
}
審核編輯:劉清
-
OLED屏幕
+關(guān)注
關(guān)注
3文章
206瀏覽量
28368 -
Arduino
+關(guān)注
關(guān)注
188文章
6485瀏覽量
189835 -
GND
+關(guān)注
關(guān)注
2文章
541瀏覽量
39419
原文標(biāo)題:Arduino控制oled屏幕顯示自定義字體文字
文章出處:【微信號:續(xù)加儀,微信公眾號:續(xù)加儀】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄

用單片機(jī)編寫控制OLED屏幕驅(qū)動顯示
OLED顯示流程(簡析)
labview的兩種循環(huán)
顯示的屏幕主要有LED、LCD、OLED、AMOLED、TFT這五種,
基于stm32f103與IIC的0.96OLED屏幕顯示字符與平滑滾動顯示 精選資料推薦
介紹兩種基于Arduino的風(fēng)扇自動調(diào)速方案
各種OLED屏幕的使用方式的總結(jié)
單個GPIO控制兩種LED交替顯示的過程
Arduino UNO機(jī)械開關(guān)和OLED屏幕護(hù)罩的資料分享
分析lcd屏幕與oled屏幕之間的區(qū)別
手機(jī)LCD屏幕、OLED屏幕性能測試測試專家——大電流彈片微針模組
單個GPIO控制兩種LED交替顯示

Arduino UNO機(jī)械開關(guān)和OLED屏幕護(hù)罩開源分享

Hello Alexa使用OLED顯示模塊和Arduino

評論