【树莓派】使用Python驱动SSD1306 OLED显示
762 字
4 分钟
【树莓派】使用Python驱动SSD1306 OLED显示

0x00
因为之前用的Nokia5110显示有故障,所以在网友的推荐下接触到了SSD1306。
显示模块型号:SSD1306 OLED
显示范围:单色 128*64点阵
测试机:树莓派zero w
测试机系统:Raspbian stretch life
开发语言:Python3
采用驱动库:Adafruit Python SSD1306
0x01环境准备
1.树莓派开启I2C接口
终端输入
sudo raspi-config选择Interfacing Options,开启I2C接口



更改显示速率(可选,不推荐,会占用大量GPIO资源)
为了更好的显示性能,例如显示动画时如对帧率有要求,可以通过修改下面的参数将 I2C 频率从默认的 100KHz 或 400KHz 提升到 1MHz。
sudo nano /boot/config.txt在文件末添加一行:
dtparam=i2c_baudrate=10000002.接线
模块共4针脚,接线为
VCC 1
GND 6
SCL 5
SDA 3

3.驱动
GPIO驱动:
pip install Adafruit_GPIOSSD1306采用的驱动是Adafruit Python SSD1306,用pip安装即可。
sudo python -m pip install --upgrade pip setuptools wheelsudo pip install Adafruit-SSD1306或者采用python文件安装:
sudo python -m pip install --upgrade pip setuptools wheelgit clone https://github.com/adafruit/Adafruit_Python_SSD1306.gitcd Adafruit_Python_SSD1306sudo python setup.py install0x03使用
采用python文件安装的可以在Adafruit_Python_SSD1306文件夹中看见examples实例文件夹。
首先是导入驱动的库:
import Adafruit_GPIO.SPI as SPIimport Adafruit_SSD1306针脚配置:
# Raspberry Pi pin configuration:RST = 24# Note the following are only used with SPI:DC = 23SPI_PORT = 0SPI_DEVICE = 0显示配置:
#分辨率选择一个即可# 128x32disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST)# 128x64disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)
# 初始化库disp.begin()# 获取屏幕大小width = disp.widthheight = disp.height# 清除屏幕内容disp.clear()disp.display()1.显示内容
屏幕显示内容是先建立一张与屏幕相等的空白画布,将要显示的内容添加到其中,最后再显示出来:
# 创建空白画布# 颜色为1 bitwidth = disp.widthheight = disp.heightimage = Image.new('1', (width, height))
# 画布绘制对象draw = ImageDraw.Draw(image)
# 绘制一个黑色内容清除画布内容draw.rectangle((0,0,width,height), outline=0, fill=0)
# 绘制内容# 定义一些常亮控制图形大小padding = 2shape_width = 20top = paddingbottom = height-padding# 从左向右移动,跟踪绘制形状的当前位置x = padding# 绘制椭圆draw.ellipse((x, top , x+shape_width, bottom), outline=255, fill=0)x += shape_width+padding# 绘制矩形draw.rectangle((x, top, x+shape_width, bottom), outline=255, fill=0)x += shape_width+padding# 绘制三角draw.polygon([(x, bottom), (x+shape_width/2, top), (x+shape_width, bottom)], outline=255, fill=0)x += shape_width+padding# 绘制Xdraw.line((x, bottom, x+shape_width, top), fill=255)draw.line((x, top, x+shape_width, bottom), fill=255)x += shape_width+padding
# 加载默认字体font = ImageFont.load_default()
# 或者使用其他.ttf格式的字体,字体文件要与执行文件在同一目录#font = ImageFont.truetype('Minecraftia.ttf', 8)
# 加两行文字draw.text((x, top), 'Hello', font=font, fill=255)draw.text((x, top+20), 'World!', font=font, fill=255)
# 显示disp.image(image)disp.display()
2.显示图片
# 根据OLED高度加载图片,图片要转换成1 bit颜色if disp.height == 64: image = Image.open('image_64.png').convert('1')else: image = Image.open('image_32.png').convert('1')
PS<可以把喜欢的图片改成不超过128>可以把喜欢的图片改成不超过128>*64,再在Photoshop里先把模式改成灰度,然后调对比度和亮度,在不影响视觉的前提下尽可能对比度大。然后再改模式为“位图”,方法选“扩散仿色”,然后另存为PNG,选项为交错,就可以让OLED显示了。
END
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
相关文章智能推荐
1
【树莓派】使用Nokia5110显示信息
树莓派笔记2018-07-14
2
【树莓派】延时拍照并上传到服务端
树莓派脚本2019-01-22
3
延时拍照
树莓派笔记2018-01-05
4
frp开机启动与自动检查运行脚本(Python)
树莓派脚本2017-12-08
5
树莓派温控风扇脚本(使用三极管 s8050)
树莓派脚本2017-09-26
随机文章随机推荐















加载更多…