Beaglebone Black–GPIO 高低電平控制 LED 燈

来源:http://www.cnblogs.com/leptonation/archive/2016/01/23/5152723.html
-Advertisement-
Play Games

上一篇,運用 Linux 的 sysfs,控制本機上的 LED 燈,usr0 至 usr3,這次用 GPIO 控制外部的電路,點亮 LED 燈。 這次的全部材料: BBB 一臺 購買 BBB 自帶的 USB 數據線 麵包板一塊 470Ω 三枚(至少一枚) 白、紅、黃、綠 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 高清版請看這裡。打不開請自行FQ。

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
     

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • SQL Server代理是所有實時資料庫的核心。代理有很多不明顯的用法,因此系統的知識,對於開發人員還是DBA都是有用的。這系列文章會通俗介紹它的很多用法。SQL Server代理作業有一系列的一個或多個作業步驟組成。一個作業步驟會分配給特定的作業子系統,用來標識將要進行的作業步驟工作種類。每個作業...
  • 1、use_concat網上說法:CONCATENATION和UNION/UNION ALL操作比較類似,根據OR查詢條件,將一個查詢分解為兩個或更多的部分,然後在去掉兩個部分重覆的記錄。由於CONCATENATION執行計劃需要去掉重覆的記錄,因此和UNION ALL不同。和UNION也不同的是,...
  • 近期為了分析國內航空旅游業常見安全漏洞,想到了用大數據來分析,其實數據也不大,只是生產項目沒有使用Hadoop,因此這裡實際使用一次。先看一下通過hadoop分析後的結果吧,最終通過hadoop分析國內典型航空旅游業廠商的常見安全漏洞個數的比例效果如下:第一次正式使用Hadoop,肯定會遇到非常多的...
  • 常用操作: 整型類型操作: 1、相加__add__(),比如我有兩個變數a=19,b=20,那麼我想通過a調用此函數來與b相加,可以這樣做1 >>> a=192 >>> b=203 >>> c=-194 >>> d=a.__add__(b)5 >>> print d6 39也可以直接相加1 >>>....
  • 1. 安裝環境 linux版本:CentOSrelease6.2(Final) pg版本 :postgresql-9.5.02. pg資料庫下載地址--http://www.postgresql.org/ftp/source/3. 安裝依賴包>yum installgcc*>yum insta...
  • 前言今天在在清理資料庫,是MS SQL Server,其中用到分離資料庫文件。在這過程中,出現了一個小小的問題:誤將資料庫日誌文件刪除了,然後數據就打不開了,除了離線,其他操作都報錯。資料庫分離常規方法此方法是常規慣用的方式,多步驟。如圖所示:粗暴方法此方法簡單粗暴,非常實用,一條SQL語句就搞定了...
  • 一直想在 Linux 上使用 MONO 試試運行 Rafy,最近因為業務需要,總算是真正地試驗了一次。下麵是本次部署記錄的一些要點。 Linux 這次部署,我是和兩位同事一起來試驗的。由於我們對 Linux 都不太熟悉(多年前曾經用過很少一段時間的 RedHat,那些命令現在也早已忘記了,哈。),所...
  • 本文由ilanniweb提供友情贊助,首發於爛泥行天下想要獲得更多的文章,可以關註我的微信ilanniweb公司的業務是使用tomcat做web容器,為了更有效的利用伺服器的性能,我們一般部署多個tomcat做業務的負載均衡。一、業務需求目前一臺伺服器上,部署了4個tomcat,也就相當於4個節點。...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...