https://www.raspberrypi.org/documentation/usage/gpio/README.md

2016/6/25

GPIO: 树莓派A和B

##介绍GPIO和在树莓派上进行物理编程

树莓派的强大特性就是那一排在板子周围的GPIO(一般目的的输入输出)插针,就在黄色的视频输出插孔的旁边。

GPIO pins

这些pin是pi和外界世界的物理接口。最简单,你可以把他们当作可以打开和关闭的开关(输入)或者树莓派可以打开或者关闭(输出)。26个插针的17个是GPIO插针,其他的是电源或者接地插针。

## 它们是用来做什么的?我们可以用它们来做什么?

你可以给pin编程,和真实的世界有趣地互动。输入不一定必须来自真的开关;比如:它可以是一个感应器或者其他电脑或设备的一个信号。输出也可以做很多事情,通过打开一个led来给其他的设备传递信号和数据。如果树莓派在网络上的话,你可以在任何地方控制接在它上面的设备,这些设备可以传回数据。通过互联网连接和控制物理设备是很强大的让人兴奋的事情,树莓派正是由这个想法而来。在我们的博客上有很多很棒的例子。

注意:不是说真的在任何地方,当然你需要连接网络的一些东西,连上网络的电脑和电。所以不要给我们因为这一点来给我们写信:)

## GPIO pins是如何工作的?

## 输出

注意:如果你依照下面的教程,误以为GPIO是安全而有趣的。随意地插上线或者电源在你的树莓派上,你可能会弄坏它。如果你插上需要使用很多电量的设备也可能会出现一些问题,led还是亮的,马达不转了。如果你为此担心的话,你可能需要考虑使用一个breakout电路板,比如pibrella知道你有信心完全直接使用GPIO。

先不考虑树莓派,最简单的电路就是用一个电池连接灯和一个开关(这里的电阻用来保护led)

当我们使用GPIO作为一个输出的时候,树莓派替换了上图中的开关和电源。每一个pin都可以打开或关闭,或者在电脑命令里变高或变低。当pin处于高的状态是3.3v,低就是没有。

线面是使用树莓派实现的同样的电路,led直接连接上了GPIO的pin(它可以输出+3v3)和一个接地的pin(0v就相当于电池的负极):

下面的步骤就是写一个程序高数pin升高或者降低。这里是个用python写的例子(看第二步),这里是如何在scratch里做到。

##输入

GPIO的输出很容易;要么开或关,高或低,3v3或者0v。输入就有点复杂了,因为要看具体数码设备的工作了。虽然可以只接一个按钮在输入pin和接地pin上,树莓派会混淆判断按钮是否开或者关。它也许能正常工作,也许不能。这有点像宇宙中漂浮的飞船,没有参照物无法知道它是否上升或者下降,甚至不知道什么是上升或者下降。

这就是为什么你会看见像“pull up”或者“pull down”的词语在树莓派的GPIO的教程里。这是给输入pin一个参照以便于知道什么时候接受一个输入。

如果你想要现在使用GPIO作为输入,可以看一下burping jelly baby 和 quick reaction game的教程,用python实现,或者一个reaction 游戏用 Scratch实现。

##术语表

GPIO

通用型输入输出; 在树莓派上就是特指pin和你能用它们做的事。之所以这么叫是因为你可能用它们达成很多目的。大多数可以用来作为输入或者输出,具体看你自己的程序。

LED

发光二级管,一个小的低耗能的光源,广泛应用在电子产品中。作为介绍树莓派上的现实计算切入点。

现实计算(physical computing)

计算包括所有可以直接连接电脑的实体,包裹标准输入输出设备比如键盘和显示器。think按钮,光,机器人,闹钟,感应器,家庭机器人, 被叫做Babbage的泰迪熊,或者其他的东西。我们喜欢现实计算是因为这很有趣, 这是个很强大的教学和学习的工具,激发创造力, 解决问题和合作研究。不只是显示器的计算吸引所有年龄段孩子,你自己也可以做出很酷的东西。

###附录

当给GPIO编程的时候,有两种方式来指出它们:GPIO的编码和现实中的编码

GPIO的编码

计算机用这种方式来认识GPIO pin。具体的数字对人来说没什么用,他们会 jump about all over the place,所以不方便记住他们。你可以打印一个参考册子或者一个引用电路板插在上面。

现实编码

另外指出pin的方法就是通过简单的从左上(靠近sd卡那边)作为第一个开始数, across and down。这是“现实编码”大概看起来是这样:


我该使用那种方式?

初学者和小孩可能会觉得现实编码会更简单 - 只是简单的数一下。你仍然需要一个图来知道是那些GPIO pin, 那一个是接地的那一个是电源。

大多数情况我们推荐使用GPIO编码,它更使用,大多数的资料上也用这种方式。不过随便你吧 - 只要在一个程序里使用同一个方式就可以了。注意pin编码根据你具体使用的编程语言:Scratch是 GPIO,在python里可以自己选择。

树莓派文档翻译 - 使用 - GPIO: 树莓派A和B的更多相关文章

  1. 树莓派Zero W GPIO控制

    作者:陈拓 chentuo@ms.xab.ac.cn 2018.06.09/2018.07.05 0.  概述 本文介绍树莓派 Zero W的GPIO控制,并用LED看效果. 0.1 树莓派GPIO编 ...

  2. 树莓派 Learning 003 --- GPIO 001 --- 点亮LED

    树莓派 Learning 003 - GPIO 001 - 点亮LED 我的树莓派型号:Raspberry Pi 2 Model B V1.1 装机系统:NOOBS v1.9.2 树莓派 Learni ...

  3. 树莓派 Learning 003 --- GPIO 000 --- GPIO引脚图

    树莓派 Learning 003 - GPIO 000 - GPIO引脚图 我的树莓派型号:Raspberry Pi 2 Model B V1.1 装机系统:NOOBS v1.9.2 Raspberr ...

  4. 树莓派4硬件---GPIO篇

    树莓派拿到手已经两个多月了,其实从最开始的期待安装好ROS,到前几天完成了ROS的源码编译安装,对linux的调教也时花了些时间的.现在终于想起来,树莓派上还有GPIO,还没有用过了.说干就干,开始. ...

  5. 【.NET 与树莓派】使用 GPIO 库

    上回老周在说准备工作的时候,提到过树莓派用金属盒散热的事情.有朋友会说,加了金属盒子接线不方便,就算用了"T"形板,毕竟是把导线延长了的.其实扩展板就是把原有的引脚引出(类似于延长 ...

  6. [原创]树莓派CM4配置GPIO复用为i2c

    1.简介 项目中需要控制各种外设的电源,正常应该是通过GPIO进行控制,但是树莓派CM4的GPIO管脚有限,因此需要使用i2c扩展IO 查阅CM4-datesheet发现GPIO22和GPIO23可以 ...

  7. 7、树莓派编程;gpio编程;led闪烁

    本博文仅作本人操作过程的记录,留作备忘.自强不息 QQ12226981 1.树莓派接口对照,一定要找到对应的引脚,不要接错了.我画上箭头. 2.安装 下载地址,https://git.drogon.n ...

  8. 树莓派学习笔记——GPIO功能学习

    0.前言     树莓派现在越来越火,网上树莓派的资料也越来越多.树莓派的学习可以分为linux系统学习和linux驱动学习,利用树莓派制作LED流水灯应该算是驱动学习吧.树莓派来自国外,国外嵌入式开 ...

  9. 树莓派与 Python —— GPIO

    首先来直观地认识树莓派提供的 40 个引脚(GPIO,general purpose i/o,接收外界输入,并向外界提供运算处理后的输出): 1. 安装 从远程库(repositories)中下载安装 ...

随机推荐

  1. RPG的错排

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...

  2. 8VC Venture Cup 2016 - Final Round (Div. 2 Edition)

    暴力 A - Orchestra import java.io.*; import java.util.*; public class Main { public static void main(S ...

  3. STL UVA 11991 Easy Problem from Rujia Liu?

    题目传送门 题意:训练指南P187 分析:用vector存id下标,可以用map,也可以离散化用数组存(发现不用离散化也可以) map #include <bits/stdc++.h> u ...

  4. 实战Hadoop中遇到的几个类、接口说明

    1. Configuration :public 类型接口,这个接口包含的多数方法是进行与数据属性<key,value>有关的操作. 几个方法: 1)addProperty(String ...

  5. ural 1342. Enterprise

    1342. Enterprise Time limit: 5.0 secondMemory limit: 64 MB To bind a broom it’s a hard work. As ther ...

  6. iOS学习16之OC集合遍历和数组排序

    1.集合遍历 1> 遍历 集合(Collection):OC中提供的容器类:数组,字典,集合. 遍历:对集合中元素依次取出的过称叫做遍历. 三种方式:① for循环遍历: ② NSEnumera ...

  7. 【转】CentOS6.3安装Broadcom无线网卡驱动

    转自: http://blog.csdn.net/jimanyu/article/details/9697833 下面是具体的步骤 一:确定无线网卡的型号,驱动下载 第一步要确定机子的无线网卡型号是什 ...

  8. POJO(PO)与javaBean的比较、以及DTO的说明

    一.POJO(Plain Ordinary Java Object)简单的Java对象,其中有一些属性及其getter setter方法的类,没有业务逻辑(重点理解一下"没有业务逻辑&quo ...

  9. topcoder SRM 625 DIV2 IncrementingSequence

    由于题目数据量比较小,故可以开辟一个数组存储每个index出现的次数 然后遍历即可 string canItBeDone(int k, vector<int> A){ vector< ...

  10. 洛谷 P1379 八数码难题 Label:判重&&bfs

    特别声明:紫书上抄来的代码,详见P198 题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给 ...