最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

一個在arduino ide里把nano的程序移植到esp8266的過程

2020-03-21 00:29 作者:曉曦和她的小馬老婆們  | 我要投稿

arduino ide?

arduino nano

esp8266

u8g2

這4樣?xùn)|西相信經(jīng)常逛B站科技區(qū)的朋友們一定很熟悉吧。

至于屏幕驅(qū)動的庫,除了各路大神們絞盡腦汁寫的各種庫之外,還有Adafruit和U8g2,當(dāng)然這里就不講Adafruit了,這里講的是U8g2。

U8g2是我用過最簡單的oled屏幕驅(qū)動庫,兼容市面上你能買到的絕大多數(shù)oled模塊。??

就例如我這片非主流的組裝1.3寸64*128oled

別學(xué)我一開始就買裸屏,排線有些短

順便提醒大家別學(xué)我犯二對自己的焊接技術(shù)充滿信心,為了省幾毛錢買了屏幕和轉(zhuǎn)接板自己焊,這里有坑。

傻了吧,轉(zhuǎn)接板是0.96寸屏幕的,預(yù)留的位置焊不了
忽略捉急的焊工,1.3寸屏用0.96的轉(zhuǎn)接板你需要把板子鋸掉一部分,放心,下面這都是地線

不過為了穩(wěn)妥起見,還是直接買0.96寸的oled模塊吧。


扯遠(yuǎn)了,有了屏幕,有了arduino,那么接下來怎么點亮呢?首先,下載U8g2的庫,就在上面項目-》加載庫-》管理庫 里面搜u8g2就好了。

國內(nèi)下載可能比較慢,需要點耐心下載完

然后就拿我這里顯示圖片的示例距離,在文件-》示例-》第三方庫示例里面找到U8g2 -》page buffer-》XBM

往下翻會看到一堆被//注釋掉的U8G2開頭的代碼,這些就是U8G2支持的屏幕驅(qū)動和對應(yīng)的分辨率以及接口形式

因為我買的屏幕默認(rèn)是spi接口,雖然可以靠改動一個電阻的位置變成常用的I2C接口,但是我懶。

//U8G2_SH1107_64X128_1_4W_HW_SPI u8g2(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);

就拿這段代碼前面的來說,SSH1107指的是oled的屏幕驅(qū)動是SSH1107,這個在上面賣家的屏幕介紹里有提到。64X128指的是屏幕的分辨率是64X128,至于那個1不重要,別動就是。4W指的是4線控制。HW SPI指的是硬件輸出SPI信號這個是由arduino固定的端口輸出(D10?cs,D11 MOSI,D12 MISO,D13 SCK)

除此之外還有SW SPI,軟件模擬SPI,用軟件模擬SPI信號輸出,優(yōu)點是可以指定任意端口輸出spi信號,對于部分接口未引出的nano和esp8266 d1來說這似乎是唯一的解決辦法。

而后面的那段?

(U8G2_R0, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);

R0指的是默認(rèn)方向,改成R1就是選擇90度,R2是180度,R3是270度 后面的cs,dc,reset對應(yīng)屏幕上的cs,dc,res的接口是D10,D9,D8。但是到了這里你發(fā)現(xiàn)這里只給出3個接口,可是你的屏幕有7個接口,除去GND和VCC是電源地和5V正之外,還有SDA(數(shù)據(jù))和SCL(時鐘)沒給出來。這時你可以翻翻前面的加粗紅字,SDA對應(yīng)的是D13的SCK,SCL對應(yīng)的是D11的MOSI,因為屏幕只接受不發(fā)送數(shù)據(jù)給arduino。

U8G2_SH1107_64X128_1_4W_HW_SPI u8g2(U8G2_R2, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);

SCL接data D11,SDA接D13,剩下的cs,dc,res接arduino板子上對應(yīng)的D10,D9,D8。

但是到了esp8266 D1上就不一樣了,當(dāng)你拿起杜邦線準(zhǔn)備連接屏幕時你會發(fā)現(xiàn)。。。它只有D0到D8。問題不大,這難不倒聰明的你。按照我前面的分析,改用軟件模擬spi,并且把

//U8G2_SSD1306_128X64_NONAME_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 13, /* data=*/ 11, /* cs=*/ 10, /* dc=*/ 9, /* reset=*/ 8);

改成

//U8G2_SSD1306_128X64_NONAME_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 8,?/* data=*/ 7,?/*?cs=*/ 0,?/*?dc=*/?5,?/* reset=*/?6);

后再連上,發(fā)現(xiàn)還是不亮。

這是為什么呢?

因為esp8266 D1的gpio與板子上的D1-8的對應(yīng)關(guān)系和arduino不一樣,你需要按照下圖,


//U8G2_SSD1306_128X64_NONAME_1_4W_SW_SPI u8g2(U8G2_R0, /* clock=*/ 8, /* data=*/ 7,?/* cs=*/ 0,?/* dc=*/?5,?/* reset=*/?6);

改成對應(yīng)的gpio編號

U8G2_SH1107_64X128_1_4W_SW_SPI u8g2(U8G2_R1, /* clock=*/ 15, /* data=*/ 13, /* cs=*/ 16, /* dc=*/ 14, /* reset=*/ 12);

這樣你就可以用esp8266的硬件spi來點亮屏幕了。

用arduino?ide給esp8266的開發(fā)板寫程序的話那么程序里對應(yīng)端口的編號相較于arduino來說其對應(yīng)的其實是芯片的實際gpio1-10,而不是arduino開發(fā)板上的D1-10。

一個在arduino ide里把nano的程序移植到esp8266的過程的評論 (共 條)

分享到微博請遵守國家法律
六盘水市| 竹溪县| 尼勒克县| 梁河县| 乃东县| 田林县| 淅川县| 东乡县| 泉州市| 成安县| 若羌县| 永川市| 临清市| 巴林左旗| 岐山县| 嘉鱼县| 呼伦贝尔市| 沙洋县| 武强县| 施秉县| 镇赉县| 三台县| 射阳县| 册亨县| 凌海市| 阳原县| 遂平县| 张掖市| 句容市| 台江县| 自贡市| 论坛| 青岛市| 洪雅县| 乐东| 古田县| 奎屯市| 汪清县| 湖州市| 景德镇市| 建水县|