五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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的過程的評論 (共 條)

分享到微博請遵守國家法律
遂川县| 翁牛特旗| 海伦市| 鲁甸县| 平昌县| 盐边县| 象州县| 皋兰县| 台北县| 衢州市| 长治市| 麦盖提县| 武陟县| 林口县| 汾西县| 合阳县| 吴堡县| 柳州市| 正镶白旗| 安陆市| 阿拉善盟| 镇远县| 五大连池市| 洪江市| 禹城市| 当涂县| 左云县| 嘉祥县| 类乌齐县| 湾仔区| 龙山县| 扬中市| 临城县| 通河县| 青浦区| 壶关县| 磴口县| 固原市| 南溪县| 铅山县| 云浮市|