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. MVVM datatemplate 下button.contextmenu的command 失效解决方案

    <Button CommandParameter="{Binding}" Tag="{Binding RelativeSource={RelativeSource ...

  2. maven 各种用途

    1.maven 管理项目编译 作为项目编译代码管理工具,可以方便的进行编译集成. 2. maven 扩展单元测试 扩展对接junit可以方便进行单元测试 3.maven profiles各种devel ...

  3. CSS的clip-path

    在Web网页中主要是以矩形分布的.而平面媒体则倾向于更多不同的形状.造成这种差异的原因是因为缺少合适的工具去实现我们平面媒体中的内容.这也就造成了很多设计师的创意发挥,就算是有创意,前端实现也将付出巨 ...

  4. MFC 修改 单文档 SDI 窗体 标题

    程序主窗口标题栏的一般形式为: 文档标题—主窗口标题 1.修改文档标题 修改CExamDoc::onNewDocument()函数为: BOOL CExamDoc::OnNewDocument() { ...

  5. Oralce 常用语句

    注:大写代表需要替换掉额 --更新字段名 alter table TABLE rename column COL_OLD to COL_NEW --添加字段名 alter table TABLE ad ...

  6. django 模版语法及使用

    模版的定义 模版是一个文本,用语分离文档的表现形式和内容,通常用于生成html 模版当中能够使用的python语法非常少,for ,if 之类,还有ifequal,结束的时候也要写endifequal ...

  7. BZOJ3979 : [WF2012]infiltration

    答案是$O(\log n)$级别的,故答案不超过6. 当答案是12345时,暴力枚举+压位检验即可,否则直接输出6. 时间复杂度$O(n^5)$. #include<cstdio> #de ...

  8. Java的集合类

    转自:Q.Mr的博客 http://www.cnblogs.com/zrtqsk/p/3472258.html (本人第一次写博客,部分内容有参照李刚老师的疯狂java系列图书,如有遗漏错误,请多指教 ...

  9. [杂谈] There is a Doctor in My Computer.

    (p.s. 附带手写翻译,有错轻喷) Admin: Hi.             (嗨) Doctor: How do you do?  What brings you to see me?     ...

  10. 优化UITableViewCell高度计算的那些事

    优化UITableViewCell高度计算的那些事 我是前言 这篇文章是我和我们团队最近对 UITableViewCell 利用 AutoLayout 自动高度计算和 UITableView 滑动优化 ...