Arduino使用教程
提供基于UNO PLUS的例程
硬件連接
我們提供的例程是基于UNO PLUS的,提供的連接方式也是對應(yīng)的UNO PLUS的引腳,如果需要移植程序,請按實際引腳連接
| OLED | UNO |
| VCC | 3.3V/5V |
| GND | GND |
| DIN | SPI:D11 / I2C:SDA |
| CLK | SPI:D13 / I2C:SCL |
| CS | D10 |
| DC | D7 |
| RST | D8 |
四線SPI接線圖:

arduino IDE 安裝教程
arduino IDE 安裝教程
運行程序
下載程序,找到Arduino程序文件目錄。
使用Arduino IDE打開對應(yīng)型號的工程文件夾下的 .ino 文件,重新編譯下載即可。
例如您購買的是 1.3inch OLED Module (C) 就打開 \Arduino\OLED_1in3_c 目錄下的 OLED_1in3_c.ino
軟件說明
-
下載程序,打開Arduino程序文件目錄,即可看到不同型號OLED的Arduino程序,具體對應(yīng)關(guān)系可以看下方‘型號程序?qū)?yīng)表’

- 根據(jù)你購買的尺寸和類型選擇打開的文件夾,并打開 xxx.ino 文件,我們以1.3inch OLED Module (C)為例:打開OLED_1in3_c,然后雙擊 OLED_1in3_c.ino 打開Arduino的工程。

- 型號程序?qū)?yīng)表
| 屏幕型號 | 程序文件夾 |
|---|---|
| 0.91inch OLED Module | OLED_0in91 |
| 0.95inch RGB OLED (A)/(B) | OLED_0in95_rgb |
| 0.96inch OLED (A)/(B) | OLED_0in96 |
| 1.3inch OLED (A)/(B) | OLED_1in3 |
| 1.3inch OLED Module (C) | OLED_1in3_c |
| 1.5inch OLED Module | OLED_1in5 |
| 1.5inch RGB OLED Module | OLED_1in5_rgb |
程序說明
底層硬件接口
我們進行了底層的封裝,由于硬件平臺不一樣,內(nèi)部的實現(xiàn)是不一樣的,如果需要了解內(nèi)部實現(xiàn)可以去對應(yīng)的目錄中查看 在DEV_Config.c(.h)可以看到很多定義
- 接口選擇:
#define USE_SPI_4W 1 #define USE_IIC 0 注意:切換SPI/I2C直接修改這里
- 數(shù)據(jù)類型:
#define UBYTE uint8_t #define UWORD uint16_t #define UDOUBLE uint32_t
- 模塊初始化與退出的處理:
UBYTE System_Init(void); void System_Exit(void); 注意: 1.這里是處理使用液晶屏前與使用完之后一些GPIO的處理; 2.System_Exit函數(shù)使用后,會關(guān)閉OLED顯示屏;
- GPIO讀寫:
void DEV_Digital_Write(UWORD Pin, UBYTE Value); UBYTE DEV_Digital_Read(UWORD Pin);
- SPI寫數(shù)據(jù)
UBYTE SPI4W_Write_Byte(uint8_t value);
- IIC寫數(shù)據(jù):
void I2C_Write_Byte(uint8_t value, uint8_t Cmd);
上層應(yīng)用
對于屏幕而言,如果需要進行畫圖、顯示中英文字符、顯示圖片等怎么辦,這些都是上層應(yīng)用做的。這有很多小伙伴有問到一些圖形的處理,我們這里提供了一些基本的功能 在如下的目錄中可以找到GUI和其自帶的字庫,在目錄:Arduino\OLED_xxx\GUI_Paint.c(.h)

- 新建圖像屬性:新建一個圖像屬性,這個屬性包括圖像緩存的名稱、寬度、高度、翻轉(zhuǎn)角度、顏色
void Paint_NewImage(UWORD Width, UWORD Height, UWORD Rotate, UWORD Color); 參數(shù): Width: 圖像緩存的寬度; Height: 圖像緩存的高度; Rotate:圖像的翻轉(zhuǎn)的角度 Color :圖像的初始顏色;
- 設(shè)置清屏函數(shù),通常直接調(diào)用OLED的clear函數(shù);
void Paint_SetClearFuntion(void (*Clear)(UWORD)); 參數(shù): Clear: 指向清屏函數(shù)的指針,用于快速將屏幕清空變成某顏色;
- 設(shè)置畫像素點函數(shù);
void Paint_SetDisplayFuntion(void (*Display)(UWORD,UWORD,UWORD)); 參數(shù): Display: 指向畫像素點函數(shù)的指針,用于向OLED內(nèi)部RAM指定位置寫入數(shù)據(jù);
- 選擇圖像緩存:選擇圖像緩存,選擇的目的是你可以創(chuàng)建多個圖像屬性,圖像緩存可以存在多個,你可以選擇你所創(chuàng)建的每一張圖像
void Paint_SelectImage(UBYTE *image) 參數(shù): image: 圖像緩存的名稱,實際上是一個指向圖像緩存首地址的指針;
- 圖像旋轉(zhuǎn):設(shè)置選擇好的圖像的旋轉(zhuǎn)角度,最好使用在Paint_SelectImage()后,可以選擇旋轉(zhuǎn)0、90、180、270
void Paint_SetRotate(UWORD Rotate) 參數(shù): Rotate: 圖像選擇角度,可以選擇ROTATE_0、ROTATE_90、ROTATE_180、ROTATE_270分別對應(yīng)0、90、180、270度
- 圖像鏡像翻轉(zhuǎn):設(shè)置選擇好的圖像的鏡像翻轉(zhuǎn),可以選擇不鏡像、關(guān)于水平鏡像、關(guān)于垂直鏡像、關(guān)于圖像中心鏡像。
void Paint_SetMirroring(UBYTE mirror) 參數(shù): mirror: 圖像的鏡像方式,可以選擇MIRROR_NONE、MIRROR_HORIZONTAL、MIRROR_VERTICAL、MIRROR_ORIGIN分別對應(yīng)不鏡像、關(guān)于水平鏡像、關(guān)于垂直鏡像、關(guān)于圖像中心鏡像
- 設(shè)置點在緩存中顯示位置和顏色:這里是GUI最核心的一個函數(shù)、處理點在緩存中顯示位置和顏色;
void Paint_SetPixel(UWORD Xpoint, UWORD Ypoint, UWORD Color) 參數(shù): Xpoint: 點在圖像緩存中X位置 Ypoint: 點在圖像緩存中Y位置 Color: 點顯示的顏色
- 圖像緩存填充顏色:把圖像緩存填充為某顏色,一般作為屏幕刷白的作用
void Paint_Clear(UWORD Color) 參數(shù): Color: 填充的顏色
- 圖像緩存部分窗口填充顏色:把圖像緩存的某部分窗口填充為某顏色,一般作為窗口刷白的作用,常用于時間的顯示,刷白上一秒
void Paint_ClearWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color) 參數(shù): Xstart: 窗口的X起點坐標 Ystart: 窗口的Y起點坐標 Xend: 窗口的X終點坐標 Yend: 窗口的Y終點坐標 Color: 填充的顏色
- 畫點:在圖像緩存中,在(Xpoint, Ypoint)上畫點,可以選擇顏色,點的大小,點的風(fēng)格
void Paint_DrawPoint(UWORD Xpoint, UWORD Ypoint, UWORD Color, DOT_PIXEL Dot_Pixel, DOT_STYLE Dot_Style) 參數(shù): Xpoint: 點的X坐標 Ypoint: 點的Y坐標 Color: 填充的顏色 Dot_Pixel: 點的大小,提供默認的8種大小點 typedef enum { DOT_PIXEL_1X1 = 1, // 1 x 1 DOT_PIXEL_2X2 , // 2 X 2 DOT_PIXEL_3X3 , // 3 X 3 DOT_PIXEL_4X4 , // 4 X 4 DOT_PIXEL_5X5 , // 5 X 5 DOT_PIXEL_6X6 , // 6 X 6 DOT_PIXEL_7X7 , // 7 X 7 DOT_PIXEL_8X8 , // 8 X 8 } DOT_PIXEL; Dot_Style: 點的風(fēng)格,大小擴充方式是以點為中心擴大還是以點為左下角往右上擴大 typedef enum { DOT_FILL_AROUND = 1, DOT_FILL_RIGHTUP, } DOT_STYLE;
- 畫線:在圖像緩存中,從 (Xstart, Ystart) 到 (Xend, Yend) 畫線,可以選擇顏色,線的寬度,線的風(fēng)格
void Paint_DrawLine(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color, LINE_STYLE Line_Style , LINE_STYLE Line_Style) 參數(shù): Xstart: 線的X起點坐標 Ystart: 線的Y起點坐標 Xend: 線的X終點坐標 Yend: 線的Y終點坐標 Color: 填充的顏色 Line_width: 線的寬度,提供默認的8種寬度 typedef enum { DOT_PIXEL_1X1 = 1, // 1 x 1 DOT_PIXEL_2X2 , // 2 X 2 DOT_PIXEL_3X3 , // 3 X 3 DOT_PIXEL_4X4 , // 4 X 4 DOT_PIXEL_5X5 , // 5 X 5 DOT_PIXEL_6X6 , // 6 X 6 DOT_PIXEL_7X7 , // 7 X 7 DOT_PIXEL_8X8 , // 8 X 8 } DOT_PIXEL; Line_Style: 線的風(fēng)格,選擇線是以直線連接還是以虛線的方式連接 typedef enum { LINE_STYLE_SOLID = 0, LINE_STYLE_DOTTED, } LINE_STYLE;
- 畫矩形:在圖像緩存中,從 (Xstart, Ystart) 到 (Xend, Yend) 畫一個矩形,可以選擇顏色,線的寬度,是否填充矩形內(nèi)部
void Paint_DrawRectangle(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill) 參數(shù): Xstart: 矩形的X起點坐標 Ystart: 矩形的Y起點坐標 Xend: 矩形的X終點坐標 Yend: 矩形的Y終點坐標 Color: 填充的顏色 Line_width: 矩形四邊的寬度,提供默認的8種寬度 typedef enum { DOT_PIXEL_1X1 = 1, // 1 x 1 DOT_PIXEL_2X2 , // 2 X 2 DOT_PIXEL_3X3 , // 3 X 3 DOT_PIXEL_4X4 , // 4 X 4 DOT_PIXEL_5X5 , // 5 X 5 DOT_PIXEL_6X6 , // 6 X 6 DOT_PIXEL_7X7 , // 7 X 7 DOT_PIXEL_8X8 , // 8 X 8 } DOT_PIXEL; Draw_Fill: 填充,是否填充矩形的內(nèi)部 typedef enum { DRAW_FILL_EMPTY = 0, DRAW_FILL_FULL, } DRAW_FILL;
- 畫圓:在圖像緩存中,以 (X_Center Y_Center) 為圓心,畫一個半徑為Radius的圓,可以選擇顏色,線的寬度,是否填充圓內(nèi)部
void Paint_DrawCircle(UWORD X_Center, UWORD Y_Center, UWORD Radius, UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill) 參數(shù): X_Center: 圓心的X坐標 Y_Center: 圓心的Y坐標 Radius:圓的半徑 Color: 填充的顏色 Line_width: 圓弧的寬度,提供默認的8種寬度 typedef enum { DOT_PIXEL_1X1 = 1, // 1 x 1 DOT_PIXEL_2X2 , // 2 X 2 DOT_PIXEL_3X3 , // 3 X 3 DOT_PIXEL_4X4 , // 4 X 4 DOT_PIXEL_5X5 , // 5 X 5 DOT_PIXEL_6X6 , // 6 X 6 DOT_PIXEL_7X7 , // 7 X 7 DOT_PIXEL_8X8 , // 8 X 8 } DOT_PIXEL; Draw_Fill: 填充,是否填充圓的內(nèi)部 typedef enum { DRAW_FILL_EMPTY = 0, DRAW_FILL_FULL, } DRAW_FILL;
- 寫Ascii字符:在圖像緩存中,在 (Xstart Ystart) 為左頂點,寫一個Ascii字符,可以選擇Ascii碼可視字符字庫、字體前景色、字體背景色
void Paint_DrawChar(UWORD Xstart, UWORD Ystart, const char Ascii_Char, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background) 參數(shù): Xstart: 字符的左頂點X坐標 Ystart: 字體的左頂點Y坐標 Ascii_Char:Ascii字符 Font: Ascii碼可視字符字庫,在Fonts文件夾中提供了以下字體: font8:5*8的字體 font12:7*12的字體 font16:11*16的字體 font20:14*20的字體 font24:17*24的字體 Color_Foreground: 字體顏色 Color_Background: 背景顏色
- 寫英文字符串:在圖像緩存中,在 (Xstart Ystart) 為左頂點,寫一串英文字符,可以選擇Ascii碼可視字符字庫、字體前景色、字體背景色
void Paint_DrawString_EN(UWORD Xstart, UWORD Ystart, const char * pString, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background) 參數(shù): Xstart: 字符的左頂點X坐標 Ystart: 字體的左頂點Y坐標 pString:字符串,字符串是一個指針 Font: Ascii碼可視字符字庫,在Fonts文件夾中提供了以下字體: font8:5*8的字體 font12:7*12的字體 font16:11*16的字體 font20:14*20的字體 font24:17*24的字體 Color_Foreground: 字體顏色 Color_Background: 背景顏色
- 寫中文字符串:在圖像緩存中,在 (Xstart Ystart) 為左頂點,寫一串中文字符,可以選擇GB2312編碼字符字庫、字體前景色、字體背景色;
void Paint_DrawString_CN(UWORD Xstart, UWORD Ystart, const char * pString, cFONT* font, UWORD Color_Foreground, UWORD Color_Background) 參數(shù): Xstart: 字符的左頂點X坐標 Ystart: 字體的左頂點Y坐標 pString:字符串,字符串是一個指針 Font: GB2312編碼字符字庫,在Fonts文件夾中提供了以下字體: font12CN:ascii字符字體11*21,中文字體16*21 font24CN:ascii字符字體24*41,中文字體32*41 Color_Foreground: 字體顏色 Color_Background: 背景顏色
- 寫數(shù)字:在圖像緩存中,在 (Xstart Ystart) 為左頂點,寫一串數(shù)字,可以選擇Ascii碼可視字符字庫、字體前景色、字體背景色
void Paint_DrawNum(UWORD Xpoint, UWORD Ypoint, double Nummber, sFONT* Font, UWORD Digit, UWORD Color_Foreground, UWORD Color_Background) 參數(shù): Xpoint: 字符的左頂點X坐標 Ypoint: 字體的左頂點Y坐標 Nummber:顯示的數(shù)字,可以是小數(shù) Digit:小數(shù)位數(shù),不足補零 Font: Ascii碼可視字符字庫,在Fonts文件夾中提供了以下字體: font8:5*8的字體 font12:7*12的字體 font16:11*16的字體 font20:14*20的字體 font24:17*24的字體 Color_Foreground: 字體顏色 Color_Background: 背景顏色
- 顯示時間:在圖像緩存中,在 (Xstart Ystart) 為左頂點,顯示一段時間,可以選擇Ascii碼可視字符字庫、字體前景色、字體背景色;
void Paint_DrawTime(UWORD Xstart, UWORD Ystart, PAINT_TIME *pTime, sFONT* Font, UWORD Color_Background, UWORD Color_Foreground) 參數(shù): Xstart: 字符的左頂點X坐標 Ystart: 字體的左頂點Y坐標 pTime:顯示的時間,這里定義好了一個時間的結(jié)構(gòu)體,只要把時分秒各位數(shù)傳給參數(shù); Font: Ascii碼可視字符字庫,在Fonts文件夾中提供了以下字體: font8:5*8的字體 font12:7*12的字體 font16:11*16的字體 font20:14*20的字體 font24:17*24的字體 Color_Foreground: 字體顏色 Color_Background: 背景顏色
-
OLED
+關(guān)注
關(guān)注
121文章
6331瀏覽量
232374 -
SPI接口
+關(guān)注
關(guān)注
0文章
273瀏覽量
36356 -
Arduino
+關(guān)注
關(guān)注
190文章
6514瀏覽量
195836 -
uno
+關(guān)注
關(guān)注
1文章
111瀏覽量
7683
發(fā)布評論請先 登錄
微雪Arduino系列教程三:Arduino IDE的安裝和使用
Arduino UNO OLED時鐘的硬件是由哪些部分組成的
怎樣通過Arduino IDE對Arduino UNO進行編程呢
用于Arduino Uno的Fm無線電屏蔽
Arduino UNO機械開關(guān)和OLED屏幕護罩的資料分享
微雪電子Arduino開發(fā)板UNO PLUS簡介
Arduino UNO OLED 時鐘
如何使用Arduino Uno對ATtiny85進行編程
Arduino UNO機械開關(guān)和OLED屏幕護罩開源分享
使用TCS3200和Arduino Uno制作Arduino Chameleon
如何將Arduino Uno安裝在面包板上來制作DIY Arduino Uno

Arduino使用教程 基于UNO PLUS的例程 Arduino OLED教程
評論