Python可以這樣玩(20):PyMata 與I2C
到目前為止,大部分基礎的 Arduino 電路實驗我們學會了,相信大家對於 pySerial 、 pyFirmata 擴充庫也有了基本的認識,我們現在即將進入第二個階段。 在這之前,先回顧一下之前我們學的七段顯示器,如果用最原始的方法,一個小小的七段顯示器幾乎就把 Arduino UNO 的腳位都站滿了,當我把我的實驗作品 PO 上臉書的時候,就有網友建議我可以使用 BCD 的方式簡化線路, 7447 與 7448 這兩個 IC 就具備了 BCD 轉七段顯示器的功能,不過,比較常用的方法是使用 74HC595 來做,它把序列輸入轉成串列輸出,加上可以串接,因此減少了非常多的腳位並可以連接非常多的七段顯示器。 從這裡得到的啟示是,如果可以使用一些特殊的 IC 或是特殊的通訊協定,基本上可以做到的事情就更多了。 要更進一步釐清觀念,我們就來談談三種通訊協定: UART 、 I2C 、以及 SPI 。 UART 、 I2C 、 SPI 對於專業電子工程人員而言,當然非常清楚 UART 、 I2C 、 SPI 之間的差別,然而對於不是電子工程背景的玩家,對這些協定就比較陌生了,但是我們必須去面對,因為 Arduino 、 Raspberry Pi 開發板就有這些介面。 以 Arduino 而言,最原初的 Arduino 就有 UART ,而演化不久後也加添了 I2C ,現在無論 Arduino 家族開發板如何演化,多會具備 UART 與 I2C 。而 RPi 方面則是從 2012 年最原初的 RPi 開始,就同時具備這三種介面,事實上 Arduino 開發板所用的微控制器晶片,其本身也是具備 SPI 介面功能的,只是 Arduino 將此功能掩蓋、關閉而已。 UART 是用於 RS-232 與 USB 的通訊協定,中文名稱是通用非同步收發傳輸器。我們將 Arduino 插入電腦的 USB 孔,事實上開發板就開始以此方式與電腦通訊了。從下圖中我們就可以看到每種通訊功能所使用的腳位,還記得 d0 與 d1 吧, Rx/Tx 就是 UART 的腳位。 接下來進階的課程中,就會開始用到 SPI 與 I2C 。 I2C I²C ( Inter-Integrated Circuit ...