用官方的SSD1306.py 驱动 OLED
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
這幾天看了一下micropython的I2C OLED驅(qū)動(dòng)(SPI的類似),發(fā)現(xiàn)有幾個(gè)版本。一個(gè)是官方的版本,還有早期網(wǎng)上流傳的版本。
網(wǎng)上的版本使用了pyb.I2C驅(qū)動(dòng),是將Arduino的OLED驅(qū)動(dòng)移植過(guò)來(lái),只能用在STM32上;而官方的驅(qū)動(dòng)使用了machine.I2C,這樣有更好的兼容性,適合不同的硬件平臺(tái),還可以用軟件I2C。
因?yàn)闆](méi)有看到有人介紹官方的SSD1306驅(qū)動(dòng),所以我就簡(jiǎn)單的介紹一下I2C接口的OLED使用方法,SPI的也是類似的。下面以比較常見(jiàn)的0.96寸的128x64 I2C OLED為例:
- 從github下載micropython的源碼(或者只下載其中的ssd1306.py文件),然后將ssd1306.py復(fù)制到PYB Nano或其它micropython板
- 連接I2C和電源到I2C的OLED上,如果沒(méi)有硬件I2C,使用任意GPIO也可以。
- 在終端里輸入下面代碼
如果可以看到Hello這一段文字,就說(shuō)明驅(qū)動(dòng)成功了。
?
SSD1306.py中帶有的函數(shù)不多,主要函數(shù)有:
- text(string, x, y),在(x, y)處顯示字符串,注意text()函數(shù)內(nèi)置的字體是8x8的,暫時(shí)不能替換
- poweroff(),關(guān)閉OLED顯示
- poweron(),空函數(shù),無(wú)任何效果。可以用 write_cmd(0xAF) 代替
- fill(n),n=0,清空屏幕,n大于0,填充屏幕
- contrast(),調(diào)整亮度。0最暗,255最亮
- invert(),奇數(shù)時(shí)反相顯示,偶數(shù)時(shí)正常顯示
- pixel(x, y, c),在(x, y)處畫(huà)點(diǎn)
- show(),更新顯示內(nèi)容。前面大部分函數(shù)只是寫(xiě)入數(shù)據(jù)到緩沖區(qū),并不會(huì)直接顯示到屏幕,需要調(diào)用show()后才能顯示出來(lái)。
另外還有部分功能可以用下面方法實(shí)現(xiàn):
- framebuf.line(x1,y1,x2,y2,c),畫(huà)直線
- framebuf.hline(x,y,w,c),畫(huà)水平直線
- framebuf.vline(x,y,w,c),畫(huà)垂直直線
- framebuf.fill_rect(x,y,w,h,c),畫(huà)填充矩形
- framebuf.rect(x,y,w,h,c),畫(huà)空心矩形
大家也可以自己封裝一下,甚至加入畫(huà)園、字體選擇、顯示logo等功能。
轉(zhuǎn)載于:https://my.oschina.net/shaoziyang/blog/885516
總結(jié)
以上是生活随笔為你收集整理的用官方的SSD1306.py 驱动 OLED的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java SpringMVC mybat
- 下一篇: vue-router 快速入门