(4)ESP32 Python 用OLED播放Bad Apple

之前已經(jīng)實(shí)現(xiàn)過了隅熙,把OLED當(dāng)作一個(gè)狀態(tài)顯示器哲戚。但是,僅僅顯示文字肯定是不夠炫酷的杨蛋,因?yàn)橛衅聊坏牡胤骄蛻?yīng)該有Bad Apple。
這次我們嘗試一下把OLED播放一下 Bad Apple.
Bad Apple看似是一段視頻,但是我們這么來想這個(gè)問題逞力。視頻打散成很多張圖片曙寡,按照每秒12貞的播放,那不就是一個(gè)視頻了么寇荧。
首先举庶,我們來體驗(yàn)一次把圖片展示在OLED上面,需要展示的圖片要是pbm格式(PBM格式由Jef Poskanzer在20世紀(jì)80年代發(fā)明揩抡,為了便于通過電子郵件户侥,用ASCII碼表示單色位圖,能夠承受一般的文本格式的變動(dòng)峦嗤。)

from ssd1306 import SSD1306_I2C ,framebuf
from machine import Pin, SoftI2C    
oled = None
class BadAppleOled:
    def init_oled(self):
        global oled
        i2c = SoftI2C(sda=Pin(21), scl=Pin(22),freq=600000)
        i2c.scan() 
        print(i2c)
        oled = SSD1306_I2C(128, 64, i2c)
    def show_pic(self):
        global oled
        show_pbm = '/data/pyamp/example/pbm/rangcha.pbm'
        with open(show_pbm, 'rb') as f:
            f.readline()
            f.readline()
            data = bytearray(f.read()) 
            fbuf= framebuf.FrameBuffer(data,128,64, framebuf.MONO_HLSB)
            oled.fill(0)
            oled.blit(fbuf, 0,0)
            oled.show()
            del fbuf

調(diào)用代碼

bad_apple_oled = BadAppleOled()
bad_apple_oled.init_oled()
bad_apple_oled.show_pic()

最終結(jié)果如下

image.png

代碼解釋:

  1. 首先將文件讀取成二進(jìn)制 with open(show_pbm, 'rb')

  2. 將文件轉(zhuǎn)換成字節(jié)數(shù)組 data = bytearray(f.read())

  3. 將圖片的字節(jié)數(shù)組送入 framebuf 蕊唐,并指定大小。 fbuf= framebuf.FrameBuffer(data,128,64, framebuf.MONO_HLSB)

  4. OLED 清屏烁设, 并展示framebuf內(nèi)容替梨,展示完成后,刪除 framebuf

oled.fill(0)
oled.blit(fbuf, 0,0)
oled.show()
del fbuf

完成了基礎(chǔ)的圖片展示后装黑,我們嘗試一下把一個(gè)視頻文件的連續(xù)PNG轉(zhuǎn)換成pbm并進(jìn)行展示副瀑。

from ssd1306 import SSD1306_I2C ,framebuf
from machine import Pin, SoftI2C    
import uos
oled = None
class BadAppleOled:
    def init_oled(self):
        global oled
        i2c = SoftI2C(sda=Pin(21), scl=Pin(22),freq=400000)
        i2c.scan() 
        print(i2c)
        oled = SSD1306_I2C(128, 64, i2c)
    def show_pic(self):
        global oled
        show_pbm = '/data/pyamp/example/pbm/rangcha.pbm'
        with open(show_pbm, 'rb') as f:
            f.readline()
            f.readline()
            data = bytearray(f.read()) 
            fbuf= framebuf.FrameBuffer(data,128,64, framebuf.MONO_HLSB)
            oled.fill(0)
            oled.blit(fbuf, 0,0)
            oled.show()
            del fbuf
    
    def bad_apple_v1(self):
        global oled
        bpm_files_list = uos.listdir('data/pyamp/example/bpm_files')
        for bpm_entity in bpm_files_list: 
            show_bpm = '/data/pyamp/example/bpm_files/'+bpm_entity
            # print(show_bpm)
            with open(show_bpm, 'rb') as f:
                f.readline()
                f.readline()
                data = bytearray(f.read()) 
                fbuf= framebuf.FrameBuffer(data,128,64, framebuf.MONO_HLSB)
                oled.fill(0)
                oled.blit(fbuf, 0,0)
                oled.show()
                del fbuf
image.png

但是,一般視屏都會(huì)很長的恋谭,不可能無限制的全部裝在在ESP32當(dāng)中糠睡。所以,有TF接口的開發(fā)板可以將圖片存在SD卡當(dāng)中進(jìn)行播放哦疚颊。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末狈孔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子串稀,更是在濱河造成了極大的恐慌除抛,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,185評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件母截,死亡現(xiàn)場離奇詭異到忽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)清寇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門喘漏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人华烟,你說我怎么就攤上這事翩迈。” “怎么了盔夜?”我有些...
    開封第一講書人閱讀 163,524評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵负饲,是天一觀的道長堤魁。 經(jīng)常有香客問我,道長返十,這世上最難降的妖魔是什么妥泉? 我笑而不...
    開封第一講書人閱讀 58,339評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮洞坑,結(jié)果婚禮上盲链,老公的妹妹穿的比我還像新娘。我一直安慰自己迟杂,他們只是感情好刽沾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,387評(píng)論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著排拷,像睡著了一般侧漓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上监氢,一...
    開封第一講書人閱讀 51,287評(píng)論 1 301
  • 那天火架,我揣著相機(jī)與錄音,去河邊找鬼忙菠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛纺弊,可吹牛的內(nèi)容都是我干的牛欢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼淆游,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼傍睹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起犹菱,我...
    開封第一講書人閱讀 38,985評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤拾稳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后腊脱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體访得,經(jīng)...
    沈念sama閱讀 45,420評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,617評(píng)論 3 334
  • 正文 我和宋清朗相戀三年陕凹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了悍抑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,779評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡杜耙,死狀恐怖搜骡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情羹奉,我是刑警寧澤涛浙,帶...
    沈念sama閱讀 35,477評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站沮尿,受9級(jí)特大地震影響摸吠,放射性物質(zhì)發(fā)生泄漏空凸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,088評(píng)論 3 328
  • 文/蒙蒙 一蜕便、第九天 我趴在偏房一處隱蔽的房頂上張望劫恒。 院中可真熱鬧,春花似錦轿腺、人聲如沸两嘴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽憔辫。三九已至,卻和暖如春仿荆,著一層夾襖步出監(jiān)牢的瞬間贰您,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評(píng)論 1 269
  • 我被黑心中介騙來泰國打工拢操, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锦亦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,876評(píng)論 2 370
  • 正文 我出身青樓令境,卻偏偏與公主長得像杠园,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子舔庶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,700評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容