Arduino使用教程
提供基于UNO PLUS的例程
硬件連接
我們提供的例程是基于UNO PLUS的,提供的連接方式也是對(duì)應(yīng)的UNO PLUS的引腳,如果需要移植程序,請(qǐng)按實(shí)際引腳連接
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 安裝教程
運(yùn)行程序
下載程序,找到Arduino程序文件目錄。
使用Arduino IDE打開(kāi)對(duì)應(yīng)型號(hào)的工程文件夾下的 .ino 文件,重新編譯下載即可。
例如您購(gòu)買的是 1.3inch OLED Module (C) 就打開(kāi) \Arduino\OLED_1in3_c 目錄下的 OLED_1in3_c.ino
軟件說(shuō)明
-
下載程序,打開(kāi)Arduino程序文件目錄,即可看到不同型號(hào)OLED的Arduino程序,具體對(duì)應(yīng)關(guān)系可以看下方‘型號(hào)程序?qū)?yīng)表’

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

- 型號(hào)程序?qū)?yīng)表
屏幕型號(hào) | 程序文件夾 |
---|---|
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 |
程序說(shuō)明
底層硬件接口
我們進(jìn)行了底層的封裝,由于硬件平臺(tái)不一樣,內(nèi)部的實(shí)現(xiàn)是不一樣的,如果需要了解內(nèi)部實(shí)現(xiàn)可以去對(duì)應(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ù)使用后,會(huì)關(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)用
對(duì)于屏幕而言,如果需要進(jìn)行畫圖、顯示中英文字符、顯示圖片等怎么辦,這些都是上層應(yīng)用做的。這有很多小伙伴有問(wèn)到一些圖形的處理,我們這里提供了一些基本的功能 在如下的目錄中可以找到GUI和其自帶的字庫(kù),在目錄:Arduino\OLED_xxx\GUI_Paint.c(.h)

- 新建圖像屬性:新建一個(gè)圖像屬性,這個(gè)屬性包括圖像緩存的名稱、寬度、高度、翻轉(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è)置畫像素點(diǎn)函數(shù);
void Paint_SetDisplayFuntion(void (*Display)(UWORD,UWORD,UWORD)); 參數(shù): Display: 指向畫像素點(diǎn)函數(shù)的指針,用于向OLED內(nèi)部RAM指定位置寫入數(shù)據(jù);
- 選擇圖像緩存:選擇圖像緩存,選擇的目的是你可以創(chuàng)建多個(gè)圖像屬性,圖像緩存可以存在多個(gè),你可以選擇你所創(chuàng)建的每一張圖像
void Paint_SelectImage(UBYTE *image) 參數(shù): image: 圖像緩存的名稱,實(shí)際上是一個(gè)指向圖像緩存首地址的指針;
- 圖像旋轉(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分別對(duì)應(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分別對(duì)應(yīng)不鏡像、關(guān)于水平鏡像、關(guān)于垂直鏡像、關(guān)于圖像中心鏡像
- 設(shè)置點(diǎn)在緩存中顯示位置和顏色:這里是GUI最核心的一個(gè)函數(shù)、處理點(diǎn)在緩存中顯示位置和顏色;
void Paint_SetPixel(UWORD Xpoint, UWORD Ypoint, UWORD Color) 參數(shù): Xpoint: 點(diǎn)在圖像緩存中X位置 Ypoint: 點(diǎn)在圖像緩存中Y位置 Color: 點(diǎn)顯示的顏色
- 圖像緩存填充顏色:把圖像緩存填充為某顏色,一般作為屏幕刷白的作用
void Paint_Clear(UWORD Color) 參數(shù): Color: 填充的顏色
- 圖像緩存部分窗口填充顏色:把圖像緩存的某部分窗口填充為某顏色,一般作為窗口刷白的作用,常用于時(shí)間的顯示,刷白上一秒
void Paint_ClearWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color) 參數(shù): Xstart: 窗口的X起點(diǎn)坐標(biāo) Ystart: 窗口的Y起點(diǎn)坐標(biāo) Xend: 窗口的X終點(diǎn)坐標(biāo) Yend: 窗口的Y終點(diǎn)坐標(biāo) Color: 填充的顏色
- 畫點(diǎn):在圖像緩存中,在(Xpoint, Ypoint)上畫點(diǎn),可以選擇顏色,點(diǎn)的大小,點(diǎn)的風(fēng)格
void Paint_DrawPoint(UWORD Xpoint, UWORD Ypoint, UWORD Color, DOT_PIXEL Dot_Pixel, DOT_STYLE Dot_Style) 參數(shù): Xpoint: 點(diǎn)的X坐標(biāo) Ypoint: 點(diǎn)的Y坐標(biāo) Color: 填充的顏色 Dot_Pixel: 點(diǎn)的大小,提供默認(rèn)的8種大小點(diǎn) 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: 點(diǎn)的風(fēng)格,大小擴(kuò)充方式是以點(diǎn)為中心擴(kuò)大還是以點(diǎn)為左下角往右上擴(kuò)大 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起點(diǎn)坐標(biāo) Ystart: 線的Y起點(diǎn)坐標(biāo) Xend: 線的X終點(diǎn)坐標(biāo) Yend: 線的Y終點(diǎn)坐標(biāo) Color: 填充的顏色 Line_width: 線的寬度,提供默認(rèn)的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) 畫一個(gè)矩形,可以選擇顏色,線的寬度,是否填充矩形內(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起點(diǎn)坐標(biāo) Ystart: 矩形的Y起點(diǎn)坐標(biāo) Xend: 矩形的X終點(diǎn)坐標(biāo) Yend: 矩形的Y終點(diǎn)坐標(biāo) Color: 填充的顏色 Line_width: 矩形四邊的寬度,提供默認(rèn)的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) 為圓心,畫一個(gè)半徑為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坐標(biāo) Y_Center: 圓心的Y坐標(biāo) Radius:圓的半徑 Color: 填充的顏色 Line_width: 圓弧的寬度,提供默認(rèn)的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) 為左頂點(diǎn),寫一個(gè)Ascii字符,可以選擇Ascii碼可視字符字庫(kù)、字體前景色、字體背景色
void Paint_DrawChar(UWORD Xstart, UWORD Ystart, const char Ascii_Char, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background) 參數(shù): Xstart: 字符的左頂點(diǎn)X坐標(biāo) Ystart: 字體的左頂點(diǎn)Y坐標(biāo) Ascii_Char:Ascii字符 Font: Ascii碼可視字符字庫(kù),在Fonts文件夾中提供了以下字體: font8:5*8的字體 font12:7*12的字體 font16:11*16的字體 font20:14*20的字體 font24:17*24的字體 Color_Foreground: 字體顏色 Color_Background: 背景顏色
- 寫英文字符串:在圖像緩存中,在 (Xstart Ystart) 為左頂點(diǎn),寫一串英文字符,可以選擇Ascii碼可視字符字庫(kù)、字體前景色、字體背景色
void Paint_DrawString_EN(UWORD Xstart, UWORD Ystart, const char * pString, sFONT* Font, UWORD Color_Foreground, UWORD Color_Background) 參數(shù): Xstart: 字符的左頂點(diǎn)X坐標(biāo) Ystart: 字體的左頂點(diǎn)Y坐標(biāo) pString:字符串,字符串是一個(gè)指針 Font: Ascii碼可視字符字庫(kù),在Fonts文件夾中提供了以下字體: font8:5*8的字體 font12:7*12的字體 font16:11*16的字體 font20:14*20的字體 font24:17*24的字體 Color_Foreground: 字體顏色 Color_Background: 背景顏色
- 寫中文字符串:在圖像緩存中,在 (Xstart Ystart) 為左頂點(diǎn),寫一串中文字符,可以選擇GB2312編碼字符字庫(kù)、字體前景色、字體背景色;
void Paint_DrawString_CN(UWORD Xstart, UWORD Ystart, const char * pString, cFONT* font, UWORD Color_Foreground, UWORD Color_Background) 參數(shù): Xstart: 字符的左頂點(diǎn)X坐標(biāo) Ystart: 字體的左頂點(diǎn)Y坐標(biāo) pString:字符串,字符串是一個(gè)指針 Font: GB2312編碼字符字庫(kù),在Fonts文件夾中提供了以下字體: font12CN:ascii字符字體11*21,中文字體16*21 font24CN:ascii字符字體24*41,中文字體32*41 Color_Foreground: 字體顏色 Color_Background: 背景顏色
- 寫數(shù)字:在圖像緩存中,在 (Xstart Ystart) 為左頂點(diǎn),寫一串?dāng)?shù)字,可以選擇Ascii碼可視字符字庫(kù)、字體前景色、字體背景色
void Paint_DrawNum(UWORD Xpoint, UWORD Ypoint, double Nummber, sFONT* Font, UWORD Digit, UWORD Color_Foreground, UWORD Color_Background) 參數(shù): Xpoint: 字符的左頂點(diǎn)X坐標(biāo) Ypoint: 字體的左頂點(diǎn)Y坐標(biāo) Nummber:顯示的數(shù)字,可以是小數(shù) Digit:小數(shù)位數(shù),不足補(bǔ)零 Font: Ascii碼可視字符字庫(kù),在Fonts文件夾中提供了以下字體: font8:5*8的字體 font12:7*12的字體 font16:11*16的字體 font20:14*20的字體 font24:17*24的字體 Color_Foreground: 字體顏色 Color_Background: 背景顏色
- 顯示時(shí)間:在圖像緩存中,在 (Xstart Ystart) 為左頂點(diǎn),顯示一段時(shí)間,可以選擇Ascii碼可視字符字庫(kù)、字體前景色、字體背景色;
void Paint_DrawTime(UWORD Xstart, UWORD Ystart, PAINT_TIME *pTime, sFONT* Font, UWORD Color_Background, UWORD Color_Foreground) 參數(shù): Xstart: 字符的左頂點(diǎn)X坐標(biāo) Ystart: 字體的左頂點(diǎn)Y坐標(biāo) pTime:顯示的時(shí)間,這里定義好了一個(gè)時(shí)間的結(jié)構(gòu)體,只要把時(shí)分秒各位數(shù)傳給參數(shù); Font: Ascii碼可視字符字庫(kù),在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)注
120文章
6286瀏覽量
228108 -
SPI接口
+關(guān)注
關(guān)注
0文章
264瀏覽量
35532 -
Arduino
+關(guān)注
關(guān)注
190文章
6498瀏覽量
192230 -
uno
+關(guān)注
關(guān)注
1文章
111瀏覽量
7400
發(fā)布評(píng)論請(qǐng)先 登錄
微雪Arduino系列教程三:Arduino IDE的安裝和使用
Arduino UNO OLED時(shí)鐘的硬件是由哪些部分組成的
怎樣通過(guò)Arduino IDE對(duì)Arduino UNO進(jìn)行編程呢
用于Arduino Uno的Fm無(wú)線電屏蔽
Arduino UNO機(jī)械開(kāi)關(guān)和OLED屏幕護(hù)罩的資料分享
微雪電子Arduino開(kāi)發(fā)板UNO PLUS簡(jiǎn)介

Arduino UNO OLED 時(shí)鐘

如何使用Arduino Uno對(duì)ATtiny85進(jìn)行編程

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

使用TCS3200和Arduino Uno制作Arduino Chameleon

如何將Arduino Uno安裝在面包板上來(lái)制作DIY Arduino Uno

使用Arduino UNO構(gòu)建游戲

評(píng)論