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

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

Arduino_ESP8266_TFT_16in_130x130_圖片

2023-08-04 17:52 作者:awin-x  | 我要投稿

好,標(biāo)題關(guān)鍵詞都提到了,我覺(jué)得很精準(zhǔn)了。

先上個(gè)效果。

TFT顯示圖片

#目的

想做一個(gè)擺在桌上可以顯示照片的mini屏幕。也就是一個(gè)電子相冊(cè)。

想法很簡(jiǎn)單,esp8266+TFT屏幕(SSD1283驅(qū)動(dòng))

#設(shè)計(jì)思路

最初我的想法是電腦把圖片發(fā)送到esp8266上去,然后esp8266在收到圖片后更新。但網(wǎng)上眾多教程都講的是把圖片接收到sd卡里面。在瀏覽了很多大佬的教程后發(fā)現(xiàn)自己把tcpClient給學(xué)會(huì)了。于是我的思路就變成了讓esp8266主動(dòng)去向服務(wù)器請(qǐng)求圖片,然后把圖片顯示出來(lái),要換圖片就直接替換服務(wù)器上的圖片。

1·ArduinoIED和ESP8266

到官網(wǎng)下載安裝Arduino,在首選項(xiàng)里可以設(shè)置中文。

要讓arduinoIDE可以給ESP8266燒程序(這一步卡了很久,因?yàn)闆](méi)梯子,就一直下載失敗。)

離線安裝的工具的教程:

(感謝?。。。。。。。。。。?

2·ESP8266連接到wifi

首先要引入ESP8266WiFi.h,定義一個(gè)連接wifi的函數(shù)。

連接到wifi的輸出

3·然后要點(diǎn)亮屏幕

這里要用到lcdwiki的庫(kù),在github上,(它的官網(wǎng)上樹(shù)莓派的教程很詳細(xì),但arduino的實(shí)在是太少了,(廢話了一大堆就只是安裝了給IDE))https://github.com/lcdwiki

LCDWIKI

下載這兩個(gè)倉(cāng)庫(kù),解壓放到“文檔\Arduino\libraries”里面

ARDUINO_LIBRARIES

(注意打開(kāi)看一下,有的電腦解壓后里面重了一層文件夾,要拿出來(lái)。)

然后是接線,這里我沒(méi)有搞懂sck和sda為什么一定要接D7和D5...也不知道能不能修改(它中間空了一個(gè)讓我看著特難受。。。)

vcc和GND直接對(duì)應(yīng)(vcc有的板子上寫(xiě)的vin或者v5)。

LED,A0/DC,RST/REST,CS都是自己定義的

還有一點(diǎn)我有點(diǎn)迷惑,官方示例里的DC都寫(xiě)的CD,(我不理解?)

點(diǎn)亮屏幕

這里的顏色定義有點(diǎn)意思,等會(huì)兒轉(zhuǎn)換圖片的時(shí)候有點(diǎn)麻煩(當(dāng)然也可以不麻煩。)

這里的顏色要用RGB565表示,只是一種顏色表示方式,涵蓋人眼能識(shí)別的絕大對(duì)數(shù)顏色了。我們常見(jiàn) 的顏色是RGB(255,0,0)這種,python中常用的CV2就是這種不過(guò)有點(diǎn)不同的是CV2是倒著的BGR,也就是紅色通道和藍(lán)色通道是反的,處理時(shí)需要轉(zhuǎn)換。

那如何把RGB(255,0,0)這種給寫(xiě)成RGB565呢?

在上面的代碼里紅色被寫(xiě)成了0xF800,這里其實(shí)是16進(jìn)制的表示,用十進(jìn)制表示就是63488

這里RGB565其實(shí)不一定要寫(xiě)成16進(jìn)制,十進(jìn)制寫(xiě)進(jìn)去屏幕也能正確顯示顏色。

這RGB565中的“565”其實(shí)就是分別對(duì)應(yīng)R,G,B三通道的位數(shù),二進(jìn)制下的位數(shù)畫(huà)個(gè)圖來(lái)表示吧,以紅色為例。

RGB565

就是紅色通道和藍(lán)色通道舍去3位,綠色通道舍去2位。

后面會(huì)寫(xiě)一給python的工具來(lái)實(shí)現(xiàn)圖片的轉(zhuǎn)換。

4·讓ESP8266向服務(wù)器請(qǐng)求內(nèi)容。

然后就是要讓esp8266主動(dòng)去訪問(wèn)服務(wù)器。我用tcpclient而不用httpclient是因?yàn)槲也恢纇ttpclient如何分段地讀取服務(wù)器發(fā)來(lái)的內(nèi)容,tcp這個(gè)庫(kù)可以readStringUntill來(lái)指定讀到哪里,如果用http那個(gè)會(huì)一次性把圖片的全部?jī)?nèi)容讀到一個(gè)String里面,而這個(gè)String是必然會(huì)被撐爆的。現(xiàn)在先實(shí)現(xiàn)請(qǐng)求一段文字然后顯示出來(lái)。寫(xiě)一個(gè)函數(shù)來(lái)訪問(wèn)服務(wù)器:

然后是電腦上要配置一個(gè)http的服務(wù),為了方便測(cè)試,使用最簡(jiǎn)單粗暴的python的http.server。

這個(gè)方法還可以用來(lái)在內(nèi)網(wǎng)傳大文件,可惜不能傳文件夾,只能打包后傳。

首先要安裝python.................(略)

然后隨便選一個(gè)要用來(lái)分享的文件夾,打開(kāi),在地址欄輸入cmd(linux就是cd到那個(gè)文件夾),然后輸入:

這里的80是指監(jiān)聽(tīng)80端口。(linux的有些版本的軟件包管理很怪,必須把版本帶上,要輸入python3或者python3.7)

現(xiàn)在在瀏覽器輸入自己電腦的ip地址或者127.0.0.1,就可以看到這個(gè)文件夾已經(jīng)被羅列出來(lái)了。但上面代碼中我的請(qǐng)求頭是GET /,就會(huì)得到這個(gè)頁(yè)面,這肯定是不行的,于是就要在這個(gè)文件夾里新建一個(gè)index.html,這樣http。server就會(huì)默認(rèn)地把這個(gè)文件內(nèi)的內(nèi)容發(fā)送出去。

新建一個(gè)index.html,里面寫(xiě)上幾個(gè)字(英文),然后保存,再訪問(wèn)的時(shí)候,瀏覽器上就出現(xiàn)了剛才寫(xiě)的那幾個(gè)字了,這也就達(dá)到了我想讓服務(wù)器把指定內(nèi)容返回ESP8266的目的。

錄個(gè)GIF

就是如此如此,這般這般。

注意,我是另存為index.html,因?yàn)橛X(jué)得展示后綴名看著丑就堅(jiān)持沒(méi)顯示,就只能另存了...

可以看到,在電腦的index.html中輸入的文字成功的被ESP8266讀取并顯示到了屏幕上,雖然它在中途停頓了一下,gif是加速了的,實(shí)際上等了有5秒,最后一行才顯示出來(lái)。經(jīng)過(guò)反復(fù)測(cè)試,如果寫(xiě)很多行,只有最后一行會(huì)卡一下,這讓我百思不得其解....

還有就是前面會(huì)有一堆http的響應(yīng)結(jié)構(gòu),要排除掉,可以設(shè)置一個(gè)x=-18,額..或者更多,然后再循環(huán)的時(shí)候加成正數(shù)后才開(kāi)始向屏幕打印內(nèi)容。

5·展示圖片?。?!

重點(diǎn)來(lái)了,這個(gè)圖片是必須要轉(zhuǎn)換的,為了方便,我的想法是直接把圖片的信息寫(xiě)到index.html里面,以后要弄更多圖片的時(shí)候再更改請(qǐng)求頭或者直接寫(xiě)一個(gè)替換index.html的腳本來(lái)實(shí)現(xiàn)圖片切換。

這個(gè)轉(zhuǎn)換圖片真的是有那么些.......

網(wǎng)上有轉(zhuǎn)換圖片的網(wǎng)站,但都有一個(gè)缺陷就是轉(zhuǎn)換后的結(jié)果是一個(gè)xxx.c,是直接包含到程序里,是不能改變的,而想要把變量通過(guò)http傳過(guò)去有有點(diǎn)太麻煩了。而且一個(gè)變量一個(gè)變量的傳會(huì)導(dǎo)致圖片加載就特別慢。

最重要的是,那種把圖片寫(xiě)成一個(gè)數(shù)組,然后一次性顯示圖片的函數(shù),我是真的不會(huì)寫(xiě)啊.....(wo shi zai shi tai ben le)...

于是我想到的辦法是,先規(guī)定好圖片只能是什么個(gè)尺寸,把圖片的每一個(gè)像素的顏色寫(xiě)成一個(gè)數(shù)字,數(shù)字之間用空格隔開(kāi),ESP8266讀取的時(shí)候以空格為分割符,把像素一個(gè)個(gè)的堆在屏幕上,圖片就顯示出來(lái)了。(看著效果和網(wǎng)上看到的那些大佬的電子相冊(cè)的加載的樣子有那么點(diǎn)像了。)

所以圖片怎么轉(zhuǎn)換喃?

萬(wàn)能的PYTHON又出現(xiàn)了?。。?/p>

#首先要把圖片加載進(jìn)去,然后縮小/放大/調(diào)整成指定大小或者裁剪,要遍歷每一個(gè)像素,轉(zhuǎn)換成rgb565的對(duì)應(yīng)數(shù)字,然后寫(xiě)進(jìn)index.html

emmmm....pygame的surface可以縮放,blit一個(gè)圖片在里面,可以裁剪,但是這個(gè)surface對(duì)象不能遍歷每一個(gè)像素。CV2可以遍歷每一個(gè)像素.......

pygame》》》》加載圖片,通過(guò)讀取鍵盤(pán)指令調(diào)整圖片

轉(zhuǎn)換成CV2的圖形》》》遍歷每一個(gè)像素,》》轉(zhuǎn)換為rgb565》寫(xiě)入文件。

?計(jì)劃通,開(kāi)始!

然后就沒(méi)有然后了。

自動(dòng)更換和內(nèi)網(wǎng)穿透后在公網(wǎng)訪問(wèn)什么的就以后再說(shuō)啦....

Arduino_ESP8266_TFT_16in_130x130_圖片的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
泸州市| 邢台市| 布拖县| 大埔县| 靖西县| 武山县| 平武县| 陇西县| 油尖旺区| 启东市| 绍兴市| 姜堰市| 磐石市| 武强县| 新竹县| 元江| 贵南县| 阿合奇县| 宁津县| 桦川县| 宣威市| 内乡县| 牡丹江市| 沽源县| 云龙县| 绥宁县| 杭锦后旗| 甘谷县| 凌海市| 丁青县| 江永县| 奈曼旗| 民丰县| 郓城县| 虞城县| 桃江县| 石林| 东兴市| 汕尾市| 五华县| 连平县|