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

简介: 本文是一个关于如何使用Python编程控制树莓派板载LED灯闪烁的实验教程,涵盖了树莓派的基本概念、LED控制文件的读写操作、Python `open()` 和 `sleep()` 函数的使用方法,以及具体的实验步骤和代码实现,目的是让读者通过实践熟悉树莓派操作和Linux文件读写。

实例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 on
    sleep(0.5)
    status_led.write(b'1')    #    Turn off
    sleep(0.5)

2. 运行程序,观察效果

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

sudo python led_blink.py

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

图片3:板载LED灯闪烁

实验总结

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

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

版权信息:教材尚未完善,此处预留版权信息处理方式
mini pupper相关内容可访问:https://github.com/mangdangroboticsclub

目录
相关文章
|
7月前
|
C++
在Maix duino开发板上实现LED闪烁
简单介绍 如果你还不知道如何点亮LED,请看:点亮LED 今天开始上手在开发板上运行程序了,学习点亮LED灯就像是学习编程语言的H e l l o , w o r l d Hello, worldHello,world。学会电亮一盏LED灯之后,我便尝试着自己实现了个LED闪烁。
74 0
|
传感器
Arduino光敏传感器控制LED灯亮度
Arduino光敏传感器控制LED灯亮度
|
4月前
|
机器人 异构计算 SoC
实例2:树莓派GPIO控制外部LED灯闪烁
本文是一个关于使用树莓派GPIO控制外部LED灯闪烁的实验教程,介绍了树莓派的基本概念、GPIO接口的使用、RPi.GPIO库的基本操作,以及通过Python编程实现LED灯周期性闪烁的详细步骤和代码示例。
108 1
实例2:树莓派GPIO控制外部LED灯闪烁
|
4月前
|
传感器 机器人 芯片
实例4:树莓派GPIO控制舵机转动
本文是关于使用树莓派GPIO控制舵机转动的实验教程,涵盖了舵机的基本概念、结构、工作原理以及PWM信号控制方法。实验目的是通过Python编程,实现树莓派控制舵机在0°~180°范围内周期性转动。文中提供了详细的实验步骤、代码示例以及舵机调零和校准的方法。
225 1
实例4:树莓派GPIO控制舵机转动
|
5月前
|
异构计算
FPGA入门(5):控制LED灯
FPGA入门(5):控制LED灯
57 0
|
7月前
|
编译器 C语言 C++
【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
|
C语言
单片机控制LED灯
单片机控制LED灯
277 0
LabVIEW控制Arduino LED灯闪烁(基础篇—2)
利用LIAT中的数字I/O函数库,通过LabVIEW控制Arduino Uno控制板上D13管脚上LED灯,实现等间隔闪烁。
|
C语言
MSP430F5529学习笔记(5)——按键切换灯的亮灭
MSP430F5529学习笔记(5)——按键切换灯的亮灭
120 0
|
编译器
【51单片机】按键操作(单个灯闪烁&&流水灯)
按键操作(单个灯闪烁&&流水灯)
568 0