SSD1306 是一款 128*64 像素的 OLED 控制器,但该 OLED 只有 128*32 个像素点,所以该屏只用到了 SSD1306 缓存区的前半部分。
该 OLED 支持 8bit 8080 并行、8bit 6800 并行、三线 SPI、四线 SPI 和 I2C 等通信方式,但考虑到该模块的尺寸,以及节省微控制器宝贵的 IO 资源,故舍弃了前四种通信方式,只支持 I2C的通信方式。
在 I2C 通信时,先发送一个 7bit 的从设备地址+1bit 的读写位,等待设备的响应。
在从设备应答后,接着发送一个控制字节,该字节决定了后面发送的字节是命令还是数据,然后再等待从设备应答。
在从设备再次应答之后,若发送命令,则只发送一字节的命令。若发送数据,可以只发送一个字节,也可以多个字节的数据连着发送,视情况而定。
详见 Datasheet Page20 Figure 8-7
在终端执行:
- sudo raspi-config
- 选择 Interfacing Options -> I2C ->yes 启动 i2C 内核驱动
- sudo reboot
- wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz
- tar zxvf bcm2835-1.60.tar.gz
- cd bcm2835-1.60/
- sudo ./configure && sudo make && sudo make check && sudo make install
- # 更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/
- sudo apt-get install wiringpi
- #对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级:
- wget https://project-downloads.drogon.net/wiringpi-latest.deb
- sudo dpkg -i wiringpi-latest.deb
- gpio -v
- # 运行gpio -v会出现2.52版本,如果没有出现说明安装出错
- #python2
- sudo apt-get update
- sudo apt-get install python-pip
- sudo apt-get install python-pil
- sudo apt-get install python-numpy
- sudo pip install RPi.GPIO
- sudo pip install spidev
- #python3
- sudo apt-get update
- sudo apt-get install python3-pip
- sudo apt-get install python3-pil
- sudo apt-get install python3-numpy
- sudo pip3 install RPi.GPIO
- sudo pip3 install spidev
OLED | RPi引脚号 | BCM |
VCC | 3.3V | 3.3V |
GND | GND | GND |
SDA | 3 | SDA |
SCL | 5 | SCL |
- sudo apt-get install p7zip-full
- wget http://www.waveshare.net/w/upload/3/37/0.91inch_OLED_Module_Code.7z
- 7z x 0.91inch_OLED_Module_Code.7z -r -o./0.91inch_OLED_Module_Code
- sudo chmod 777 -R 0.91inch_OLED_Module_Code
- cd 0.91inch_OLED_Module_Code/RaspberryPi
注:如果使用了BCM2835库,需要重启才能正常运行wiringPi库和python库。
- cd bcm2835/
- make clean
- make
- sudo ./oled_0in91
由于默认的波特率只有100Kbps,而芯片实际上可以达到400Kbps,而wiringPi无法修改树莓派I2C的波特率,因此我们需要在/boot/config.txt找到dtparam=i2c_arm=on,在其后面加上:,i2c_arm_baudrate=400000,具体步骤如下:
- sudo nano /boot/config.txt
找到dtparam=i2c_arm=on,将其修改成如下:
- dtparam=i2c_arm=on,i2c_arm_baudrate=400000
然后重启:
- sudo reboot
重启之后
- cd 0.91inch_OLED_Module_Code/RaspberryPi/wiringpi/
- make clean
- make
- sudo ./oled_0in91
- cd python/
- #python2.7
- sudo python main.py
- #python3
- sudo python3 main.py
模块 | XNUCLEO-F103RB |
VCC | 3V3/5V |
GND | GND |
SDA | SDA/D14 |
SCL | SCL/D15 |
在资料中下载程序,或点击此处下载
解压后打开\STM32\0.91inch_OLED_Demo\MDK-ARM\0.91inch_OLED_Demo.uvprojx
编译并下载到开发板上
模块 | UNO |
VCC | 3V3/5V |
GND | GND |
SDA | SDA |
SCL | SCL |
在资料中下载程序,或点击此处下载
解压后将Arduino\0.91Inch_OLED_Demo\下的文件复制到Arduino\0.91Inch_OLED_Demo\oled\目录下
打开Arduino\0.91Inch_OLED_Demo\oled\oled.ino
编译并下载到开发板上