四.10 128 X 64 I2C介面OLED顯示器實習
所謂的「OLED」是有機發光二極體(Organic Light-Emitting Diode)顯示器的簡稱,這種顯示器和一般常見的LCD顯示器最大不同,就是它本身就會發光,所以不需要背光光源,因此可以做到非常的薄;而且因為很薄,所以幾乎是全視角,不像傳統的LCD顯示器,如果脖子歪一點看就會看不到螢幕的畫面!再加上不需要背光,所以背光的電源也就省下來,整個顯示器可以做到輕薄短小又省電的要求。只是由於製程比較複雜,且良率沒有LCD顯示器那麼高,再加上是新的產品,所以成本與售價上就比一般的LCD顯示器高了!
上圖是目前市面上常見用在Arduino周邊系列產品使用I2C介面匯流排的OLED顯示器,雖然只有0.96”大,可是卻擁有128X64(8k Pixels)的像素解析度,它使用的是SSD1306這顆控制晶片,在這顆晶片的內部建有1Kbytes的顯示用緩衝RAM (GDDRAM:Graphic Display Data RAM),上述的128X64(8k Pixels)像素畫面內容會先存放在這1K bytes的GDDRAM上,然後再載入真正的OLED顯示面板上。此1K bytes的GDDRAM結構如下圖所示,它先被分割成8個頁面page(編號為page0~page7),所以每頁面的長度是1k/8=128個block(編號為block0~block127),而每一個block其實是由一個byte所組成,這個byte中的8個bits就代表了8個像素,所以我們可以得知一個螢幕的顯示頁面結構為:
8(page) X 128(block) X 8(bit) = 128(H) X 64(V) = 8192(bit/pixel) = 1024 bytes
也就是螢幕的寬度是128個pixel,而高度則是8X8=64個pixel,總共有8K個pixels。由於一個像素僅由一個bit所構成,因此只能顯示亮或不亮,也就是只能顯示單一種顏色;雖然如此,可是因為螢幕顯示塗佈材料的不同,因此目前市面上可看到不同顏色螢幕的OLED顯示器。
圖4、20 SSD1306控制晶片內部GDDRAM結構圖
(本圖與下面部分圖片引用自”lastminuteengineers.com”這個網站僅此致謝)
目前市面上這種由SSD1306控制晶片所驅動的0.96’’的OLED顯示器提供了SPI與I2C兩種匯流排介面,為了方便接線與減少接腳的使用,在此我們使用的是I2C介面的產品。目前在Arduino IDE中已經有不少個經過官方認可的SSD1306 OLED顯示器函式庫可以使用,不過為了考慮通用性與功能的完整性,在後面的幾個實習中,先以知名的Arduino模組與周邊及感測器第三方供應商『adadfruit』內建的範例程式,來示範它們的函式庫可以做到那些動作與功能,然後再分別以各式的文字顯示、繪圖功能乃至圖像或照片的顯示作為完結。
在做過前面這幾個實習之後,各位可自行改用其他高手的函式庫和內建範例測試一下,比較看看各家程式庫的好壞良窳如何﹖不一定要獨沽一味。
trinexstomka_1982 Cassandra Collins https://marketplace.visualstudio.com/items?itemName=lupdeneapi.Descargar-Diluvian-Winds--Prologue-gratuita
回覆刪除chaisamara