文章目录

  • 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)基本测试相关推荐

  1. MSP430 MSP430单片机输入/输出模块 通用I/O端口GPIO LED按键

     DO OR DIE MSP430 MSP430单片机输入/输出模块 通用I/O端口GPIO LED&按键 一.原理图 二.I/O端口常用操作C语言描述及常用C语言解析 1.MSP430头文件 ...

  2. 全志H6方案板香橙派OrangePi 3开发板26pin GPIO口测试

    wiringOP 已适配 Orange Pi 3 开发板,使用 wiringOP 可以测试 GPIO.I2C.UART 和 SPI 的功能,下文先介绍26pin GPIO口测试 测试前先安装wirin ...

  3. centos开放端口以及Telnet测试端口

    1 用8080端口进行测试,首先 vi /etc/sysconfig/iptables 开放080端口 防火墙8080端口 : -A INPUT -m state --state NEW -m tcp ...

  4. python测试udp端口_怎样测试UDP端口

    文章概述:怎样测试远程UDP端口,我们一般情况下,应用服务都使用的TCP端口,但是某些情况下,我们也需要开启UDP端口.本文简要描述怎样测试UDP端口是否正常? TCP端口大家都知道,比如80端口,可 ...

  5. 让Microsoft Web Application Stress Tool 支持非80端口的站点测试

    刚在做内网内某个项目的性能测试 项目部署的端口为4000 然后用Microsoft Web Application Stress Tool 测试 发现居然不支持非80端口 找遍整个配置界面没发现por ...

  6. 网站域名解析端口_环境测试必备,无需注册域名,免费动态IP解析一键解析本地网站...

    localtunnel是基于Nodejs 开发的一个工具,开发者同时提供了Go语言版本. 这个工具可以提供给你一个随机生成的二级域名,动态域名解析到你执行这个命令的服务器上,可以将域名解析到指定端口上 ...

  7. 批量ping指定端口,批量测试IP地址是否通

    IP地址批量测试,ping的小记录 测试一个ip通不通,首选用ping命令,格式:ping [ip] 比如我测试 192.168.1.1  这个ip地址,如下: D:\>ping 192.168 ...

  8. nmap扫描ipv6端口_web渗透测试系列 之 扫描(3)

    Nmap-扫描器之王 今天我们来聊聊被称之为扫描器之王的nmap,一般我们在渗透的时候都会这样说,第一步nmap开路.Nmap是一款网络扫描和主机检测的工具.开源免费的.可用于:主机发现.端口发现或枚 ...

  9. nmap端口扫描与测试

    实验目的及要求 1.Nmap安装和扫描安装 2.选择和排除扫描标 3.扫描发现存活的目标主机 4.识别操作系统 5.识别目标主机的服务及版本 6.绕过防火墙扫描端口 实验环境 实验内容与完成情况 一. ...

最新文章

  1. 防止Excel导入超大带格式文本乱码的方法
  2. 如何使用cmd进入打印机选项_怎样用命令行方式添加打印机端口? (已解决)
  3. C七:指向函数的指针 ------ 函数指针(function pointer)
  4. Python中sorted函数的用法
  5. sparkstreaming(2)——updatestatebykey
  6. oracle数据库环境实验报告,《Oracle数据库》实验报告二
  7. 虚拟化技术发展编年史
  8. linux使用小命令使用汇集
  9. @+保留关键字当标识
  10. 项目总结13:Jav文件压缩-InputStream转化为base64-Base64解码并生成图片
  11. Python打码API(学习使用)
  12. Unity 导航网格生成碰撞体
  13. canvas图片合成模糊变清晰的方法
  14. 医院信息化建设,产品规划要求​
  15. Learning the Model Update for Siamese Trackers 论文学习
  16. Flickr网站架构分析
  17. Linux Ubuntu NFS 调试,Arm 挂载命令
  18. JavaWeb图书商城 网上书城
  19. 解决xcode doesn‘t support iphone’s ios 14.6 (18f72)
  20. [vuex] unknown action type: jia1

热门文章

  1. iOS 中 OC项目使用swift第三方工具(OC、swift 混合)
  2. Ubuntu 16.04下截图工具Shutter
  3. 实战2--应用EL表达式显示投票结果
  4. 【原创翻译】文件与文件夹
  5. yii框架学习(五)get、post请求如何接收请求参数
  6. mac svn 返回svn upgrade等出错
  7. Git超实用总结,再也不怕记忆力不好了
  8. Spring 中的Scheduler
  9. React Redux 的一些基本知识点
  10. 输入一组整数,0结束输入,之后输出输入的最大的和最小的整数.【思路】