痞酷網_PIGOO

 找回密碼
 立即註冊
!!! [系統偵測到廣告阻擋軟體] !!!

如果您覺得痞酷網對您有些許幫助,或者您認同痞酷網的理想,

那麼希望您將痞酷網設定為白名單.

並請在上論壇的時候,動動您的手指,用行動支持我們.

謝謝!
查看: 11619|回復: 23

U8glib LCM 函數庫介紹 - 使用 Arduino UNO

[複製鏈接]
發表於 2015-2-15 00:27:27 | 顯示全部樓層 |閱讀模式
本文章最後由 jojoling 於 2015-2-15 12:28 AM 編輯

大家好~

這次介紹的是一個叫 U8glib 的 open source library
底下為原始連結:
https://code.google.com/p/u8glib/
此 library 目前支援3個平台:
U8glib for Arduino
U8glib for AVR
U8glib for ARM

我使用了一下下,個人是覺得還滿好用的,此 library 支援很多圖形化的 LCM 與 OLED,如果有沒有支援的話,小改一下就可以完成了。

先介紹我買的 LCM~買這個很久了,買來才發現這個是 3V的,沒想那麼多,想說 ST7565能吃 5V ,至少不會壞,之前都用 5V 在測試。
型號為 LM6060CFW。當初買的時後沒注意它是 3.3V的型號~

相片 2015-2-13 下午11 40 07.jpg

從這裏訂的,只訂了這塊來實驗 (對~加運費來看,很貴~)
http://tw.taobao.com/item/366565 ... &_u=e7pfteffc2f

原始規格應該在這裏:
http://topwaydisplays.eu/EN/LM60 ... s::F00285:
004629-LNK04509.pdf (87.52 KB, 下載次數: 47)

麵包版是在實驗此 LCM 是不是真的是 3.3V 工作的,上面是雙向電壓轉換的小板子(5v<->3.3V 雙向)。

此為成品,arduino 電子積木,3塊板子疊在一起。
相片 2015-2-14 下午9 17 56.jpg

SD 卡裏面存檔資訊:
2015-02-14_230323.png

此塊萬用板,已將電壓轉換與 LCM 6060 連結好,並使用Ateml328p的硬體 SPI 控制器來做介面。

相片 2015-2-14 下午9 19 07.jpg

此圖 LCM 接腳圖,圖上2個 9X18 pin 的接頭,是上面左右相反並連,主要是讓 LCM 可以換插轉方向用。
主要的信號線為~

LM6060 pins:        經電壓轉換小板            Arduino pins:
pin 1  : (/CS)                  Yes                      pin 10 (有設計連接pin,可跳線)
pin 2  : (/RES)                                           3.3V
pin 3  : (A0)                    Yes                     pin 9 (有設計連接pin,可跳線)
pin 12: (SCL)                  Yes                     pin 13
pin 13: (SI)                     Yes                     pin 11
pin 14: (VDD)                                           3.3V
pin 15: (VSS)                                            GND
pin 16: (BLA+)                                          5V經220歐姆電阻
pin 17: (BLK-)                                           GND

背面接線圖~~~亂糟糟~好在是低頻數位信號~
相片 2015-2-14 下午9 19 33.jpg

此處順便介紹一下 萬用 IO 板的差異,此處所用的 I/O 板是品質與用料比較好的。底下為另一種萬用 I/O 板,特點不同,此 I/O 板在板中間在使用上變化比較彈性,加上透過單一長腳的排針,讓此 I/O 板可以再疊上其它 shield 上去,而圖上那個藍色的因使用一般排針設計,不適合玩疊疊樂。
相片 2015-2-14 下午10 45 26.jpg

此圖為這次 demo  的便宜 UNO 板,在前面文章,我是不建議大家買這個東西來玩,不過當你手上需要多塊 UNO 時,就請忽略那句,
你可以假設,這種便宜的板子是用來取代 arduino mini / mini pro 來用的。
相片 2015-2-14 下午10 43 18.jpg

這塊 shield 就是 SD card 加 RTC ~我買的這個是比較貴的,有內建 RTC,且板子的品質還不錯。
相片 2015-2-14 下午10 44 31.jpg



注意在圖上,最下面有一塊壓克力板,這是 UNO 專用的,有塑膠螺絲把 UNO 固定上,且可放上一個小的面包板。
(圖上左邊面包板為之前實驗 mosfet/jfet 特性的實驗平台,右邊面包板為準備玩編碼器的實驗平台)
相片 2015-2-14 下午11 08 31.jpg

此圖為 U8glib 的 menu.ino 範例
相片 2015-2-14 下午10 54 42.jpg

此影片為 U8glib 的 GraphicsTest.ino 範例


此影片為 U8glib 的 FPS.ino 範例



此影片為 U8glib 的 TextRotX.ino 範例



後續再補一些資料~出門先。






補充內容 (2015-2-16 12:52 AM):
4樓有 U8glib 補充的介紹


補充內容 (2015-2-17 07:47 PM):
20樓有 m2tklib 的介紹,使人很容易的設計一套很炫的 UI

評分

9

查看全部評分

發表於 2015-2-15 02:07:27 | 顯示全部樓層
又要上課了 ...
三更半夜還出門 ... :sam10
吃消夜 ... n_064|
約會 ... n_031|
看晚場電影 ...
夜遊 ...
發表於 2015-2-15 15:12:26 | 顯示全部樓層
scottwang 發表於 2015-2-15 02:07 AM
又要上課了 ...
三更半夜還出門 ...
吃消夜 ...

要去美眉家.....測室溫啦
半夜去測試....比較準啦

評分

1

查看全部評分

 樓主| 發表於 2015-2-15 16:18:30 | 顯示全部樓層
大家好,讓我們繼續加一些 U8glib 的資料吧~


在 U8glib 的使用上,第一步就是需知道硬體信號腳是如何規化與設定的。
底下為 U8glib 所支援的硬體與設定,我們以 TopWay的 LM6063型號為例,此 LCM是使用  st7565控制 IC~
https://code.google.com/p/u8glib/wiki/device

2015-02-15_153046.png

此處的描述,是在說如果我們是用硬體的 SPI 控制器的話,我們在軟體的參數,就只要給定 2-3隻腳信號的腳位 ( cs,a0 [,reset]),[XXX] 在程式說明,代表著可以省略,如果沒有這個功能腳的話。
u8g_dev_st7565_lm6063_sw_spi     U8GLIB_LM6063(sck, mosi, cs, a0 [, reset])
u8g_dev_st7565_lm6063_hw_spi    U8GLIB_LM6063(cs, a0 [, reset])

由於我在硬體上,目前是使用arduino 上的 13,12,11 SPI controller 的做法,CS 腳跳線至 pin 9, A0 使用 pin 8所以:
U8GLIB_LM6063 u8g(8,9) 與 U8GLIB_LM6063 u8g(13, 11,8,9) 兩種設定都可,但走 hw_spi 會比較好,除非硬體沒有 support ,才需選擇 sw_spi。
sw_spi 的好處是可以移至任一腳使用, hw_spi 需遵照硬體規格。

此處為我目前的設定:
U8glib 目前沒有 LM6060 的,我是利用 LM6063的檔案,改一些設定值而來。
2015-02-15_152118.png

底下我們來看一下在 ST7565 在不同型號的最大差異吧。在 library 裏,有一個資料夾叫 utility,裏面有很多檔案,看就知道那些是跟 LCM 型號有關。
如 u8g_dev_st7565_lm6063.c 此檔就是 LM6063 的硬體設定檔。我是根據此檔產生另一隻叫 u8g_dev_st7565_lm6060.c的。

2015-02-15_152000.png

一般來說,ST7565要調整的有4個值:

1. ADC set to norma(0xa0)l/reverse(0xa1) ,這個影響顯示的左右鏡射~
底下的圖,我是固定把它設定到另一個值。產生了左右鏡射的效果。
相片 2015-2-15 下午3 25 36.jpg

2.  common output mode: set scan direction normal operation/SHL Select, 0x0c0 --> SHL = 0, normal, 0x0c8 --> SHL = 1
第2個值就是 common output mode ,影響顯示的上下鏡射效果。
相片 2015-2-15 下午3 26 48.jpg

3. set display start line
此設定值會影響顯示起始的行數,造成不是從第一行開始顯示~
相片 2015-2-15 下午3 27 39.jpg

4.set contrast
此值的設定會影響顯示的對比~
相片 2015-2-15 下午3 28 31.jpg

底下連結,是描述目前 U8glib 1.17 板裏有 support 的字型與其大小~在 c  裏面,程式的最佳化是由編譯器來做,當你使用某種字型時,它會把用到的相關程式碼(包括字型定義)自動加入。我的 example 目前顯示了 3種字型,其實程式已在爆 code 的邊援,我只是示範它是如果簡單的同時使用不同字型顯示於同一個畫面。
https://code.google.com/p/u8glib/wiki/fontsize


底下為目前 U8glib 的所有功能描述,
https://code.google.com/p/u8glib/wiki/userreference
你們會發現,在設計 UI 時常用的 API 它都提供好了,裏面還有字體的旋轉,畫線、三角形與四方形。還有在彩色 OLED上可畫不同色系,所以我們可以很方便的直接使用,不需考慮底層的各種問題。
可以由你簡單的玩出有自己特色的 UI。



評分

8

查看全部評分

發表於 2015-2-15 22:16:46 | 顯示全部樓層
本文章最後由 scottwang 於 2015-2-15 10:18 PM 編輯
arthur0518 發表於 2015-2-15 03:12 PM
要去美眉家.....測室溫啦
半夜去測試....比較準啦


就他跟那個搞飛機的在講的那個喔?
好料一桌,怎沒看到大胖來品嚐,該不會假日又去當司機去了吧.
發表於 2015-2-15 22:48:45 | 顯示全部樓層
老板!
這是幹馬用的?能測室內溫度嗎?
怎麼一點都看不懂說{:14_1490:}
發表於 2015-2-15 22:52:40 | 顯示全部樓層
本文章最後由 scottwang 於 2015-2-15 11:08 PM 編輯

起樓阿厝啊,疊疊樂 ... :sam31

我看你買的LM6060有提供資料雙重傳輸功能,D6(SCL),D7(SI),那一般舊的並列式傳輸,若把硬體接好後,依你現在的程式,有需要變動那裡呢?

那個libraries下載後也是直接放在arduino的libraries裡面就好了嗎?

還有一點,是否那個LM6060只內建基本字型,其它的都要外部輸入?
發表於 2015-2-15 23:12:05 | 顯示全部樓層
popcorn 發表於 2015-2-15 10:48 PM
老板!
這是幹馬用的?能測室內溫度嗎?
怎麼一點都看不懂說

就是微控制器咩,只要你花了coco$,你要怎麼樣都行.
看你是要DIY自爽呢,或者再花 coco$請人幫你把它變成你心目中想要的那樣  ... 來來來,快加入禿頭俱樂部 ... {:14_1483:}
發表於 2015-2-15 23:23:53 | 顯示全部樓層
popcorn 發表於 2015-2-15 10:48 PM
老板!
這是幹馬用的?能測室內溫度嗎?
怎麼一點都看不懂說

叫您讀書....都不讀.....只會把咩咩....
那個是要簽.....大樂透的啦....
您都沒看到上面有浮出.....明牌喔
發表於 2015-2-15 23:41:36 | 顯示全部樓層
popcorn 發表於 2015-2-15 10:48 PM
老板!
這是幹馬用的?能測室內溫度嗎?
怎麼一點都看不懂說

你可以開始教徒弟多賺coco$,同時也製造未來的敵人,到時侯徒弟拼倒了師父 ... {:14_1489:}
再不然學學漢克大,早點培訊接班人,早點享福 ... {:14_1483:}
 樓主| 發表於 2015-2-15 23:51:58 | 顯示全部樓層
popcorn 發表於 2015-2-15 10:48 PM
老板!
這是幹馬用的?能測室內溫度嗎?
怎麼一點都看不懂說

報告~

這是阿乾爸爸想要的電壓記錄器未完成版~
 樓主| 發表於 2015-2-16 00:07:28 | 顯示全部樓層
本文章最後由 jojoling 於 2015-2-16 12:56 AM 編輯
scottwang 發表於 2015-2-15 10:52 PM
起樓阿厝啊,疊疊樂 ...

我看你買的LM6060有提供資料雙重傳輸功能,D6(SCL),D7(SI),那一般舊的並列式 ...


to ScottWang大,

建議把那個並列式的LCM改裝成序列信號的介面~原因就是:現在的  mcu 速度都很快,沒必要用並列信號在浪費 I/O的使用。
還有官網上的支援列表上,有很多 LCD controller 都有支援 8 bit mode的~請看 https://code.google.com/p/u8glib/wiki/device
底下是 ysc大之前的文章~
http://bbs.pigoo.com/thread-48682-1-1.html

Arduino的開發環境,選 Sketch->Import Library-> Add library,然後再點選下載下來的 zip 檔及可。它會自動解開並放到使用者的文件夾中(定義在 File->Preferences 裏)~

LM6060 是使用 ST7565 controller,意思是說,這顆並沒有任何內建字型檔,連英文字都沒有。與之前買的簡易晶體測試儀同顆。
發表於 2015-2-16 01:54:09 | 顯示全部樓層
jojoling 發表於 2015-2-16 12:07 AM
to ScottWang大,

建議把那個並列式的LCM改裝成序列信號的介面~原因就是:現在的  mcu 速度都很快,沒必 ...

用你說的方式,在arduino的環境裡有外加一個u8glib,但與原來內建的並沒有放在同一個框框內,而且在program file的arduino裡的libraries也並沒有新增目錄.

Sketch->Import Library->......| u8glib

可是我若自己解開壓縮檔,把名稱改為_u8glib,再放到arduino裡的libraries,就與原來內建的lib放在同一個框框內.

Sketch->Import Library->...... _u8glib

可是若用原來的名稱 u8glib,再放到arduino裡的libraries內,lib同一個框框內並沒有新增u8glib.

Sketch->Import Library->...... <-- 只有其它原有的目錄,並沒有新增的u8glib

像不像在繞口令 ...
 樓主| 發表於 2015-2-16 11:04:36 | 顯示全部樓層
scottwang 發表於 2015-2-16 01:54 AM
用你說的方式,在arduino的環境裡有外加一個u8glib,但與原來內建的並沒有放在同一個框框內,而且在program  ...

to ScottWang大,

1.為什麼它需要跟原來的 library 放在一起?
2.找不到,到你的硬碟開 console mode 出來,打 dir /s /p *.cpp 找一下~這是常用的手法,你就會知道它放在那裏了。
發表於 2015-2-16 11:23:25 | 顯示全部樓層
jojoling 發表於 2015-2-16 11:04 AM
to ScottWang大,

1.為什麼它需要跟原來的 library 放在一起?

正常的話,用arduino解壓縮,應該是要放在arduino的相關目錄底下,再不然就看它原來的*.zip是放在那裡,就放在zip的source,但是即使我把*.zip拿到arduino底下再去做你說的Sketch->Import Library->,一樣通通沒有,剛剛去查了 C: D:的主目錄也一樣通通沒有.
 樓主| 發表於 2015-2-16 11:41:08 | 顯示全部樓層
scottwang 發表於 2015-2-16 11:23 AM
正常的話,用arduino解壓縮,應該是要放在arduino的相關目錄底下,再不然就看它原來的*.zip是放在那裡,就放 ...


問題還是一樣,沒人說檔案應該被放在一起。放在一起與沒放在一起,都可以有很多正面的理由。
不過不放在一起的理由會比較多點。

這裏有描述放的地方~
2015-02-16_113536.png

發表於 2015-2-16 12:26:17 | 顯示全部樓層
jojoling 發表於 2015-2-16 11:41 AM
問題還是一樣,沒人說檔案應該被放在一起。放在一起與沒放在一起,都可以有很多正面的理由。
不過不放在 ...

你現在說的這個才對啦.
放在那裡不是最重要的,重要的是能知道他放在哪裡.
 樓主| 發表於 2015-2-16 12:48:40 | 顯示全部樓層
scottwang 發表於 2015-2-16 12:26 PM
你現在說的這個才對啦.
放在那裡不是最重要的,重要的是能知道他放在哪裡. ...

to ScottWang大,

我這個在12樓就有寫了~只是沒用圖示吧~
做圖要花功夫耶~
另外,你的 dir 用法有問題喔~竟然沒找到~
發表於 2015-2-16 13:16:03 | 顯示全部樓層
jojoling 發表於 2015-2-16 12:48 PM
to ScottWang大,

我這個在12樓就有寫了~只是沒用圖示吧~

不是用法有問題,我的硬碟資料太多沒去全部找,我是total commander去找幾個相關的目錄.

其實也不是你的問題,是我的記憶越來越有問題,我說的相關的目錄應該要包含my document,只是很久沒有去找那裡的資料,都把它給忘了.

評分

1

查看全部評分

 樓主| 發表於 2015-2-17 19:45:32 | 顯示全部樓層
大家晚上好~

這次又來補充 新的資料了。
由於其實,我也是 Arduino 的新手,這些相關的知識可能很多人都比我還熟,所以很多是邊做邊找資料,今天是來介紹 m2tklib 這一個 library。為什麼會介紹這個呢?就是因為在 Arduino 上,有太多寫好的 library,就如同很多功能有特定 IC 設計出來,我們只需要看看 datasheet 焊上基本電路及可完成很多不可思議的事。

https://code.google.com/p/m2tklib/
m2tklib - Mini Interative Interface Toolkit Library
A portable graphical and character user interface (GUI+CUI) library for embedded systems.

這個"庫"是用來開發人機介面的,就是說你可以不用自己設計,用它裏面的,就可以很簡單的設計一套人機介面的輸入/輸出,在圖形化LCM or 文字型 LCM 上。
這套介面,在底層的支援上也支援多種硬體介面。
有標準的文字型 LCD ( LiguidCrystal )~
新的文字型 LCD ( NewLiquidCrystal,支援更多介面 8bit/4bit/IIC/SPI 3 wire/ 4 wire / 1 wire 與有顯示效能)
GLCD (另一套圖形化的底層)
U8glib => 這也是我為什麼使用它的原因了~

由於 DEMO 平台上,有 SD card 的支援,加上U8glib 與 m2tklib 已超過 32k bytes,所以底下的例子是由 Arduino MEGA 2560 來展示。

相片 2015-2-17 上午5 06 20.jpg

圖上連接了很多線,其實是因為在 ATMega328 與 ATMega2560 在 SPI 與 I2c 上的腳位定義不同,我又不想修改原始官網的"庫"來達到。
所以我把 I2C 從 Meage 板拉進 UNO 相對映的 A4/A5 (I2C for UNO)~把 SPI (CLK,MISO,MOSI) 拉進 UNO 相對印的 11,12,13 腳去。
此用法記得不要去使用這些腳喔,並規畫它為 GPI 腳,防止燒毀 ( 2 pin with output together)。

底下為影片展示,真的很容易,簡單就可以設計出一套好用又完美的 UI了~



主畫面的設定,底下為規畫4個子選單。
2015-02-17_193739.png
實際畫面
2015-02-17_194225.png

第一個主畫面時間的設定~
2015-02-17_193853.png
實際畫面
2015-02-17_194257.png

神奇吧~沒做什麼程式就玩出了這麼炫的東西來~
是的,Arduino 就是這樣~


評分

3

查看全部評分

發表於 2015-2-18 03:22:10 | 顯示全部樓層
看國外那麼熱raspberry pi,還沒看raspberry pi內容之前,還以為只是與arduino類似的,看了之後,才知道為何國外那麼瘋了,真是極品,簡直就是一台小電腦了,網路連線,MicroSd Card都有了,HDMI,Audio等等,該有的通通都有,還有一些不知是否未來會流行的介面.
raspberry_pi_circuit_note_fig2a-800x600.jpg

圖片來源.
 樓主| 發表於 2015-2-19 04:39:39 | 顯示全部樓層
scottwang 發表於 2015-2-18 03:22 AM
看國外那麼熱raspberry pi,還沒看raspberry pi內容之前,還以為只是與arduino類似的,看了之後,才知道為何國 ...

聚焦聚焦~~
不要學大胖~~

聚焦 = 專注
專注 = 成功
等那天挖的夠深了,想挖廣一點再說~
順便祝 Scott大 新年快樂
發表於 2015-2-19 05:01:30 | 顯示全部樓層
本文章最後由 scottwang 於 2015-2-19 05:22 AM 編輯
jojoling 發表於 2015-2-19 04:39 AM
聚焦聚焦~~
不要學大胖~~


大胖會胖不是沒原因的,他每樣都吃,我最多只是看看,最少也看看,先看看好不好吃再說.
"心"年快樂 ... {:14_1486:}

最近都沒有看到大胖,不知是否被那兩隻小的,一人一隻手拉住,無法玩電腦了 ... {:14_1483:}
發表於 2015-2-24 23:43:32 | 顯示全部樓層
jojoling 發表於 2015-2-17 07:45 PM
大家晚上好~

這次又來補充 新的資料了。

JOJOLING大:
    好像不管瞎咪程式都難不倒你!! 對你的佩服如滔滔江水...(同三太子)
    我就檢現成的好了!!
您需要登錄後才可以回帖 登錄 | 立即註冊

本版積分規則

關閉

站長小叮嚀上一條 /1 下一條

禁閉室|手機版|連繫我們|痞酷網電子技術論壇

GMT+8, 2024-11-24 02:47 PM , Processed in 0.283235 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.