当前位置: 首页 > news >正文

实例1:控制树莓派板载LED灯闪烁

实例1:控制树莓派板载LED灯闪烁

实验目的

  1. 通过背景知识学习,了解四足机器人mini pupper搭载的微型控制计算机:树莓派。
  2. 通过对树莓派板载LED灯的状态读写控制,熟悉树莓派本身的操作及Linux中文件的读写。
  3. 掌握常见函数time.sleep()的用法。

实验要求

使用Python语言编程,通过Linux文件的读写操作,周期性地改变树莓派状态指示灯的亮灭状态,使之发生周期为一秒的持续明暗闪烁。

实验知识

1. 什么是树莓派?

树莓派(Raspberry Pi)是英国树莓派基金会开发的低成本微型单板计算机,硬件上配置有SoC (片上系统),具有 GPU和RAM并支持有线、无线连接方案。值得称道的是,树莓派有着完善的社区与软件支持,这极大地方便了机器人开发初学者的入门学习。
树莓派在具备计算机基本功能的同时,保持着一张卡片的大小,这意味着你可以简单便捷地搭建自己的机器人编程平台,并将这台微型计算机部署在小巧可爱的四足机器狗mini pupper上。
请添加图片描述
图片1:树莓派4B
参考链接:树莓派

2. 树莓派状态指示灯

在树莓派4B上,状态指示灯对应的文件如下,通过对Linux系统中对应文件的读写操作,可以改变状态指示灯的亮灭状态。

#	树莓派4B状态灯
/sys/class/leds/led0/brightness	#	灯1二进制亮灭开关
/sys/class/leds/led1/brightness	#	灯2二进制亮灭开关

本实例中的使用:

status_led = open('/sys/class/leds/led1/brightness', 'wb', 0)

图片2:树莓派板载的LED灯

3. Python open()函数的用法

python open() 函数用于打开一个文件,在Linux中,相当多的操作是通过对文件的读写完成的。

varible_name = open(file_name,mode,buffering)
#	name : 要访问的文件名,需以字符串形式表现,比如'/sys/class/leds/led1/brightness'
#	mode : 打开文件的模式,写入的模式为:'wb' 意为以二进制方式写入
#	buffering :缓冲,为了不调用close方法,实现无缓冲写入,此处为:0

本实例中的使用:

status_led = open('/sys/class/leds/led1/brightness', 'wb', 0)

参考链接:Python open()函数

4. Python sleep()函数的用法

python sleep()函数推迟调用线程的运行,可以实现延时功能,这使得LED灯在改变状态后可以保持一段时间再发生下一次状态的改变。
调用sleep()函数需首先引入time库的sleep函数。

from time import sleep
#	引入time库的sleep函数
time.sleep(time)
#	暂缓延时,长达time

本实例中的使用:

from time import sleep	#	在文件头引入time库的sleep函数
sleep(0.5)	#	用于延时,保持灯的状态

参考链接:Python time.sleep()函数

5. 对文件的写入

python的file.write()函数用于向文件中写入指定的字符串。
在文件关闭以及缓冲区刷新前,字符串是暂未写入文件,而是存在缓冲区里,为了使树莓派快速改变灯的亮灭状态,采用了无缓冲写入,因此open()的buffering为0,实现无缓冲写入。
当文件使用二进制写入时,需要使用encode()方式转为bytes形式,或者在其前加b。

status_led.write(b'1')	#	LED熄灭 b为指定二进制
status_led.write(b'0') 	#	LED开启

实验步骤

1. 编写Python程序 led_blink.py

#!/usr/bin/python
#coding:utf-8
#	led_blink.py 
#	使树莓派状态指示灯的亮灭状态周期性地改变,发生周期为一秒的持续明暗闪烁。from time import sleep
status_led = open('/sys/class/leds/led1/brightness', 'wb', 0)
#	mini pupper 默认禁用了开启后的指示灯,如led1无法闪烁,此处可改为led0
#	如果你希望启用指示灯,请修改/boot/firmware/config.txt
#	修改config.txt的具体方法可查看课程的进阶参考文档中实例1部分
while True:status_led.write(b'0')	#	Turn onsleep(0.5)status_led.write(b'1')	#	Turn offsleep(0.5)

2. 运行程序,观察效果

在led_blink.py的目录下执行以下命令:

sudo python led_blink.py

此时应观察到树莓派状态指示灯的亮灭状态周期性地改变,发生周期为一秒的持续明暗闪烁。

图片3:板载LED灯闪烁

实验总结

经过本知识点的学习和实验操作,你应该能达到以下水平:

知识点内容了解熟悉掌握
树莓派树莓派的来历、用途及基本硬件性能
树莓派树莓派的状态指示灯
LinuxLinux的文件读写
语言延时函数time.sleep()的用法

相关文章:

实例1:控制树莓派板载LED灯闪烁

实例1:控制树莓派板载LED灯闪烁 实验目的 通过背景知识学习,了解四足机器人mini pupper搭载的微型控制计算机:树莓派。通过对树莓派板载LED灯的状态读写控制,熟悉树莓派本身的操作及Linux中文件的读写。掌握常见函数time.sleep(…...

华为OD机试题 - 最大排列(JavaScript)

最近更新的博客 华为OD机试题 - 字符串加密(JavaScript) 华为OD机试题 - 字母消消乐(JavaScript) 华为OD机试题 - 字母计数(JavaScript) 华为OD机试题 - 整数分解(JavaScript) 华为OD机试题 - 单词反转(JavaScript) 使用说明 参加华为od机试,一定要注意不要完全背…...

手动创建 vue2 ssr 开发环境

本文和个人博客同步发表 更多优质文章查看个人博客 前言 手动搭建 vue ssr 一直是一些前端开发者的噩梦,因为其中牵扯到很多依赖包之间的配置以及webpack在node中的使用。就拿webpack配置来说,很多前端开发者还是喜欢用webpack-cli脚手架搭建项目。导致…...

RHCE-操作系统刻录工具

Windows 1.准备材料。 一个可用的windows操作系统(下载的时候用迅雷比较快) MSDN, 我告诉你 - 做一个安静的工具站 大于等于8G的U盘 想要安装的系统光盘镜像 U盘烧录工具(软碟通) UltraISO软碟通中文官方网站 - 光盘映像文件制作/编辑/转换工具 …...

PHP面向对象01:面向对象基础

PHP面向对象01:面向对象基础一、关键字说明二、技术实现1. 定义类2. 类成员三、 访问修饰限定符1. public2. protected3. private4. 空修饰限定符四、类内部对象五、构造和析构1. 构造方法2. 析构方法六、范围解析操作符1. 访问类常量2. 静态成员3. self关键字七、类…...

《爆肝整理》保姆级系列教程python接口自动化(十八)--重定向(Location)(详解)

简介   在实际工作中,有些接口请求完以后会重定向到别的url,而你却需要重定向前的url。URL主要是针对虚拟空间而言,因为不是自己独立管理的服务器,所以无法正常进行常规的操作。但是自己又不希望通过主域名的二级目录进行访问&…...

MySQL的索引、视图

什么是索引模式(schema)中的一个数据库对象 在数据库中用来加速对表的查询 通过使用快速路径访问方法快速定位数据,减少了磁盘的I/O 与表独立存放,但不能独立存在,必须属于某个表 由数据库自动维护,表被删除时,该表上的索引自动被…...

【JavaWeb】网络层协议——IP协议

目录 IP协议结构 IP地址管理 特殊IP 解决IP地址不够用 动态分配IP地址 NAT网络地址转换 IPV6 IP协议结构 版本:就是IP协议的版本号。目前只有 4 和 6。这里介绍的是IPV4 首部长度:单位是4字节。于TCP首部长度完全一致,也是可变的&…...

【Python学习笔记】41.Python3 多线程

前言 本章介绍Python的多线程。 Python3 多线程 多线程类似于同时执行多个不同程序,多线程运行有如下优点: 使用线程可以把占据长时间的程序中的任务放到后台去处理。用户界面可以更加吸引人,比如用户点击了一个按钮去触发某些事件的处理…...

Windows 版本ffmpeg编译概述

在使用ffmpeg过程当中,ffmpeg在Linux(包括mac,android)编译非常容易,直接configure,make即可,Android需要交叉编译,在windows就比较麻烦,庆幸的是ffmpeg官方提供已编译好Windows版本的二进制库(http://ffmpeg.org/download.html#b…...

NETCore下CI/CD之自动化测试 (详解篇)

NETCore下CI/CD之自动化测试 (详解篇) 目录:导读 前言 安装JDK 安装 Tomcat 首先,我们需要指定 Tomcat.PID 进程文件,进入 /usr/local/tomcat/bin,编辑文件 增加 tomcat 账户并赋予权限 防止Jeknins…...

Hoeffding不等式剪枝方法

在基于物品的协通过滤算法中,当用户历史行为数据有很多时,对计算会有很大挑战,对此可以使用剪枝对数据进行化简来达到减少计算量。     不是每个物品对都需要进行增量计算。对于两个物品的相似度,每次更新都能够得到一个新的相…...

【算法】数组中的重复数字问题

数组中的重复数据 数组中重复的数字 错误的集合 以第三题,错误的集合为例 对于这样的问题,有很简单的解决方式,先遍历一次数组,用一个哈希表记录每个数字出现的次数,然后遍历一次 [1…N],看看那个元素重…...

数值方法笔记2:解决非线性方程

1. 不动点定理及其条件验证2. 收敛阶、收敛检测与收敛加速2.1 如何估计不动点迭代的收敛阶xk1g(xk){x}_{{k}1}{g}\left({x}_{{k}}\right)xk1​g(xk​)2.2 给定精度的情况下,如何预测不动点迭代需要迭代的次数2.3 如何加快收敛的速度2.4 停止不定点迭代的条件2.5 不动…...

基于SpringBoot的在线文档管理系统

文末获取源码 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏…...

软件体系结构(期末复习)

文章目录软件体系结构软件体系结构概论软件体系结构建模软件体系结构风格统一建模语言基于体系结构的软件开发软件体系结构 软件体系结构概论 软件危机是指计算机软件的开发和维护过程中遇到的一系列严重问题。 软件危机的表现: 软件危机的原因: 软件工程的基本要素&#xf…...

[vue3] pinia的基本使用

使用Pinia npm install piniastore文件里index.js import { createPinia } from piniaconst pinia createPinia()export default piniamain.js导入并引用 import { createApp } from vue import App from ./App.vue import pinia from ./storescreateApp(App).use(pinia).m…...

进程和线程详解

在计算机领域中,进程和线程是非常重要的概念。了解进程和线程是软件开发的基础,也是计算机科学教育中的一部分。本文将介绍进程和线程的概念、区别和应用。 一、什么是进程 在计算机科学中,进程是正在执行的程序实例。一个进程可以由一个或…...

《刀锋》读书笔记

刀锋(毛姆长篇作品精选)毛姆50个笔记点评认为好看的确是完美的结局。《刀锋》里面的人每个人都以自己的方式生活着。艾略特的势利,拉里的自由,伊莎贝尔的现实,苏珊的清醒,索菲的堕落,至于“我”…...

nginx中的ngx_modules

ngx_modules和ngx_module_names是configure脚本生成的,是在objs/ngx_modules.c文件中与其生成的相关的脚本文件相关的变量在options脚本中定义了objs目录的变量NGX_OBJSobjs在init脚本中定义的最终存放ngx_modules的文件 NGX_MODULES_C$NGX_OBJS/ngx_modules.c2. 处…...

设计模式之访问者模式

什么是访问者模式 访问者模式提供了一个作用于某对象结构中的各元素的操作表示,他使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作。     访问者模式主要包含以下几个角色:         Vistor(抽象访问者):为对象结…...

Go项目(三)

文章目录用户微服务表结构查表web 服务跨域问题图形验证码短信用户注册服务中心注册 grpc 服务动态获取端口负载均衡配置中心启动项目小结用户微服务 作为系统的第一个微服务,开发的技术点前面已经了解了一遍,虽有待补充,但急需实战这里主要…...

CTK学习:(一)编译CTK

CTK插件框架简介 CTK Plugin Framework是用于C++的动态组件系统,以OSGi规范为模型。在此框架下,应用程序由不同的组件组成,遵循面向服务的方法。 ctk是一个开源项目,Github 地址:https://github.com/commontk。 源码地址commontk/CTK: A set of common support code for…...

15种NLP数据增强方法总结与对比

数据增强的方法 数据增强(Data Augmentation,简称DA),是指根据现有数据,合成新数据的一类方法。毕竟数据才是真正的效果天花板,有了更多数据后可以提升效果、增强模型泛化能力、提高鲁棒性等。然而由于NLP…...

Python每日一练(20230219)

目录 1. 循环随机取数组直到得出指定数字? 2. 旋转链表 3. 区间和的个数 1. 循环随机取数组直到得出指定数字? 举个例子: 随机数字范围:0~100 每组数字量:6(s1,s2,s3,s4,s5,s6) 第二轮开始随…...

vTESTstudio - VT System CAPL Functions - VT7001

vtsSerialClose - 关闭VT系统通道的串行端口功能:关闭由系统变量命名空间指定的VT系统通道的串行端口。Target:目标通道变量空间名称,例如:VTS::ECUPowerSupply返回值:0:成功重置目标通道最大和最小值-1&am…...

「可信计算」论文初步解读

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…...

CSDN 算法技能树 蓝桥杯-基础 刷题+思考总结

切面条-蓝桥杯-基础-CSDN算法技能树https://edu.csdn.net/skill/algorithm/algorithm-530255df51be437b967cbc4524fe66ea?category188 目录 切面条 大衍数列 门牌制作 方阵转置 微生物增殖 成绩统计 星系炸弹 判断闰年的依据: 特别数的和 *日志统计*(双指…...

信小程序点击按钮绘制定制转发分享图

1. 说明 先上代码片断分享链接: https://developers.weixin.qq.com/s/vl3ws9mA72GG 使用 painter 画图 按钮传递定制化信息 效果如下: 2. 关键代码说明 文件列表如下: {"usingComponents": {"painter": "/com…...

Python自动化测试-使用Pandas来高效处理测试数据

Python自动化测试-使用Pandas来高效处理测试数据 目录:导读 一、思考 二、使用pandas来操作Excel文件 三、使用pandas来操作csv文件 四、总结 一、思考 1.Pandas是什么? 功能极其强大的数据分析库可以高效地操作各种数据集 csv格式的文件Excel文件H…...

南平住房和城乡建设部网站/新品牌推广策划方案

ASP.NET MVC 中 WebGrid 的 6 个重要技巧 https://www.oschina.net/translate/webgrid-in-asp-net-mvc-important-tips 介绍 当一个 Webform 开发者转做 MVC 开发的时候, 他会发现, 许多自己喜欢的东东不见了. 没有代码隐藏模型(behind code), 没有 view state, 没有页面生命周…...

门户网站建设注意事项/国内ip地址 免费

一、背景 公司的项目前段时间发版上线后,测试反馈用户的批量删除功能报错。正常情况下看起来应该是个小BUG,可怪就怪在上个版本正常,且此次发版未涉及用户功能的改动。因为这个看似小BUG我了解到不少未知的东西,在这里和你们分享下…...

如何在服务器上搭建网站/免费网页制作网站

当点击邮件中附件时,Outlook可以对附件进行预览(如下图),如果将“Always warn before previewing this type of file”选项点掉后,每次预览该类型文件时则不再提示,大大方便了预览效果。 可是有时又需要Out…...

网站要多钱/百度网站的网址

zip:压缩:zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b][-ll][-n][-t][-][压缩文件][文件...][-i][-x]解压:unzip[选项] 压缩文件名.zip选项:-x 文件列表解压缩文件,但不包括指定的file文件。-v 查看压缩文件目录,但不解压。…...

环保网站建设多少钱/轻松seo优化排名 快排

SC命令,与“服务控制器”和已安装设备进行通讯。SC.exe 检索和设置有关服务的控制信息。可以使用 SC.exe 来测试和调试服务程序。可以设置存储在注册表中的服务属性,以控制如何在启动时启动服务应用程序,以及如何将其作为后台程序运行。SC.ex…...

哈尔滨自助模板建站/平台接广告在哪里接的

Swift 是一种支持多编程范式和编译式的开源编程语言,苹果于2014年WWDC(苹果开发者大会)发布,用于开发 iOS,OS X 和 watchOS 应用程序。 Swift 结合了 C 和 Objective-C 的优点并且不受 C 兼容性的限制。 Swift 在 Mac OS 和 iOS…...