(10)用树莓派B+的GPIO接口控制发光二极管闪烁

从本篇开始,将逐步学习和分享树莓派GPIO相关操作,由于本人也是这方面的小白,关于接口、跳线、面包板、电流电压之类的叙述,可能有不准确的地方,还请大家仅将本系列文章作为入门读物。

本文需要的一些元件:母对公杜邦线N条,面包板1块,暂不需要面包板外接电源,发光二极管(电压2V-3.3V),电阻约400欧1个。

必须要了解的知识:根据树莓派官方文档的描述(见https://www.raspberrypi.org/documentation/hardware/raspberrypi/power/README.md),树莓派本身输入电压5V,电流取决于你另外还承载了哪些外围元件,推荐1.2A的电源输入(输入额定2A),能够提供比较充足的电流。B版的电流是700-1000mA,A版的是500mA没有外围设备。树莓派本身可以承载的最大电流是1A,如果你连接了一个USB设备并且电流的总需求超过了1A,你就只能通过一个带供电的USB
hub来连接你的USB设备了,USB设备都定义了供电需求,基本单位是100mA从100mA到500mA不等,树莓派的每个USB接口的设计负荷为100mA,适用于供电需求低的鼠标和键盘设备,Wifi适配器、USB硬盘等应该连接到外部供电的hub上,给树莓派插上一个500mA的设备也是有可能工作的,但是不能保证它的可靠运行。GPIO引脚可以安全引出的总电流是50mA,分布在所有的针脚上,一个单独的GPIO针脚只能安全地输出16mA。HDMI接口使用50mA,摄像头模块需要250mA,键盘和鼠标需要100mA到1000mA不等。所以,为了安全起见,最好先画好电路图,计算好需要串联多大的电阻,万万不要超过GPIO的额定安全电流值。

常见外围设备的电气特性:

  • 2路光耦隔离继电器,控制端输入电压5V,最大电流10A
  • LED发光二极管,在某宝买的黄色参考电压2~2.2V,其他颜色参考电压3~3.3V(一般3V才击穿发光),反向阻值接近无穷大,正向导通的阻值约几百欧,额定电流20mA,长脚一端为正
  • 常用电阻,10Ω、22Ω、47Ω、100Ω、220Ω、470Ω、680Ω、1KΩ、2.2KΩ、4.7KΩ、6.8KΩ、10KΩ、22KΩ、47KΩ、68KΩ、100KΩ、220KΩ、470KΩ、680KΩ、1MΩ
  • HC-sr04 超声波测距模块,输入电压5V,静态电流<2mA,探测距离2cm~450cm,精度0.3cm
  • 光敏电阻,工作电压3.3V-5V,电流>15mA
  • 有源蜂鸣器,工作电压3.5V-5.5V,电流<25mA
  • DHT11温度湿度模块,工作电压3.3V/5V,湿度20-90%,温度0-50摄氏度
  • 四驱车马达,额定电压6V,额定电流约200mA

如果由不准确的地方,还请大家指正,另外如果有补充的,欢迎回复。

本人目前测试的,在USB同时接入USB EDUP无线网卡和USB转以太网卡,可以同时正常工作;GPIO 3.3V接470欧电阻串联一个二极管,可以正常发光。

好吧,引子扯得太多了。。但毕竟是GPIO开篇,有必要交代清楚一些必须要知道的电气特性,否则轻者元件不能正常工作,重者导致元件损坏。。另外,有能力的同学,可以一次性多买几个元件,例如每样3个,以防不测。

下面进入正题,使用树莓派B+板的GPIO点亮二极管,用到的是3.3V(第1针脚)和一个GPIO(第37针脚,wPi库中编号是25)。

电路图如下:

树莓派第1针脚3.3V引出跳线接到面包板正极,然后从正极接一个470欧电阻在面包板上半区,从正到负接发光二极管连通上下半区,回路导线从下半区引到负极,最后一根跳线从负极接回树莓派的第37引脚GPIO.25(有的图GPIO序号不一样)。

其实我们可以不用控制GPIO,直接正极接3.3V,负极接第39针脚0V,看LED是不是被点亮了,从而验证我们电路的正确性,然后再改成负极接GPIO.25。

有关面包板的叙述是按照我自己的理解来的,可能用词不准。面包板通过横线分成4大块:最上一块和最下一块各有2行点阵,是接电源的部分,按照正负极连接输入电源,这一部分的每一行是导通的,也就是同一行插在哪个点都一样;中间两块比较大的区域,我叫他线路部分,用于DIY自己设计好的线路,分上半区和下半区,这两个区域中间是隔离的不导通,每个区域内,点阵是按列纵向导通的,也就是说如果一个元件的两端插在一个区域同一列的两点上是被短路的,因此我们的电阻R和二极管LED都是跨区域连接,R跨了电源区和线路上半区,LED跨了线路上半区和下半区。不用管这些东西到底怎么叫,理解就好!

接下来,就可以在树莓派端编写Python或C代码来控制这个电路了。

以python代码为例:

import RPi.GPIO as GPIO

import time

#基于板子上面引脚编号1-40

GPIO.setmode(GPIO.BOARD)

#GPIO引脚输出模式

GPIO.setup(37, GPIO.OUT)

while  True:

GPIO.output(37, GPIO.LOW) #低电平,另一端是3.3V高电平,所以点亮LED

time.sleep(1)

GPIO.output(37, GPIO.HIGH) #两端都是高电平,二极管熄灭

time.sleep(1)

使用python 的好处是我们不需要反复编译、修改、编译、运行。直接在python命令行,可以一步一步输入代码执行,清楚地控制GPIO.LOW和GPIO.HIGH。

另外,采用wiringPi库的相同程序的代码如下:

include <wiringPi.h>

int main()

{

//wPi模式编号引脚

wiringPiSetup();

pinMode(25, OUTPUT);

for(;;)

{

digitalWrite(25, LOW);

delay(1000);

digitalWrite(25, HIGH);

delay(1000);

}

}

编译:

gcc -Wall -o test test.c -lwiringPi

值得注意的是,还在操作某个GPIO的过程中终端程序,会导致该引脚处于被使用的状态。另一个程序使用该引脚时会报出警告,可以在python中测试如下:

最后,贴上我自己的实物图吧:

        

按照我这个图的方位(左右两排针脚),3.3V和GPIO.25都是在右排,3.3V在右排最下端(0号),GPIO.25是在右排从上到下第二个。

时间: 2024-10-12 18:57:26

(10)用树莓派B+的GPIO接口控制发光二极管闪烁的相关文章

Win10 IoT C#开发 3 - GPIO Pin 控制发光二极管

原文:Win10 IoT C#开发 3 - GPIO Pin 控制发光二极管 Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. 上一篇文章我们详细介绍了Raspberry安装Win 10 IoT Core系统及搭建开发环境的过程,如果还不熟悉安装搭建过程可以参考  Win10 IoT C#开发 1 - Raspberry安装IoT系统及搭建开发环境(htt

Win10 IoT C#开发 2 - GPIO Pin 控制发光二极管

Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,与以往的Windows版本不同,是为物联网设备专门设计的,硬件也不仅仅限于x86架构,同时可以在ARM架构上运行. 上一篇文章我们详细介绍了Raspberry安装Win 10 IoT Core系统及搭建开发环境的过程,如果还不熟悉安装搭建过程可以参考  Win10 IoT C#开发 1 - Raspberry安装IoT系统及搭建开发环境(http://www.cnblogs.com/cloudtech/p/5562120

树莓派GPIO输入输出--控制LED

GPIO引脚有两种模式BOARD和BCM. 1.GPIO输出控制LED 效果图: 代码: (1)使用BOARD模式,GPIO.setmode(GPIO.BOARD).35号引脚在BCM下是GPIO19 (2)将引脚35设置为输出模式,GPIO.setup(35,GPIO.OUT) (3)对GPIO35引脚输出高电平,也可以为GPIO.HIGH 2.GPIO接口获取输入信号 效果图: 电路图 当开关断开时,GPIO23是高点平获取到的输入信号是Ture.当开关按下时GPIO23为接地,获取到的信号

树莓派上的GPIO字符驱动程序

前言 主要是在嵌入式Linux(树莓派)中如何使用已有的函数库编写应用程序操纵GPIO,如何编写字符设备驱动程序在内核程序中使用GPIO 硬件连接图 虚拟文件系统操作GPIO Linux可以通过访问sys/class/gpio下的一些文件,通过对这些文件的读写来实现对于GPIO的访问. 树莓派下面的可用的GPIO如下图所示,需要注意树莓派一代和二代的区别 首先用一个小灯来测试下操作.首先向export中写入18,表示启用18号gpio端口,执行之后,可以看到该目录下多出了一个gpio18的目录.

[ZigBee] 3、ZigBee基础实验——GPIO输出控制实验-控制Led亮灭

1.CC2530的IO口概述 CC2530芯片有21 个数字输入/输出引脚,可以配置为通用数字I/O 或外设I/O 信号,配置为连接到ADC.定时器或USART外设.这些I/O 口的用途可以通过一系列寄存器配置,由用户软件加以实现. I/O 端口具备如下重要特性:    ?? 21 个数字I/O 引脚 ?? 可以配置为通用I/O 或外部设备I/O ?? 输入口具备上拉或下拉能力 ?? 具有外部中断能力. 21 个I/O 引脚都可以用作于外部中断源输入口.因此如果需要外部设备可以产生中断.外部中断

(14)树莓派B+使用L298N驱动控制四驱车并实现一个简单的web控制端

在系列文章第12篇中提到了L298N,它是H桥双路直流电机驱动,可以使双路直流电机实现正转或者反转,并且通过ENDA和ENDB输入PWM信号,还可以实现加减速.本文用2块L298N驱动板成功驱动了4个直流电机,实现了4轮同时向前.向后以及前向左转.前向右转甚至是后向左转和后向右转的功能,最后通过python的BaseHTTPServer模块(python3中是http.server模块)实现了一个控制小车的HTTP接口,另外用lighttpd启动一个网页,通过网页中的ajax调用控制小车的HTT

(14)树莓派B+使用L298N驱动控制四驱车

在系列文章第12篇中提到了L298N,它是H桥双路直流电机驱动,可以使双路直流电机实现正转或者反转,并且通过ENDA和ENDB输入PWM信号,还可以实现加减速.本文用2块L298N驱动板成功驱动了4个直流电机,实现了4轮同时向前.向后以及前向左转.前向右转甚至是后向左转和后向右转的功能,最后通过python的BaseHTTPServer模块(python3中是http.server模块)实现了一个控制小车的HTTP接口,另外用lighttpd启动一个网页,通过网页中的ajax调用控制小车的HTT

树莓派4硬件---GPIO篇

树莓派拿到手已经两个多月了,其实从最开始的期待安装好ROS,到前几天完成了ROS的源码编译安装,对linux的调教也时花了些时间的.现在终于想起来,树莓派上还有GPIO,还没有用过了.说干就干,开始.以下操作都是在树莓派已经安装好了官方的系统,也已经升级到了最新版了.总共有40个GPIO,实际管脚图为: 在计算机中,通常用高.低两个电压来表示二进制的1和0.树莓派也是如此.GPIO用相同的方式来表示数据.每个GPIO的PIN都能处于输入或输出状态.当处于输出状态时,系统可以把1或0传给该PIN.

BeagleBone Black板第七课:GPIO编程控制

BBB板第七课:GPIO编程控制 在一上课我们通过IO函数做了简单的GPIO端口输出高低电平输出,实现对一个LED指示灯的点亮和关闭控制,本节将通过完整的C++程序,实现第四课Shell脚本的全部功能,实现两个LED指示灯的交替闪亮. 直接通过进入功能程序 1.实现echo 44 > export 打开端口功能 上一课简单测试中,通过手工在BBB板终端模式下打开gpio44端口可通过以下程序实现: #include <stdio.h> #define GPIO_DIR "/sy