树莓派4-通过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_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脚本
在这里插入图片描述
实现效果
请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/3944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web前端第三次笔记

1事件类型 获取焦点事件 ipt.addEventListener("focus", () > {.log("") })失去焦点事件 ipt.addEventListener("blur", () > {console.log("") })文本输入事件 txt.addEventListener("input", () > {console.log…

Web3解密:理解去中心化应用的核心原理

引言 在当前数字化时代,去中心化技术和应用正在逐渐引起人们的关注和兴趣。Web3技术作为去中心化应用(DApps)的基础,为我们提供了一个全新的互联网体验。但是,对于许多人来说,这个复杂的概念仍然充满了神秘…

如何安装、利用、激活、禁用pytest插件

关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 在本文中,我们介绍如何安装和使用pytest第三方插件,对于如何…

MongoDB基础操作

文章目录 一、什么是MongoDB二、MongoDB 与关系型数据库对比三、数据类型四、部署MongoDB1、下载二进制包2、下载安装包并解压3、创建用于存放数据和日志的目录,并修改权限4、启动MongoDB4.1前台启动4.2后台启动4.3、配置文件启动服务4.4、配置systemd服务4.5、syst…

RabbitMQ发布确认和消息回退(6)

概念 发布确认原理 生产者将信道设置成 confirm 模式,一旦信道进入 confirm 模式,所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始),一旦消息被投递到所有匹配的队列之后,broker就会发送一个确认给生产者(包含消…

qt实现方框调整

效果 在四周调整 代码 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QWidget>class MainWindow : public QWidget {Q_OBJECT public:explicit MainWindow(QWidget *parent 0);~MainWindow();void paintEvent(QPaintEvent *event);void updateRect();void re…

Restful API 具体设计规范(概述)

协议 https 域名 https://www.baidu.com/api 版本 https://www.baidu.com/v1 路径 https://www.baidu.com/v1/blogs 方法 数据过滤 状态码返回结果 返回的数据格式 尽量使用 JSON&#xff0c;避免使用 XML。 总结&#xff1a; 看 url 就知道要什么看 http method 就知道干…

Linux进阶篇:CentOS7搭建NFS文件共享服务

CentOS7搭建NFS文件共享服务 一、NFS介绍 NFS(Network File System)意为网络文件系统&#xff0c;它最大的功能就是可以通过网络&#xff0c;让不同的机器不同的操作系统可以共享彼此的文件。简单的讲就是可以挂载远程主机的共享目录到本地&#xff0c;就像操作本地磁盘一样&…

Docker——数据管理和网络通信

目录 一、Docker的数据管理 1.数据卷 2.数据卷容器 3.容器互联 二、Docker镜像的创建 1.基于现有镜像创建 2.基于本地模板创建 3.基于Dockerfile 创建 3.1联合文件系统&#xff08;UnionFS&#xff09; 3.2镜像加载原理 3.3为什么Docker里的Centos大小才200M 4.Dcok…

9【PS作图】像素画Tips

放大缩小 “窗口”-排列-为…画布新建窗口&#xff0c;就可以新建一个窗口&#xff0c;实时看作图效果 如果要保持放大或缩小的像素画仍然保持硬边缘&#xff0c;需要设置两个东西 将 编辑 > 首选项 > 常规 中的 插值方式 改为 “邻近&#xff08;靠近硬边缘&#xff09…

HTML网页自动播放背景音乐和全屏背景图代码

HTML网页自动播放背景音乐的代码 背景音乐代码及分析代码的应用背景图代码及分析下期更新预报 背景音乐代码及分析 能使网站上自动循环的背景音乐代码如下&#xff1a; <audio src"music.mid" autostart"true" loop"true" hidden"true…

【小梦C嘎嘎——启航篇】C++四大类型转换

&#x1f60e; 前言&#x1f64c;C四大类型转换什么是类型转换C语言中的类型转换为什么C要嫌弃C语言的类型转换&#xff1f;自行搞一套呢&#xff1f;C强制类型转换1、static_cast2、reinterpret_cast3、const_cast4、dynamic_cast为什么要支持向下转呢&#xff1f; RTTI 总结撒…

RabbitMQ工作模式(4) - 路由模式

概念 路由模式&#xff08;Routing&#xff09;是 RabbitMQ 中的一种消息传递模式&#xff0c;也称为直连模式。它允许生产者将消息发送到一个交换机&#xff0c;并指定一个或多个路由键&#xff08;routing key&#xff09;&#xff0c;交换机根据路由键将消息路由到与之匹配的…

实验7:路由冗余协议HSRP配置管理(课内实验以及解答)

实验目的及要求&#xff1a; 理解首跳冗余协议&#xff08;FHRP&#xff09;的工作原理&#xff0c;掌握热备份路由器协议 (HSRP)&#xff08;思科私有协议&#xff09;原理和配置。能够实现网络终端设备虚拟网关的配置和网络故障的灵活切换&#xff0c;完成相应网络的联通性测…

vue中nextTick函数和react类似实现

Vue 3 基本用法&#xff1a; import { nextTick } from vue;// 全局调用 nextTick(() > {// 在下一个 DOM 更新循环后执行的代码 });// 在组件内部调用 setup() {async function handleUpdate() {// 修改数据...await nextTick();// 在数据引发的 DOM 更新完成后执行的代码}…

多模态大语言模型综述

去年以来&#xff0c;我们见证了以 GPT-4V 为代表的多模态大语言模型(Multimodal Large Language Model&#xff0c;MLLM)的飞速发展。为此我们对综述进行了重大升级&#xff0c;帮助大家全面了解该领域的发展现状以及潜在的发展方向。 MLLM 发展脉络图 MLLM 脱胎于近年来广受…

【Redis 开发】缓存雪崩和缓存击穿

缓存问题 缓存雪崩解决方案 缓存击穿互斥锁逻辑时间基于互斥锁解决缓存击穿问题基于逻辑过期方式解决缓存击穿问题 缓存雪崩 缓存雪崩是指在同一时间段&#xff0c;大量的缓存key同时失效或者Redis服务器宕机&#xff0c;导致大量请求到达数据库&#xff0c;带来巨大压力 解决…

Qt | QAbstractButton 抽象类

QAbstractButton 类中的属性 ①、autoExclusive:bool 访问函数:bool autoExclusive() const; void setAutoExclusive(bool); 描述了按钮的自动排他性,若启用了该属性,则属于同一父部件的可选中按钮的行为, 就好像是在同一排他性组中的按钮一样。除了单选按钮,默认为关…

spark错误集锦

1. java.lang.ClassNotFoundException: Failed to find data source: kafka. 详细错误如下&#xff1a; Exception in thread "main" java.lang.ClassNotFoundException: Failed to find data source: kafka. Please find packages at http://spark.apache.org/th…

微信小程序:7.页面渲染

wx:if 在小程序中&#xff0c;使用wx&#xff1a;if“{{ condition }}”来判断是否需要渲染该代码块 <view wx:if"{{condation}}">你好帅</view>也可以用wx&#xff1a;if和wx&#xff1a;else来添加else判断&#xff1a; <view wx:if"{{type…