树莓派4B-通过IIC实现图片循环播放

一、环境

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_files
 
def load_device():
    # 创建I2C接口对象  
    serial = i2c(port=1, address=0x3C)  # 地址可能因显示屏型号而异,由命令行“sudo i2cdetect -y 1”得到
      
    # 创建OLED设备对象  
    device = ssd1306(serial, WIDTH, HEIGHT) 
    
    return device
  
def load_pic(pic_name):
    # 加载图片并调整大小  
    print('ready show pic'+pic_name)
    image = Image.open(pic_name).convert('1')  # 转换为1位图像  
    image = image.resize((WIDTH, HEIGHT)) 

    return image
  
def show(image):
    # 将图片数据发送到OLED  
    device.display(image)
    time.sleep(1/24)
    
if __name__=='__main__':
    
    global device
    device = 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脚本
在这里插入图片描述
实现效果
请添加图片描述

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值