一、环境
1、树莓派4;
2、串口连接电脑;
3、树莓派由杜邦线连接0.96寸OLED1306协议
4、树莓派能够联网,便于安装环境。离线情况也可以安装,相对麻烦;
二、目标
1、树莓派可以开启IIC并识别已连接的IIC;
2、循环播放;
三、实现过程
1、连接树莓派IIC
GPIO定义
启用识别IIC
2、启用树莓派IIC
树莓派命令行输入
sudo raspi-config
选择‘Interface Options’
选择IIC
确认开启
再次确认
右方向键选择‘Finish’退出
确认‘/etc/modules’文件是否存在,在其中输入‘i2c-dev’
树莓派命令行输入‘sudo reboot’重启,生效
树莓派命令行输入“sudo i2cdetect -y 1”获取IIC地址,此地址用于程序中初始化IIC通信的地址
3、编写程序
目标:将多张图片轮流播放,以达到动画的效果。(以下代码基本来自‘文心一言’聊天机器人,稍微按需求进行了调整)
注意:需要用到“sudo i2cdetect -y 1”得到的地址
import os
import glob
import time
from PIL import Image
import luma.oled as oled
from luma.core.interface.serial import i2c
from luma.oled.device import ssd1306 WIDTH=128
HEIGHT=64 def search_dir_pic(dir_name, suffix):# 设置文件夹路径 folder_path = os.path.join(os.getcwd(), dir_name)# 使用glob模块匹配以数字命名的文件 number_files = glob.glob(os.path.join(folder_path, '[0-9]*.'+suffix)) # print('图片文件名')# print(number_files)return number_filesdef load_device():# 创建I2C接口对象 serial = i2c(port=1, address=0x3C) # 地址可能因显示屏型号而异,由命令行“sudo i2cdetect -y 1”得到# 创建OLED设备对象 device = ssd1306(serial, WIDTH, HEIGHT) return devicedef load_pic(pic_name):# 加载图片并调整大小 print('ready show pic'+pic_name)image = Image.open(pic_name).convert('1') # 转换为1位图像 image = image.resize((WIDTH, HEIGHT)) return imagedef show(image):# 将图片数据发送到OLED device.display(image)time.sleep(1/24)if __name__=='__main__':global devicedevice = load_device()pic_group = search_dir_pic('pic-s', 'jpg')while True:for pic_file in pic_group:image = load_pic(pic_file)show(image)
图片文件夹内容:
4、在树莓派中运行
首先将python脚本文件与图片文件夹保存到树莓派,通过软件FileZilla上传
运行python脚本
实现效果