在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

開山師傅 ? 來源:嵌入式應用開發 ? 作者:嵌入式應用開發 ? 2022-05-05 18:46 ? 次閱讀

Arduino使用教程

提供基于UNO PLUS的例程

硬件連接

我們提供的例程是基于UNO PLUS的,提供的連接方式也是對應的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接線圖:

1.3inch OLED-Aduino.jpg

arduino IDE 安裝教程

arduino IDE 安裝教程

運行程序

下載程序,找到Arduino程序文件目錄。
使用Arduino IDE打開對應型號的工程文件夾下的 .ino 文件,重新編譯下載即可。
例如您購買的是 1.3inch OLED Module (C) 就打開 \Arduino\OLED_1in3_c 目錄下的 OLED_1in3_c.ino

軟件說明

  • 下載程序,打開Arduino程序文件目錄,即可看到不同型號OLED的Arduino程序,具體對應關系可以看下方‘型號程序對應表’
OLED Arduino code1.png


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


  • 型號程序對應表
屏幕型號 程序文件夾
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

程序說明

底層硬件接口

我們進行了底層的封裝,由于硬件平臺不一樣,內部的實現是不一樣的,如果需要了解內部實現可以去對應的目錄中查看 在DEV_Config.c(.h)可以看到很多定義

  • 接口選擇:

#define USE_SPI_4W 1 #define USE_IIC 0 注意:切換SPI/I2C直接修改這里

  • 數據類型:

#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函數使用后,會關閉OLED顯示屏;

  • GPIO讀寫:

void DEV_Digital_Write(UWORD Pin, UBYTE Value); UBYTE DEV_Digital_Read(UWORD Pin);

  • SPI寫數據

UBYTE SPI4W_Write_Byte(uint8_t value);

  • IIC寫數據:

void I2C_Write_Byte(uint8_t value, uint8_t Cmd);

上層應用

對于屏幕而言,如果需要進行畫圖、顯示中英文字符、顯示圖片等怎么辦,這些都是上層應用做的。這有很多小伙伴有問到一些圖形的處理,我們這里提供了一些基本的功能 在如下的目錄中可以找到GUI和其自帶的字庫,在目錄:Arduino\OLED_xxx\GUI_Paint.c(.h)

OLED Arduino code3.png


  • 新建圖像屬性:新建一個圖像屬性,這個屬性包括圖像緩存的名稱、寬度、高度、翻轉角度、顏色

void Paint_NewImage(UWORD Width, UWORD Height, UWORD Rotate, UWORD Color); 參數: Width: 圖像緩存的寬度; Height: 圖像緩存的高度; Rotate:圖像的翻轉的角度 Color :圖像的初始顏色;

  • 設置清屏函數,通常直接調用OLED的clear函數;

void Paint_SetClearFuntion(void (*Clear)(UWORD)); 參數: Clear: 指向清屏函數的指針,用于快速將屏幕清空變成某顏色;

  • 設置畫像素點函數;

void Paint_SetDisplayFuntion(void (*Display)(UWORD,UWORD,UWORD)); 參數: Display: 指向畫像素點函數的指針,用于向OLED內部RAM指定位置寫入數據;

  • 選擇圖像緩存:選擇圖像緩存,選擇的目的是你可以創建多個圖像屬性,圖像緩存可以存在多個,你可以選擇你所創建的每一張圖像

void Paint_SelectImage(UBYTE *image) 參數: image: 圖像緩存的名稱,實際上是一個指向圖像緩存首地址的指針;

  • 圖像旋轉:設置選擇好的圖像的旋轉角度,最好使用在Paint_SelectImage()后,可以選擇旋轉0、90、180、270

void Paint_SetRotate(UWORD Rotate) 參數: Rotate: 圖像選擇角度,可以選擇ROTATE_0、ROTATE_90、ROTATE_180、ROTATE_270分別對應0、90、180、270度

  • 圖像鏡像翻轉:設置選擇好的圖像的鏡像翻轉,可以選擇不鏡像、關于水平鏡像、關于垂直鏡像、關于圖像中心鏡像。

void Paint_SetMirroring(UBYTE mirror) 參數: mirror: 圖像的鏡像方式,可以選擇MIRROR_NONE、MIRROR_HORIZONTAL、MIRROR_VERTICAL、MIRROR_ORIGIN分別對應不鏡像、關于水平鏡像、關于垂直鏡像、關于圖像中心鏡像

  • 設置點在緩存中顯示位置和顏色:這里是GUI最核心的一個函數、處理點在緩存中顯示位置和顏色;

void Paint_SetPixel(UWORD Xpoint, UWORD Ypoint, UWORD Color) 參數: Xpoint: 點在圖像緩存中X位置 Ypoint: 點在圖像緩存中Y位置 Color: 點顯示的顏色

  • 圖像緩存填充顏色:把圖像緩存填充為某顏色,一般作為屏幕刷白的作用

void Paint_Clear(UWORD Color) 參數: Color: 填充的顏色

  • 圖像緩存部分窗口填充顏色:把圖像緩存的某部分窗口填充為某顏色,一般作為窗口刷白的作用,常用于時間的顯示,刷白上一秒

void Paint_ClearWindows(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color) 參數: Xstart: 窗口的X起點坐標 Ystart: 窗口的Y起點坐標 Xend: 窗口的X終點坐標 Yend: 窗口的Y終點坐標 Color: 填充的顏色

  • 畫點:在圖像緩存中,在(Xpoint, Ypoint)上畫點,可以選擇顏色,點的大小,點的風格

void Paint_DrawPoint(UWORD Xpoint, UWORD Ypoint, UWORD Color, DOT_PIXEL Dot_Pixel, DOT_STYLE Dot_Style) 參數: 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: 點的風格,大小擴充方式是以點為中心擴大還是以點為左下角往右上擴大 typedef enum { DOT_FILL_AROUND = 1, DOT_FILL_RIGHTUP, } DOT_STYLE;

  • 畫線:在圖像緩存中,從 (Xstart, Ystart) 到 (Xend, Yend) 畫線,可以選擇顏色,線的寬度,線的風格

void Paint_DrawLine(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color, LINE_STYLE Line_Style , LINE_STYLE Line_Style) 參數: 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: 線的風格,選擇線是以直線連接還是以虛線的方式連接 typedef enum { LINE_STYLE_SOLID = 0, LINE_STYLE_DOTTED, } LINE_STYLE;

  • 畫矩形:在圖像緩存中,從 (Xstart, Ystart) 到 (Xend, Yend) 畫一個矩形,可以選擇顏色,線的寬度,是否填充矩形內部

void Paint_DrawRectangle(UWORD Xstart, UWORD Ystart, UWORD Xend, UWORD Yend, UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill) 參數: 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: 填充,是否填充矩形的內部 typedef enum { DRAW_FILL_EMPTY = 0, DRAW_FILL_FULL, } DRAW_FILL;

  • 畫圓:在圖像緩存中,以 (X_Center Y_Center) 為圓心,畫一個半徑為Radius的圓,可以選擇顏色,線的寬度,是否填充圓內部

void Paint_DrawCircle(UWORD X_Center, UWORD Y_Center, UWORD Radius, UWORD Color, DOT_PIXEL Line_width, DRAW_FILL Draw_Fill) 參數: 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: 填充,是否填充圓的內部 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) 參數: 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) 參數: 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) 參數: Xstart: 字符的左頂點X坐標 Ystart: 字體的左頂點Y坐標 pString:字符串,字符串是一個指針 Font: GB2312編碼字符字庫,在Fonts文件夾中提供了以下字體: font12CN:ascii字符字體11*21,中文字體16*21 font24CN:ascii字符字體24*41,中文字體32*41 Color_Foreground: 字體顏色 Color_Background: 背景顏色

  • 寫數字:在圖像緩存中,在 (Xstart Ystart) 為左頂點,寫一串數字,可以選擇Ascii碼可視字符字庫、字體前景色、字體背景色

void Paint_DrawNum(UWORD Xpoint, UWORD Ypoint, double Nummber, sFONT* Font, UWORD Digit, UWORD Color_Foreground, UWORD Color_Background) 參數: Xpoint: 字符的左頂點X坐標 Ypoint: 字體的左頂點Y坐標 Nummber:顯示的數字,可以是小數 Digit:小數位數,不足補零 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) 參數: Xstart: 字符的左頂點X坐標 Ystart: 字體的左頂點Y坐標 pTime:顯示的時間,這里定義好了一個時間的結構體,只要把時分秒各位數傳給參數; Font: Ascii碼可視字符字庫,在Fonts文件夾中提供了以下字體: font8:5*8的字體 font12:7*12的字體 font16:11*16的字體 font20:14*20的字體 font24:17*24的字體 Color_Foreground: 字體顏色 Color_Background: 背景顏色

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • OLED
    +關注

    關注

    119

    文章

    6200

    瀏覽量

    224216
  • SPI接口
    +關注

    關注

    0

    文章

    258

    瀏覽量

    34383
  • Arduino
    +關注

    關注

    188

    文章

    6469

    瀏覽量

    187092
  • uno
    uno
    +關注

    關注

    1

    文章

    111

    瀏覽量

    7071
收藏 人收藏

    評論

    相關推薦

    微雪Arduino系列教程三:Arduino IDE的安裝和使用

    。安裝完成后,將UNO PLUS通過USB線連接到電腦。查看設備管理器,如果出現相應的串口號,說明驅動安裝成功。三、Arduino IDE設置語言若界面為英文,可通過下面操作修改界面語言點擊File
    發表于 04-27 19:49

    Arduino UNO OLED時鐘的硬件是由哪些部分組成的

    硬件基礎1. arduino UNO 開發板2.128x64 OLED 7線 SPI3.DS3231時鐘模塊Arduino 代碼 PS:需要下載相應的庫文件#include #incl
    發表于 01-17 06:28

    怎樣通過Arduino IDE對Arduino UNO進行編程呢

    Arduino UNO是什么呢?怎樣通過Arduino IDE對Arduino UNO進行編程呢?有哪些注意事項?
    發表于 01-24 06:57

    用于Arduino Uno的Fm無線電屏蔽

    描述FM 無線電盾牌 ARDUINO UNO用于 Arduino Uno 的 Fm 無線電屏蔽。便于使用。簡單便宜的 Rda5807 Fm 模塊。1x - I2C
    發表于 08-26 07:19

    Arduino UNO機械開關和OLED屏幕護罩的資料分享

    描述Arduino UNO機械開關和OLED屏幕護罩材料:4 個 10 歐姆電阻。4 個機械鍵盤開關。1x Arduino UNO20x 通
    發表于 08-30 06:54

    0.96_OLED顯示屏_arduino_IIC_例程

    0.96OLED顯示屏_arduino_IIC_例程.rar
    發表于 07-11 18:43 ?96次下載

    0.96_OLED顯示屏_arduino_SPI_例程

    0.96OLED顯示屏_arduino_SPI_例程.rar
    發表于 07-12 10:36 ?117次下載

    微雪電子Arduino開發板UNO PLUS簡介

    ATMEGA328P開發板 兼容Arduino UNO R3 改進版UNO R3 型號 UNO PLUS 本產品由微雪電子研發、生產,并提供
    的頭像 發表于 12-27 09:31 ?5759次閱讀
    微雪電子<b class='flag-5'>Arduino</b>開發板<b class='flag-5'>UNO</b> <b class='flag-5'>PLUS</b>簡介

    Arduino UNO OLED 時鐘

    硬件基礎1. arduino UNO 開發板2.128x64 OLED 7線 SPI3.DS3231時鐘模塊Arduino 代碼 PS:需要下載相應的庫文件#include
    發表于 01-18 09:51 ?10次下載
    <b class='flag-5'>Arduino</b> <b class='flag-5'>UNO</b> <b class='flag-5'>OLED</b> 時鐘

    如何使用Arduino Uno對ATtiny85進行編程

    在本文中,我將引導您完成在 Arduino Uno 的幫助下從 Arduino IDE對 ATtiny85 進行編程的過程?;旧希覀儗⑹褂?Arduino
    發表于 08-05 16:35 ?6976次閱讀
    如何使用<b class='flag-5'>Arduino</b> <b class='flag-5'>Uno</b>對ATtiny85進行編程

    Arduino UNO機械開關和OLED屏幕護罩開源分享

    電子發燒友網站提供《Arduino UNO機械開關和OLED屏幕護罩開源分享.zip》資料免費下載
    發表于 08-11 09:33 ?0次下載
    <b class='flag-5'>Arduino</b> <b class='flag-5'>UNO</b>機械開關和<b class='flag-5'>OLED</b>屏幕護罩開源分享

    DIY ARDUINO UNO

    電子發燒友網站提供《DIY ARDUINO UNO板.zip》資料免費下載
    發表于 08-19 09:28 ?7次下載
    DIY <b class='flag-5'>ARDUINO</b> <b class='flag-5'>UNO</b>板

    使用TCS3200和Arduino Uno制作Arduino Chameleon

    電子發燒友網站提供《使用TCS3200和Arduino Uno制作Arduino Chameleon.zip》資料免費下載
    發表于 10-27 09:55 ?2次下載
    使用TCS3200和<b class='flag-5'>Arduino</b> <b class='flag-5'>Uno</b>制作<b class='flag-5'>Arduino</b> Chameleon

    Arduino Uno入門

    電子發燒友網站提供《Arduino Uno入門.zip》資料免費下載
    發表于 11-21 09:24 ?6次下載
    <b class='flag-5'>Arduino</b> <b class='flag-5'>Uno</b>入門

    如何將Arduino Uno安裝在面包板上來制作DIY Arduino Uno

    電子發燒友網站提供《如何將Arduino Uno安裝在面包板上來制作DIY Arduino Uno.zip》資料免費下載
    發表于 12-27 09:23 ?2次下載
    如何將<b class='flag-5'>Arduino</b> <b class='flag-5'>Uno</b>安裝在面包板上來制作DIY <b class='flag-5'>Arduino</b> <b class='flag-5'>Uno</b>
    主站蜘蛛池模板: 97人人揉人人捏人人添| 亚洲第一看片| 亚洲婷婷六月| 精品伊人久久大线蕉色首页| 午夜视频免费看| 亚洲一区二区三区在线视频| 涩五月婷婷| 亚洲手机看片| 亚洲欧美一区二区三区四区| 天天操好逼| 天天躁夜夜躁狠狠躁2021| 日韩一区二区在线观看| 亚洲黄色一区| 18满xo影院视频免费体验区| 色www永久免费| 天天天天添天天拍天天谢| 天天视频一区二区三区| 欧美日韩中文字幕在线| 天堂网www在线资源网| 免费色黄网站| 狠狠色网| 亚洲人成网站色7799在线观看| 亚洲一区二区福利视频| 人人看人人干| 人人玩人人干| 亚洲开心激情网| www.瑟瑟| 日本一区高清视频| 玖玖激情| 在线免费观看色片| 日本天天色| 理论片午午伦夜理片影院99| 亚州1区2区3区4区产品乱码2021 | 欧美sese| 黄黄网| 天天躁日日躁成人字幕aⅴ| 午夜在线观看免费观看大全| 免费亚洲一区| 成人看的一级毛片| 色视频在线观看完整免费版| 国内真实下药迷j在线观看|