用micro:bit取得I2C裝置的位址

I2C裝置,可以讓我們用SDA以及SCL二條線路就可以控制許多的裝置,這對於腳位已經不多的micro:bit來說,實在是太好了。例如像是LCD1602這種液晶顯示器,它就是使用了I2C,使得原本驅動它要使用七、八個腳位簡化成只需使用SDA以及SCL腳位即可(micro:bit的20以及19腳位),而且還可以繼續利用這二個腳位連接其他裝置,只要不同的裝置有不同的位址,micro:bit或是其他開發板便能利用這些位址,只透過二個針腳便能識別以及控制不同的裝置。(LCD1602用法請參閱之前的文章)

但是有很多I2C的裝置,買回來的時候,它根本就沒有註明它使用了什麼位址,這就造成了使用上的困擾。於是我寫了一個掃描I2C裝置的micro:bit程式,當不知道您的I2C裝置位址的時候,只要把I2C裝置接上micro:bit,並執行這支程式,便能將裝置的位址掃描出來。

以下以LCD1602為例,說明I2C裝置的安裝以及掃描程序:

一、LCD1602一般擴展板安裝:

二、使用凱斯電子的KSB039擴展板安裝:

KSB039的擴展板已經把micro:bit的SDA以及SCL的線路拉出來了,所以只要依照腳位接好便可以了

三、I2C的MakeCode掃描的程式碼,將它下載到micro:bit裡面,按A鍵即可開始掃描,掃描到的位址會以16進位的方式顯示在5*5的LED上,掃描結束會顯示over表示掃描完畢。micro:bit板子本身內建的加速度感應器以及磁力感應器也是I2C的裝置,使用的位址是0x1D(29)以及0x0E(14),在這支程式會被過濾掉而不顯示,只會顯示自己安裝的I2C裝置(請參看以下程式圖檔的add不等於14以及29的地方)。如果想直接下載hex檔,請點選這個連結,I2C_Scan

四、最後再使用我寫的LCD1602積木,便可以正確驅動LCD1602,開始寫程式了!積木使用說明請參閱我寫的LCD1602文件