昨天的帖子中,我们已经介绍了如何安装香蕉派版本的RPI.GPIO,今天我们继续来看看如何使用RPI.GPIO点亮LED。
在点亮LED之前,我们先来看看如何接线,在接线之前,我们需要知道哪跟针可以用来做输出,比如如果我错误的选用电源针或者接地的针,那是万万不可以做为输出的。
M3 GPIO
还好香蕉派官网的页面里提供了香蕉派M3的GPIO的图示:
然而新问题来了,这个图示是40针没错,香蕉派M3上也是40针没错,但是是从哪个方向数起呢?
这时需要我常用的一副M3实物图立功啦,看到下图左上部分天线接口旁边的一个小三角号图标吗?哪个指向的针脚就是GPIO图示中的1。
LED连接
知道了怎么数之后,上边GPIO示意图中的绿色针脚我们就可以随便使用了。当然也不是其它颜色的针脚不可以作为输出,但是一般它们可能会有一些特定的用途比如用作UART或者SPI之类的,另外就是电源和地是不用用做输入输出的。
为了方便我们选择11针作为输出,之所以选择这个,是因为它旁边的9号针就是地,方便接线。我们将一只LED与一只220欧姆的电阻串联(之所以串联电阻是避免电流过大烧毁LED),并接到11号针以及9号针之间,注意LED的正极(长的脚)接11号针。
代码
#!/usr/bin/env python`
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
while True:
GPIO.output(11, GPIO.HIGH)
time.sleep(1)
GPIO.output(11, GPIO.LOW)
time.sleep(1)
试着执行一下:
BPI: gpioLayout(25)
BPI: name[bpi-m3] gpioLayout(25)
enter to sunxi_setup
Traceback (most recent call last):
File "./test2.py", line 7, in
GPIO.setup(11, GPIO.OUT)
RuntimeError: No access to /dev/mem. Try running as root!
啥,竟然要root权限?好吧,或许需要root权限才更合理,否则随便哪个用户都可以控制岂不是乱套了。
sudo 与virtualenv的问题
因为我使用的是virtualenv,所以直接sudo python xxx的方式会调用系统python,导致找不到香蕉派版本的RPI.GPIO。
所以需要这样执行sudo指令:
sudo venv/bin/python test2.py
执行后输出类似如下内容:
也就是说会在11针交替(间隔一秒)输出高低电平,这时再去看我们的LED,是不是一闪一闪的啦?
相关链接
相关资料
- https://www.banana-pi.org.cn/m3.html
- https://github.com/BPI-SINOVOIP/RPi.GPIO
- http://wiki.banana-pi.org/Getting_Started_with_M3#Using_RPi.GPIO
- http://wiki.banana-pi.org/Banana_Pi_BPI-M3#GPIO_PIN_define
- https://sourceforge.net/projects/raspberry-gpio-python/
- https://sourceforge.net/p/raspberry-gpio-python/wiki/BasicUsage/
- https://github.com/BPI-SINOVOIP/BPI-WiringPi2
https://steemit.com/~witnesses type in
oflyhigh
and click VOTE
Vote @oflyhigh via Steemconnect
Thank you!
恭喜你!您的这篇文章入选 @justyy 今日 (2019-06-23) 榜单 【优秀的文章】, 回复本条评论24小时内领赏,点赞本评论将支持 @dailychina 并增加将来您的奖赏。
@justyy 是CN区的见证人,请支持他,给他投票,感谢!
Congratulations! This post has been selected by @justyy as today's (2019-06-23) 【Good Posts】, Steem On! Reply to this message in 24 hours to get rewards. Upvote this comment to support the @dailychina and increase your future rewards! ^_^
SteemIt 工具、API接口、机器人和教程
SteemIt Tools, Bots, APIs and Tutorial
*Join cnsteem Discord channel: *https://discord.gg/SnNaaYS
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
thx
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Thank you so much for participating in the Partiko Delegation Plan Round 1! We really appreciate your support! As part of the delegation benefits, we just gave you a 3.00% upvote! Together, let’s change the world!
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit