提供树莓派、STM32、arduino例程
功能引脚 | 描述 |
VCC | 3.3V/5V电源正 |
GND | 电源地 |
NC | NC |
DIN | SPI数据输入 |
CLK | SPI时钟输入 |
CS | 片选,低电平有效 |
RST | 复位 |
OLED模块提供三种驱动接口:分别为3-wire SPI、4-wire SPI 和I2C接口,模块背面有两个可选择焊接的电阻, 通过电子的选择来选择相应的通信方式, 如图:
模块出厂默认使用4线SPI通信模式, 即BS0,BS1默认接0(1和0不全代表电平,只是电阻接上或者接下的焊接方式,具体硬件链接见下表):
注:上图为硬件上的焊接, 下表为实际的硬件连接
通信方式 | BS1/BS0 |
3-wire SPI | 0/1 |
4-wire SPI | 0/0 |
I2C | 1/0 |
具体硬件配置,如下:
即出厂程序设置:BS0与BS1接0连接到地,DIN接0连接至树莓派MOSI,CLK接0连接至树莓派SCLK;
BS0接1连接到VCC,BS1接0连接至GND,DIN接0连接至树莓派MOSI,CLK接0来连接至树莓派SCLK;
BS0接0连接至GND,BS1接1连接至VCC(3.3V),DIN接0连接至树莓派SDA,CLK接1连接至树莓派SCL;
使用I2C时:DC的高低状态可以控制从设备的地址,如果接到了GND,那么I2C的7位地址为:0x3C;
提供C语言与python例程
- sudo raspi-config
- 选择Interfacing Options -> SPI -> Yes 开启SPI接口
- sudo reboot
请确保SPI没有被其他的设备占用,你可以在/boot/config.txt中间检查
- 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版本,如果没有出现说明安装出错
- sudo apt-get update
- sudo apt-get install python-pip
- sudo pip install RPi.GPIO
- sudo apt-get install python-smbus
- sudo pip install spidev
默认使用的4线SPI
LCD | RPi引脚号 | BCM |
VCC | 3.3V | 3.3V |
GND | GND | GND |
DIN | 19 | MOSI |
CLK | 23 | SCLK |
CS | 24 | CE0 |
DC | 13 | P27 |
RST | 18 | P24 |
在树莓派终端运行:
- apt-get install p7zip-full
- wget http://www.waveshare.net/w/upload/1/1d/0.96inch-OLED-Code.7z
- 7z x 0.96inch-OLED-Code.7z
- sudo chmod 777 -R 0.96inch-OLED-Code
- cd 0.96inch-OLED-Code/RaspberryPi
- cd c
- make clean
- make
- sudo ./main
- #预期效果
- #显示图片
- #显示时间
- cd python
- sudo python main.py
- #预期效果
- #显示英文和中文
- #显示图片
LCD | RPi引脚号 | BCM |
VCC | 3.3V | 3.3V |
GND | GND | GND |
DIN | 3 | SDA |
CLK | 5 | SCL |
CS | 24 | CE0 |
DC | 13 | P27 |
RST | 18 | P24 |
打开C\obj\DEV_Config.h,把如下:
- #define USE_SPI 1
- #define USE_IIC 0
改成
- #define USE_SPI 0
- #define USE_IIC 1
然后重新执行:
- make clean
- make
- sudo ./main
打开python/config.py,把如下:
- Device_SPI = 1
- Device_I2C = 0
改成
- Device_SPI = 0
- Device_I2C = 1
然后重新执行:
- sudo python main.py
- sudo apt-get update
- sudo apt-get install python3-pip
- sudo pip3 install Jetson.GPIO
- sudo groupadd -f -r gpio
- sudo usermod -a -G gpio your_user_name
- sudo cp /opt/nvidia/jetson-gpio/etc/99-gpio.rules /etc/udev/rules.d/
- sudo udevadm control --reload-rules && sudo udevadm trigger
【注意】your_user_name 是你使用的用户名,比如说 waveshare
- sudo apt-get install python-smbus
- sudo apt-get install python3-pil
- sudo apt-get install python3-numpy
- sudo apt-get install p7zip
- wget http://www.waveshare.net/w/upload/1/1d/0.96inch-OLED-Code.7z
- 7z x 0.96inch-OLED-Code.7z
- sudo chmod 777 -R 0.96inch-OLED-Code
- cd 0.96inch-OLED-Code/JetsonNano/
由于JetsonNano的GPIO驱动能力弱,只能使用SPI进行控制
- cd C
- make clean
- make
- sudo ./main
- #python2
- cd python2
- sudo python main.py
- #python3
- cd python3
- sudo python3 main.py
把 OLED 模块连接到 Open103R 开发板 SPI2 接口。
OLED | STM32 |
VCC | 3.3V |
GND | GND |
DIN | PB15 |
CLK | PB13 |
CS | PB12 |
DC | PC6 |
RST | PC2 |
下载程序,找到STM32程序文件目录并打开STM32工程。注意使用前先确保电脑已经安装好keil5软件。 确认好开发板型号,并连接好下载器。点击编译,然后点击下载将程序下载到开发板即可
由于我们提供的示例程序是基于Arduino UNO,所以对应给出的硬件连接也是基于Arduino UNO. 如果你要连接屏幕到别的Arduino开发板,请先确认您的开发板接口是否兼容Arduino UNO. 如果不兼容UNO,需要修改硬件连接方式,以实际开发板引脚为准。
OLED | UNO |
VCC | 5V |
GND | GND |
DIN | D11 |
CLK | D13 |
CS | D10 |
DC | D8 |
RST | D9 |
打开工程,选择开发板型号和对应COM口,然后点击编译并下载即可。