zoukankan      html  css  js  c++  java
  • Beaglebone Black–GPIO 高低电平控制 LED 灯

    上一篇,运用 Linux 的 sysfs,控制本机上的 LED 灯,usr0 至 usr3,这次用 GPIO 控制外部的电路,点亮 LED 灯。

    这次的全部材料:

    • BBB 一台
    • 购买 BBB 自带的 USB 数据线
    • 面包板一块
    • 470Ω 三枚(至少一枚)
    • 白、红、黄、绿 LED 灯各一个(至少一个)
    • 公对公杜邦线 4 条(至少两条)
    • 面包板供电模块 3.3v (可选)
    • 纸卡一张(可选)
    • 万用表(可选)

    点亮白灯

    首先,据书上以及其他师兄建议,用面包板测试成功才拿 BBB 开刀。这次也不是什么复杂电路。但完全没有接触过面板包的话,试试吧:

    面包板装上电源模块,注意正负极,红线正极,搞反了面包板红色和蓝色反过来的话,就考验你记忆力了。

    供电模块如果能调电压,就调到 3.3V,然后接线。如果不知道面包板线路方向的话,这样的:

    IMG_20160122_230443 右图红线大概表示,板内线路相连的情况,图中两侧正负极(板上原有的红线和蓝线)是纵向全部相连,板中间分开左右两组,两组互不相连,但每组每行内五个孔相连。

    我不记得电阻上面的色环代表多少的,而且淘宝货,用万用表检查一下:

    DSC_0008(1)

    不会用万用表的话请自行百度。

    LED 灯长脚是正极,两条杜邦线分别接正负极,中间是 470欧电阻,小心元件的金属脚不要互相碰到即可。连接后如下图:

    DSC_0012

    上电,亮了,这不应该会搞错吧:

    DSC_0020

    比较暗请无视。用 470欧 是因为,欧姆定律 + 官方说明, BBB GPIO 顶多给 5mA 电流,拉多了发生了什么事的话,后果自负。

    几个 mA 我还以为不亮了…。继续,插进去 BBB。

    首先要知道引脚功能:

    hwio-beaglebone-ports

    个引脚详细说明,默认功能,系统是否已占用等等,P8 高清版请看这里P9 高清版请看这里。打不开请自行翻墙。

    image

    image

    最左侧 PIN 是 pin 名,把 BBB 摆正V5电源和网线插头在上方的话,右排就是 P8,左排 P9,每排左上角是一号脚,右上角是二号脚,如此类推。详细说明请自己看说明书。

    红色底色代表默认被占用。比如 HDMI, eMMC。它是通过 cape manager 来管理,调用引脚的。题外话,我见过有人为了这个把 cape manager 卸载掉… 。开机档可以禁用该 cape 的,到我需要时候再试试看吧。

    上图 mode 0 至 7 可以调的,后话。现在只需要关心是有否被占用,实际是哪个引脚要插线,还有它的 GPIO 号是多少(第四栏)。

    现在把面包板的电源模块拔掉,BBB 关机情况下,把原来的负极接 BBB 的 P9_1 GND,正极接 P9_23 :

    DSC_0021

    BBB 开机,然后进去文件夹 /etc/class/gpio/,里面有个 export 和 unexport 文件:

    image

    看之前的图查到,P9_23 的 gpio 号是 49,需要用的话,echo 49 > export。用完不要了就 echo 49 > unexport。首先我们 export 一下:

    image

    目录多了一个 link,cd 进去看看,能做的都在里面:

    image

    要点灯,我们现在只需要关心 direction (方向,输入还是输出),和 value (1,高电平 ,0,低电平)。可以 cat 一下看看当前值:

    image

    首先把 direction 改为 out,做法:echo out > direction。然后把输出值改为高电平,echo 1 > value。

    image

    DSC_0009

    如无意外,LED 是亮着的了。关掉它的话,改为低电平,echo 0 > value。就是说,要它闪动,就 0 和 1 之间循环赋值。

    讲完了,只不过是这样而已。还有几个 LED 还没用呢?

    点亮三色灯

    microMsg.1453472880862

    全部负极面包板上减号、蓝线那列,尽头接 BBB 的 GND。正极接 BBB 的 GPIO,我用了 P8_12、P8_11、P8_16, GPIO 号为 44、45、46,即可。各个语言都差不多,以下是 Python 代码:

    import time
    import os

    class TrafficLight:
        def __init__(self,color):
            self.color = color
            if self.color == "green":
                self.gpio_no = 44
            if self.color == "yellow":
                self.gpio_no = 45
            if self.color == "red":
                self.gpio_no = 46
            os.system("echo %s > /sys/class/gpio/export" % self.gpio_no)
            self.path = "/sys/class/gpio/gpio%s/" % self.gpio_no
            os.system("echo out > %sdirection" % self.path)
            os.system("echo 0 > %svalue" % self.path)
            self.state = "off"
        def On(self):
            if self.state != "on":
                os.system("echo 1 > %svalue" % self.path)
                self.state = "on"
        def Off(self):
            if self.state != "off":
                os.system("echo 0 > %svalue" % self.path)
                self.state = "off"
    TrafficLights = [TrafficLight("green"), TrafficLight("yellow"), TrafficLight("red")]
    while True:
        TrafficLights[0].On()
        time.sleep(3)
        TrafficLights[0].Off()
        TrafficLights[1].On()
        time.sleep(1)
        TrafficLights[1].Off()
        time.sleep(0.5)
        TrafficLights[1].On()
        time.sleep(0.5)
        TrafficLights[1].Off()
        time.sleep(0.5)
        TrafficLights[1].On()
        time.sleep(1)
        TrafficLights[2].On()
        TrafficLights[1].Off()
        time.sleep(4)
        TrafficLights[2].Off()

    请原谅我 while 里面那丑陋的代码。创建 TrafficLight 实例时候,export,调 direction,On 就给 value 1,Off 就 0。由于是 While True,没有 unexport 了。

    Sketch_bb

    最后是这些制作过程,我承认这比较无聊…

    DSC_0018 DSC_0016 DSC_0013
    DSC_0014 DSC_0015 microMsg.1453472733043
         

    我在这群里,欢迎加入交流:
    开发板玩家群 578649319开发板玩家群 578649319
    硬件创客 (10105555)硬件创客 (10105555)

  • 相关阅读:
    Android 使用Application总结
    android数据保存
    Android 利用Application对象存取公共数据
    android 通过post方式提交数据的最简便有效的方法
    android http协议post请求方式
    maven下载及配置
    普通的101键盘在Mac上的键位对应
    高效使用你的Xcode
    maven安装及maven项目导入流程
    Mac键盘图标与对应快捷按键标志汇总
  • 原文地址:https://www.cnblogs.com/leptonation/p/5152723.html
Copyright © 2011-2022 走看看