色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

如何讓Arduino顯示“ Hello World!”

454398 ? 來源:網絡整理 ? 作者:網絡整理 ? 2020-01-28 17:49 ? 次閱讀

步驟1:我們要做的事情今日學習

我們將討論:

-什么是OLED顯示器?

-然后我們將仔細研究0.91(128x32)和0.96(128x64)I2C OLED顯示器

-接下來,我們將討論將Adafruit庫安裝到Arduino IDE

-然后我們將NodeMCU和Arduino連接到OLED顯示器

-接下來,我們將看一下代碼并在其中顯示一些圖形和文本

-我們還將討論應用自定義字體和顯示圖像

-然后,我們將使用I2C多路復用器將多個OLED連接到微控制器

-最后,我們將討論人們在使用OLED顯示器時犯的一些常見錯誤

步驟2:硬件要求

對于本教程,我們需要:

-A面包板

-一個0.91英寸(128x32)和0.96英寸(128x64)I2C OLED顯示器

-Arduino UNO/NANO(方便使用)

-NodeMCU

-TCA9548A I2C多路復用器

-很少使用連接電纜

-和一根USB電纜來上傳代碼

步驟3:什么是OLED顯示器?

OLED或有機發光二極管是發光的

二極管(LED),其中的電致發光元件該層是一層有機化合物薄膜(數百萬個小的LED燈),可響應電流而發光。

OLED用于在電視屏幕,計算機顯示器,便攜式系統等設備中創建數字顯示器。例如手機,手持游戲機和PDA。 OLED顯示器不發光,因為它發出可見光。

步驟4:

OLED顯示器的類型很多

市場上的

-尺寸

-顏色

-品牌

-協議

-SPI(串行外圍接口)或I2C

-無源矩陣(PMOLED)或有源矩陣(AMOLED)控制方案

我將討論將藍色的0.91(128x32 OLED)和0.96(128x64 OLED)I2C OLDE顯示器連接到Arduino NANO和NodeMCU。 I2C總線技術僅使用MCU的2個引腳,因此我們可以為其他傳感器提供堆。

步驟5:細看

在這兩個顯示器上放個更近些。

在這些顯示器的背面,有很多貼片SMD電容器電阻器焊接在板上。但是,由于它是I2C設備,我們只關心這2個引腳(SCL和SDA)

顯示器僅使用四根電線連接到Arduino –兩根用于電源(VCC和GND),兩根用于數據(串行)時鐘SCL和

串行數據SDA),從而使接線非常簡單。數據連接為I2C(I2C,IIC或內部集成電路),該接口也稱為TWI(兩線接口)。

-板載引腳的順序可以不同,因此始終為三重在將其連接到項目之前,請進行檢查。

-工作電壓在3v至5v之間,但是,最好使用制造商數據表中的指導。

-有時我們需要在項目中使用2個顯示器。那么,我們如何實現呢?

訣竅是在顯示器上顯示一個可配置的地址。該單元的可配置地址在0x78和0x7A之間。只需從一側解焊0Ohm電阻器并將其連接到另一側,或者僅通過放置全局焊料即可更改地址。在本教程后面的部分中,當我們將多個顯示器連接到Arduino時,我們將深入討論它。

在圖中,這些顯示器看起來非常大。但是,實際上,它們很小。它們由128 x 32/64個單獨的OLED像素制成,不需要任何背光??纯催@個,看看它有多小。即使它們很小,它們也可以在任何電子項目中非常有用。

步驟6:庫

有幾個庫可以控制這些顯示

。過去我曾經使用過“ u8glib庫”,但是我發現AdaFruit庫在我們的項目中非常易于理解和使用。因此,我將在本教程中使用AdaFruit庫。

要控制OLED顯示,您需要“ adafruit_GFX.h”庫和“ adafruit_SSD1306.h”庫。

有兩種下載庫并將其安裝到Arduino IDE的方法。

方法1

轉到“庫管理器”并搜索“ adafruit_SSD1306”和“ adafruit_gfx” “

選擇最新版本,然后單擊“安裝”按鈕。

安裝后,您可以在程序中使用這些庫。

方法2

這兩個庫也可以從github下載(兩者都需要):

我將在下面的描述中提供鏈接。

顯示庫:https://github.com/adafruit/Adafruit_SSD1306

GFX庫:https://github.com/adafruit/Adafruit-GFX-Library

下載后,從以下位置復制Adafruit_SSD1306-master文件夾將下載的壓縮文件下載到Arduino庫文件夾中。通常在Windows系統上的文檔》 Arduino》庫中可以找到此文件夾。在Linux上,通常位于主文件夾》 Arduino》庫中。最后,在Arduino庫文件夾中,將Adafruit_SSD1306-master文件夾重命名為Adafruit_SSD1306。

步驟7:

現在,讓我們看一下“ Adafruit_SSD1306” .h“

文件

在此庫中我們需要了解兩件事:

1。如果要使用較小的顯示器,請使用默認的128_32,否則對于較大的顯示器請注釋128_32,然后取消注釋128_64

2。如果您已將0x7A地址焊接在板上(稍后將討論),則將7位0x3D地址用于較大的顯示器,否則使用默認的0x3C地址。對于較小的顯示器,地址為0x3C。

步驟8:為128 X 64/32 OLED布線

讓我們從連接開始

要注意的第一件事,也是最重要的一點是,某些顯示器可能會交換GND和VCC電源引腳。檢查您的顯示器以確保它與圖像相同。如果引腳被交換,請確保更改與Arduino或NodeMCU的連接。

-NodeMCU OLED接線

OLED VCC – NodeMCU 3.3V

OLED GND – NodeMCU GND

OLED SCL – NodeMCU D1

OLED SDA – NodeMCU D2

-Arduino Uno OLED接線

OLED VCC – Arduino 5V

OLED GND – Arduino GND

OLED SCL – Arduino Uno A5

OLED SDA – Arduino Uno A4

-Arduino MEGA 2560 OLED接線

OLED VCC – Arduino 5V

OLED GND – Arduino GND

OLED SCL – Arduino MEGA 2560引腳21

OLED SDA – Arduino MEGA 2560引腳20

第9步:代碼

Adafruit庫提供了非常好的示例,用于顯示128x32和128x64。

該庫位于“文件”》“示例”》“ Adafruit SSD1306”下,然后顯示

我們將使用128x32 I2C示例,并將其修改為可與128x64和128x32顯示器一起使用通過將其連接到Arduino,然后連接到NodeMCU板。

代碼首先包括兩個Adafruit庫。在本教程中,我將只強調代碼的那些部分,這些部分是我們在板上和顯示器上加載所必需的。如果您想了解更多有關代碼的信息,請在我的博客或下面的評論部分中添加評論,我會盡力與您聯系。

-首先,我們將代碼加載到Arduino Nano連接到128x32顯示器。

我們可以按原樣使用該代碼,而無需進行任何修改。

128x32使用0x3C地址,因此此位看起來很好,讓我們仔細檢查標頭庫,是的,它也使用0x3C地址,顯示類型為128x32。

-現在可以連接128x64顯示器。我們知道它默認情況下使用0x3C地址,因此我們不需要在代碼或庫中更新地址。

我們只需要注釋128_32并在注釋中取消注釋128_64。標頭庫,然后在我們的代碼中將LCDHEIGHT更改為64。

-現在要在NodeMCU上運行相同的代碼,我們需要在代碼中再更改一行。

“ #define OLED_RESET 4”》“ #define OLED_RESET LED_BUILTIN”其余部分代碼與Arduino

差不多,顯示所有我們首先需要使用

display.clearDisplay()清除上一個屏幕的內容。//清除緩沖區

然后繪制對象

testdrawline();//畫一條線

在硬件上顯示它

display.display();//使它們在顯示硬件上可見!

等待一段時間,然后顯示下一個項目。

delay(2000);//等待2秒

在此示例中,我們將顯示一些項目,例如文本,線條,圓圈,滾動文本,三角形等等。繼續發揮您的想象力,并在這些微型顯示屏上顯示任何內容。

步驟10:自定義文本和添加圖像

有時您的代碼需要顯示自定義字體和

圖像。如果您在位映射方面非常擅長,那么您只需要通過打開或關閉顯示器的微小LED來創建自定義字體和圖像來創建字節數組即可。

但是,我在進行這些映射,并且不想花費數小時來創建位圖表。

那么,我有什么選擇?我通常使用兩個網站來生成自定義字體和圖像。鏈接在下面的描述中提供。

自定義字體

------------

轉到字體轉換器網站,選擇字體系列,樣式,大小,庫版本作為“ Adafruit GFX字體”,然后單擊“創建”按鈕。在此頁面的右側,您可以看到實際顯示的字體。

根據您的選擇,網頁將生成字體頭文件。在您的代碼所在的文件夾中創建一個名為“ modified_font.h”的文件,并將生成的代碼復制并保存到其中。然后,您只需要在代碼中包括頭文件即可使用自定義字體。

#include“ modified_font.h”

然后,您只需要在顯示之前設置字體即可

display.setFont(&Your_Fonts_Name);

您可以從剛添加到項目中的頭文件中獲取字體的名稱。就是這樣,很容易。

使用自定義字體時,內存始終是個問題,因此請始終考慮內存將消耗的字節。只要記住Arduino UNO只有32K的內存即可。

自定義圖像

-------------

顯示位圖屏幕上的圖像,您首先需要創建一個128 x 64/32尺寸的圖像。

我正在使用舊的“ MS Paint”創建一個128 x 64位圖圖像,然后將其上傳到此圖像。圖像轉換器網站。該網站將圖像轉換為字節串,可與Arduino和OLED顯示器一起使用。

首先將圖像上傳到網站。然后選中“反轉圖像顏色”復選框,然后將“輸出代碼格式”更改為“ Arduino代碼”,然后選擇方向并單擊“生成代碼”按鈕以生成字節數組。 “預覽”部分向您顯示圖像在實際顯示器上的外觀。

我在本教程中隨附了代碼,可用于顯示圖像。您只需要用剛生成的陣列替換我的代碼中的陣列,然后將其加載到Arduino。

步驟11:連接2臺顯示器

將兩個128 x 64顯示器連接到您的項目很容易。

您只需要從0x78地址上拆下0Ohm電阻并將其放在0x7A上,然后在代碼中使用0x3D地址而不是默認的0x3C。

您一定想知道為什么我們使用0x3C和0x3D地址而不是實際的0x78和0x7A。 Arduino接受7位地址,而不接受8位硬件地址。因此,我們首先需要將8位地址轉換為二進制,然后將最低有效位切掉以獲得7位。然后將7位轉換為十六進制,以獲取您在代碼中輸入的0x3C或0x3D地址。

首先,通過為顯示指定一個唯一的名稱來初始化顯示:

Adafruit_SSD1306 display1( OLED_REST);

Adafruit_SSD1306 display2(OLED_REST);

然后在代碼中使用顯示1和顯示2調用帶有其中設備地址的begin語句:

display1.begin(SSD1306_SWITCHCAPVCC,0x3C);//顯示1個op地址0x3C

display2.begin(SSD1306_SWITCHCAPVCC,0x3D);//顯示2個操作地址0x3D

就是這樣,您現在可以繼續使用其余代碼中的Display 1或Display 2來做您想做的任何事情。我在本教程中提供了一個示例。

接線與我們之前所做的完全相同,幾乎您只需要在Arduino或NodeMCU的相同I2C引腳上添加另一個顯示器即可。然后,MCU將根據這些地址在I2C數據線上發送數據。

步驟12:連接2個以上的顯示器

現在,如果要連接兩個以上的顯示器怎么辦?

Arduino的引腳數量有限,因此您所連接的屏蔽數量不能超過一定數量。而且,它只有一對I2C總線。

那么,如何將兩個以上的I2C顯示器連接到Arduino?訣竅是使用TCA9548多路復用器。

TCA9548通過為每個傳感器從屬子分配一個唯一的通道,使單個微控制器可以與多達64個具有相同或不同I2C地址的傳感器進行通信。 -bus。

當我們談論通過2根線將數據發送到多個設備時,我們需要一種解決它們的方法。就像郵遞員走一條路,將郵件包投到不同的房子一樣,因為它們上面寫有不同的地址。

多路復用器連接到微型計算機的3V3,GND,SDA和SCL線路控制器。從傳感器連接到板上的八個SCL/SDA從端口之一。通過向TCA9548A發送其I2C地址(0x70 {默認}-0x77),然后是通道號(0b00000001-0b10000000)來選擇通道。為了控制64個相同的I2C尋址部分,您最多可以將8個這些多路復用器連接在一起在0x70-0x77地址上。通過將三個地址位A0,A1和A2連接到VIN,您可以獲得地址的不同組合。我將在我的下一個關于TCA9548A突破板的教程中對此進行深入解釋?,F在,讓我們將8個OLED連接到該板上并快速查看代碼。

連接:

VIN至5V(或3.3V)

GND接地

SCL到I2C時鐘

SDA到I2C數據

然后將傳感器連接到VIN,GND并使用SCn/SDn多路復用總線

現在,Int代碼首先要包含“ Wire”庫并定義多路復用器地址。

#include“ Wire.h”

#include

#define MUX_Address 0x70//TCA9548A編碼器地址

然后我們需要使用此功能選擇我們要通信的端口并在其上發送數據:

void tcaselect(uint8_t i){

if(i》 7)return;

Wire.beginTransmission(MUX_Address);

Wire.write(1 《

Wire.endTransmission();

}

接下來,我們將通過調用“ u8g.begin();”來初始化設置部分的顯示。對于連接到MUX“ tcaselect(i);”的每個顯示,一旦初始化,我們就可以通過調用函數“ tcaselect(i);”來完成我們想要的任何操作。其中“ i”是多路復用總線的值,然后相應地發送數據和時鐘。

步驟13:優點和缺點

OLED的圖像很漂亮。但是,OLED也有

的缺點。由于OLED屏幕包含有機材料,因此其壽命比LCD顯示器短。此外,許多OLED顯示器長時間顯示同一圖像后會出現烙印。老化后,即使顯示了其他圖像,圖像仍保留在屏幕上。因此,請確保每隔幾秒鐘不斷刷新屏幕。水會立即損壞這些顯示器的有機材料。

優點

無需背光

顯示器非常薄且輕巧

低功耗

視角比LCD寬

亮度和對比度都很好

高速且響應時間短

深黑色

缺點

昂貴的技術

壽命短

OLEDS更容易老化

水災

第14步:常見錯誤

總而言之,本教程僅討論一些常見錯誤

人們在使用這些顯示器時所做的事情:

-在項目中使用它之前,請務必三遍檢查引腳

-在頭文件和代碼中選擇正確的庫地址

#define SSD1306_I2C_ADDRESS 0x3C//在Adafruit_SSD1306.h

display.begin(SSD1306_SWITCHCAPVCC,0x3C);//在代碼中//

如果地址錯誤,則OLED將不會顯示任何內容

-必須在驅動程序中更改顯示大小,然后才能使用它。如果未更改,則在嘗試驗證代碼時會收到錯誤消息

#error(“高度不正確,請修復Adafruit_SSD1306.h!”);

-如果使用NodeMCU確保將OLED_RESET從4替換為LED_BUILTIN

#define OLED_RESET LED_BUILTIN

我有現場人員使用此OLED顯示器進行各種操作。有些甚至制作了電子游戲。我真的對使用這種小顯示屏制作視頻游戲不感興趣。但是,我現在將離開您去探索您的想象力,并提出令人驚訝的想法。

步驟15:鏈接

-博客:http://diyfactory007.blogspot.com.au

-添加圖像:http://javl.github.io/image2cpp/

-自定義文本:http://oleddisplay.squix.ch/#/home

-Adafruit顯示庫:https://github.com/adafruit/Adafruit_SSD1306

- Adafruit GFX庫:https://github.com/adafruit/Adafruit -GFX庫

-u8glib庫:https://code.google.com/archive/p/u8glib/或https://github.com/olikraus/u8glib

如果要使用較小的顯示器,請使用默認的128_32,否則,對于較大的顯示器請注釋128_32并取消注釋代碼中的128X64 NO_ACK(只需取消注釋所使用的屏幕類型)(字體在字體庫中)
責任編輯:wv

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

    關注

    48

    文章

    7552

    瀏覽量

    151417
  • 顯示器
    +關注

    關注

    21

    文章

    4978

    瀏覽量

    139981
  • Arduino
    +關注

    關注

    188

    文章

    6469

    瀏覽量

    187056
收藏 人收藏

    評論

    相關推薦

    如何在i2c中將hello world發送到LCD屏幕?

    有誰知道如何在 i2c 中告訴這個以將 hello world 發送到 LCD 屏幕?當我查找我的 4BIT 引腳時,我可以很好地做到這一點,但是當使用 i2c 時,我似乎在任何地方都找不到協議的任何細節,每個人都只想談論天哪的 ardunio,這對杰克有幫助。 謝謝!!
    發表于 07-11 06:10

    編譯IDF example/hello_world例程時,編譯報錯說找不到lwip inet.h頭文件,為什么?

    大家好,我在編譯IDF example/hello_world例程時,編譯報錯說找不到lwip inet.h頭文件,但是我到該路徑下發現了該頭文件,這是為什么?還有組件lwip并沒有源碼,該如何更新
    發表于 06-26 07:33

    esp32運行make flash燒寫hello world遇到的疑問求解

    串口驅動安裝正常,連接正常 在demo目錄里hello world程序下,運行make all,編譯正常, 然后運行 make flash 出現
    發表于 06-26 06:25

    使用make flash命令燒錄Hello_world程式失敗了,為什么?

    請問我使用 make flash 命令要燒錄 Hello_world 程式失敗了 看起來像是COM3 Port有連上,但找不到開發板上芯片,無法寫入 狀況如下e3.JPG (119.44 KiB
    發表于 06-26 06:10

    hello_world例程里面CONFIG_FREERTOS_HZ沒定義,但又能編譯燒錄,為什么?

    hello_world例程里面CONFIG_FREERTOS_HZ沒定義,但又能編譯燒錄,這是什么情況?
    發表于 06-19 07:25

    ESP8266筆記-03.ESP8266 RTOS的Hello world

    Hello world 由于我也是在邊學習邊寫文章,所以疏漏是難免的,我發的也不是教程貼,只不過是筆記,如果有大佬發現問題,歡迎指正! 在上一篇文章的最后,其實已經可以正常運行Hello wo
    發表于 05-30 11:51

    鴻蒙OpenHarmony【輕量系統 編寫“Hello World”程序】 (基于Hi3861開發板)

    下方將通過修改源碼的方式展示如何編寫簡單程序,輸出“Hello world”。請在下載的源碼目錄中進行下述操作。
    的頭像 發表于 05-16 18:15 ?994次閱讀
    鴻蒙OpenHarmony【輕量系統 編寫“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”程序】 (基于Hi3861開發板)

    鴻蒙OpenHarmony【小型系統 編寫“Hello World”程序】 (基于Hi3516開發板)

    展示如何在單板上運行第一個應用程序,其中包括新建應用程序、編譯、燒寫、運行等步驟,最終輸出“Hello World!”。
    的頭像 發表于 05-10 16:26 ?707次閱讀
    鴻蒙OpenHarmony【小型系統 編寫“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”程序】 (基于Hi3516開發板)

    鴻蒙OpenHarmony【標準系統 編寫“Hello World”程序】(基于RK3568開發板)

    下方將展示如何在單板上運行第一個應用程序,其中包括新建應用程序、編譯、燒寫、運行等步驟,最終輸出“Hello World!”。
    的頭像 發表于 05-09 17:58 ?885次閱讀
    鴻蒙OpenHarmony【標準系統 編寫“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”程序】(基于RK3568開發板)

    鴻蒙OpenHarmony【標準系統編寫“Hello World”程序】 (基于RK3568開發板)

    編寫“Hello World”程序 下方將展示如何在單板上運行第一個應用程序,其中包括新建應用程序、編譯、燒寫、運行等步驟,最終輸出“Hello World!”。 前提條件 已參考[創
    的頭像 發表于 04-24 17:32 ?800次閱讀
    鴻蒙OpenHarmony【標準系統編寫“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”程序】 (基于RK3568開發板)

    鴻蒙OpenHarmony【小型系統編寫“Hello World”程序】 (基于Hi3516開發板)

    下方將展示如何在單板上運行第一個應用程序,其中包括新建應用程序、編譯、燒寫、運行等步驟,最終輸出“Hello World!”。
    的頭像 發表于 04-22 21:55 ?359次閱讀
    鴻蒙OpenHarmony【小型系統編寫“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”程序】 (基于Hi3516開發板)

    鴻蒙OpenHarmony【輕量系統編寫“Hello World”程序】 (基于Hi3861開發板)

    下方將通過修改源碼的方式展示如何編寫簡單程序,輸出“Hello world”。請在下載的源碼目錄中進行下述操作。
    的頭像 發表于 04-21 21:44 ?330次閱讀
    鴻蒙OpenHarmony【輕量系統編寫“<b class='flag-5'>Hello</b> <b class='flag-5'>World</b>”程序】 (基于Hi3861開發板)

    ESP32使用Arduino_GFX點亮1.54寸IPS全視角TFT屏幕

    凌順實驗室(lingshunlab.com)在本示例中,主要運行Arduino_GFX庫的Hello World的程序。
    的頭像 發表于 03-21 11:38 ?4404次閱讀
    ESP32使用<b class='flag-5'>Arduino</b>_GFX點亮1.54寸IPS全視角TFT屏幕

    用于EK-RA8D1 MIPI LCD顯示器的GUIX Hello World

    電子發燒友網站提供《用于EK-RA8D1 MIPI LCD顯示器的GUIX Hello World.pdf》資料免費下載
    發表于 02-20 09:48 ?0次下載
    用于EK-RA8D1 MIPI LCD<b class='flag-5'>顯示</b>器的GUIX <b class='flag-5'>Hello</b> <b class='flag-5'>World</b>

    修改蜂鳥E203 v2內核源碼后,hello world報錯是哪里出了問題?

    修改蜂鳥E203 v2內核源碼后,測試“hello world”程序,vivado仿真可以順利通過,再輸出界面打印出“hello world”字樣,但上板后出現問題,
    發表于 01-10 06:12
    主站蜘蛛池模板: 亚洲色欲色欲WWW在线丝| 亚洲精品国产精品麻豆99| 入禽太深免费高清在线观看5| 日本护士在线观看| 无码乱人伦一区二区亚洲一| 亚洲AV人无码综合在线观看蜜桃| 亚洲色欲色欲无码AV| 最新黄色在线| 成 人 动漫3d 在线看| 国产精品高清m3u8在线播放| 护士们的母狗| 蜜桃麻豆WWW久久囤产精品免费| 人人澡人人擦人人免费| 午夜一级毛片看看| 在线视频 国产精品 中文字幕| chinese极品嫩模videos| 国产成人精视频在线观看免费| 寂寞夜晚在线视频观看| 免费国产午夜理论不卡| 少妇精品久久久一区二区三区| 亚洲视频免费在线观看| qvod小电影| 国产专区_爽死777| 内射老妇BBX| 亚洲AV无码A片在线观看蜜桃 | 男女无遮挡吃奶gift动态图 | 亚洲精品高清在线| 91精品一区二区综合在线| 国产AV无码一二三区视频| 久久精品成人免费看| 青柠在线观看视频在线高清| 性夜夜春夜夜爽AA片A| 97久久久久| 国产亚洲视频在线| 欧美色图一区二区三区| 亚洲欧美国产综合在线| yellow免费| 久久资源365| 亚洲AV无码乱码国产麻豆P| 99免费在线| 久久99re7在线视频精品|