樹莓派raspberry使用spi介面oled顯示屏:基於python和c
之前寫過一篇樹莓派使用12864介面的2.3寸顯示屏的文章,當時用的是並口,佔用了太多的gpio資源,於是考慮使用spi介面的顯示屏,最近的專案正好用到了spi介面的oled的顯示屏,於是考慮把它用到樹莓派上,先介紹下這款螢幕:0.96寸的oled屏,spi介面ssd1306主控晶片,在很多微控制器上也可以用,它的優點是低功耗,以及它的解析度很高,很難想象0.96寸上面有128*64的解析度,而且0.96寸正好就是智慧手錶的尺寸啊,哈哈。本文使用python和c語言來完成功能。
個人原創,版權所有,轉載請註明出處,並保留原文連結:
一 首先介紹使用python來驅動這個spi介面的oled
(1) oled與樹莓派連線
之前也介紹過使用python來操作樹莓派的gpio口了,這回也一樣不過是這次操作的是spi介面。
樹莓派自帶的26個排針接口裡面就有一組spi介面:GPIO9(MISO) GPIO10(MOSI) GPIO11(SCL)
然後看一下我使用的oled的介面:
分別是GND VCC D0 D1 RST DC CS
各個口的功能與樹莓派的io口連線分別如下:
GND接樹莓派的GND, VCC接樹莓派的3v3 POWER口,就是電源口,不要接到5V
CS是spi的片選口,可以多組spi同時使用,這裡接樹莓派的GPIO8(CE0)口,第24個管腳
DC口是資料與命令選擇口,這裡接到第13管腳,對於R1版本的樹莓派就是GPIO21,我的是R2版本的,對應的是GPIO27
RST是復位口,這裡接到GPIO17也就是11管腳
D1(MOSI)口,接到樹莓派的GPIO10(MOSI)口,也就是21管腳
D0(SCLK)口,接到樹莓派的GPIO11(SCLK)口,也就是23管腳
(2) 開啟樹莓派的spi口
樹莓派預設的spi和i2c口都是被禁用的,使用之前必須先開啟
首先是ssh登陸到樹莓派上:
vi /etc/modprobe.d/raspi-blacklist.conf <code class="spaces"> </code><code class="comments">#blacklist spi-bcm2708 #使用井號註釋掉這行</code>
儲存後重啟樹莓派,sudo reboot,這樣就會開啟樹莓派的spi口,具體你可以在/dev目錄下看到兩個檔案:spidev0.0 spidev0.1,對應於gpio口上的spi口,0和1表示片選管腳ce0和ce1
(3) 使用python開始驅動spi口的oled
還是用ssh登陸到樹莓派上:
sudo apt-get update
sudo apt-get install build-essential python-dev python-pip
sudo pip install RPi.GPIO
sudo apt-get install python-imaging python-smbus
sudo apt-get install git
sudo mkdir embbnux,com
cd embbnux.com
#clone 下國外友人提供的python庫
git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
cd Adafruit_Python_SSD1306
sudo python setup.py install
下面就可以使用python來驅動這個oled了:
新建個python檔案:spioled.py,具體請見原文部落格:
二 用C語言操作SPI口
和python比較像,如果有興趣的話,見原文部落格。