RASPBERRY 端口(GPIO)基本测试
文章目录
- ▌01 树莓派主板GPIO
- 1.GPIO定义
- 2.通过GIPOZERO访问
- 使用GPIO
- ▌02 GPIO基本实验
- 1.亮度控制的LED:PWMLED
- (1)两种亮度变化
- (2)亮度连续变化
- 2.按键:Button
- (1)基本实验
- (2)控制采集图片
▌01 树莓派主板GPIO
使用在 2021春季学期-创新与实践-硬件平台硬件 中的树莓派,通过 通过Windows的远程桌面连接树莓派 来对树莓派进行编程测试。
本文主要针对GPIO进行功能测试。
1.GPIO定义
下图左侧是 树莓派的GPIO端口详解 给出的关于GPIO的多种定义方式。右侧是在 GPIOZERO 给出的GPIO的定义(BCM端口号与J8端口号)
▲ 树莓派GPIO管脚图
访问GPIO的模式可以有两种:
- 按照 树莓派的GPIO端口详解 给出的方式,通过RPi.GPIO模块来访问;
- 通过GPIOZERO来访问。
可以在raspberry命令窗口输入“pinout”获得相关信息:
▲ pinout命令输出
2.通过GIPOZERO访问
在GPIOZERO中对于GPIO端口的命名是通过BraodCom(BCM)管脚进行定义。与PCB的板子J8端口的序号是不同的。
在命名上,存在几种等效形式,比如下面定义LED控制端口是等效的:
>>> led = LED(17)
>>> led = LED("GPIO17")
>>> led = LED("BCM17")
>>> led = LED("BOARD11")
>>> led = LED("WPI0")
>>> led = LED("J8:11")
下面程序测试了GPIO17上连接LED的运行情况。
from gpiozero import LED,Button
from time import sleepled = LED(17)while True:led.on()sleep(0.5)led.off()sleep(0.5)
▲ LED闪烁实验
使用GPIO
使用GPIO控制LED,下面代码显示了相同的功能。但是从使用上来看,它远比gpiozero显得比较麻烦。
from time import sleep
import RPi.GPIO as GPIOGPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(17, GPIO.OUT)while True:GPIO.output(17, GPIO.HIGH)sleep(1)GPIO.output(17, GPIO.LOW)sleep(1)
因此之后对于树莓派的GPIO的实验都是使用RASPZERO库(它是缺省按安装的)来进行实验。
▌02 GPIO基本实验
1.亮度控制的LED:PWMLED
▲ 实验电路
(1)两种亮度变化
实现不同亮度的LED可以使用PWMLED来实现。
- 代码:
from gpiozero import PWMLED
from time import sleepled = PWMLED('GPIO17')
while True:led.value = 0 # offsleep(1)led.value = 0.5 # half bridghtnesssleep(1)led.value = 1 # full brightnesssleep(1)
通过观察可以看到LED可以在关闭,半亮与全亮之间转换。
- 测量GPIO17波形:
▲ GPIO17电压波形
(2)亮度连续变化
from gpiozero import PWMLED
from time import sleep,time_nsled = PWMLED('GPIO17')lightcount = 1
incnum = 1while True:led.value = lightcount/100lightcount += incnumif lightcount >= 100:incnum = -1elif lightcount < 1:incnum = 1
▲ LED亮度变化
上面的效果可以直接调用:
led.pulse()
2.按键:Button
▲ 按钮控制LED电路
(1)基本实验
from gpiozero import PWMLED,Button,LED
from time import sleep,time_nsbutton = Button('GPIO2')
led = LED('GPIO17')while True:if button.is_pressed:led.on()else: led.off()
▲ 按钮控制LED
上面的代码与下面的代码等效:
from gpiozero import PWMLED,Button,LED
from time import sleep,time_ns
from signal import pausebutton = Button('GPIO2')
led = LED('GPIO17')button.when_pressed = led.on
button.when_released = led.offpause()
或者替代的代码:
from gpiozero import PWMLED,Button,LED
from time import sleep,time_ns
from signal import pauseled = LED(17)
button = Button(2)
led.source = buttonpause()
(2)控制采集图片
from gpiozero import Button
from datetime import datetime
from signal import pause
import cv2button = Button(2)
camera = cv2.VideoCapture(0)
camera.open(0)def capture():timestamp = datetime.now().isoformat()print(timestamp)flag,frame = camera.read()cv2.imwrite('/home/pi/zhuoqing/%s.jpg'%timestamp, frame)
# cv2.imshow('Image', frame)button.when_pressed = capturepause()
▲ 使用USB采集图片
▲ 采集到的图片
▲ 每次按动按钮一次,存储一次照片
RASPBERRY 端口(GPIO)基本测试相关推荐
- MSP430 MSP430单片机输入/输出模块 通用I/O端口GPIO LED按键
DO OR DIE MSP430 MSP430单片机输入/输出模块 通用I/O端口GPIO LED&按键 一.原理图 二.I/O端口常用操作C语言描述及常用C语言解析 1.MSP430头文件 ...
- 全志H6方案板香橙派OrangePi 3开发板26pin GPIO口测试
wiringOP 已适配 Orange Pi 3 开发板,使用 wiringOP 可以测试 GPIO.I2C.UART 和 SPI 的功能,下文先介绍26pin GPIO口测试 测试前先安装wirin ...
- centos开放端口以及Telnet测试端口
1 用8080端口进行测试,首先 vi /etc/sysconfig/iptables 开放080端口 防火墙8080端口 : -A INPUT -m state --state NEW -m tcp ...
- python测试udp端口_怎样测试UDP端口
文章概述:怎样测试远程UDP端口,我们一般情况下,应用服务都使用的TCP端口,但是某些情况下,我们也需要开启UDP端口.本文简要描述怎样测试UDP端口是否正常? TCP端口大家都知道,比如80端口,可 ...
- 让Microsoft Web Application Stress Tool 支持非80端口的站点测试
刚在做内网内某个项目的性能测试 项目部署的端口为4000 然后用Microsoft Web Application Stress Tool 测试 发现居然不支持非80端口 找遍整个配置界面没发现por ...
- 网站域名解析端口_环境测试必备,无需注册域名,免费动态IP解析一键解析本地网站...
localtunnel是基于Nodejs 开发的一个工具,开发者同时提供了Go语言版本. 这个工具可以提供给你一个随机生成的二级域名,动态域名解析到你执行这个命令的服务器上,可以将域名解析到指定端口上 ...
- 批量ping指定端口,批量测试IP地址是否通
IP地址批量测试,ping的小记录 测试一个ip通不通,首选用ping命令,格式:ping [ip] 比如我测试 192.168.1.1 这个ip地址,如下: D:\>ping 192.168 ...
- nmap扫描ipv6端口_web渗透测试系列 之 扫描(3)
Nmap-扫描器之王 今天我们来聊聊被称之为扫描器之王的nmap,一般我们在渗透的时候都会这样说,第一步nmap开路.Nmap是一款网络扫描和主机检测的工具.开源免费的.可用于:主机发现.端口发现或枚 ...
- nmap端口扫描与测试
实验目的及要求 1.Nmap安装和扫描安装 2.选择和排除扫描标 3.扫描发现存活的目标主机 4.识别操作系统 5.识别目标主机的服务及版本 6.绕过防火墙扫描端口 实验环境 实验内容与完成情况 一. ...
最新文章
- 防止Excel导入超大带格式文本乱码的方法
- 如何使用cmd进入打印机选项_怎样用命令行方式添加打印机端口? (已解决)
- C七:指向函数的指针 ------ 函数指针(function pointer)
- Python中sorted函数的用法
- sparkstreaming(2)——updatestatebykey
- oracle数据库环境实验报告,《Oracle数据库》实验报告二
- 虚拟化技术发展编年史
- linux使用小命令使用汇集
- @+保留关键字当标识
- 项目总结13:Jav文件压缩-InputStream转化为base64-Base64解码并生成图片
- Python打码API(学习使用)
- Unity 导航网格生成碰撞体
- canvas图片合成模糊变清晰的方法
- 医院信息化建设,产品规划要求​
- Learning the Model Update for Siamese Trackers 论文学习
- Flickr网站架构分析
- Linux Ubuntu NFS 调试,Arm 挂载命令
- JavaWeb图书商城 网上书城
- 解决xcode doesn‘t support iphone’s ios 14.6 (18f72)
- [vuex] unknown action type: jia1