覆盆子 PI 和 GPIO 引腳: 控制與 Bash 和 Python 的 LED

在以前的文章,我們看到了個 GPIO 引腳和實際應用的一些例子, 今天我們將集中操作的通用的針腳, 並學會控制他們與譯員的訂單 Bash 和與 Python.

原始&領導

將使用 LED, 一種耐 330 歐姆, 電線, 和一個人 線路板, 焊料和烙鐵或.

我們還需要我們 覆盆子 已經有了 Raspbian 預先安裝, 如果你的案子不是, 你可以看到如何 從以下連結 目錄.

騎電路

您可以直接焊錫 LED 電線和電阻作為你將在下面看到 關係圖, 雖然它是,使用更好 線路板; 它也是非常重要的是看在鬢角上, 作為在 “對角” 裡面的 二極體 LED 結合兩個針腳,裝入電路, 已經 如果你向後裝入它不轉.

需要控制的 LED 發光二極體點火電路.

需要控制的 LED 發光二極體電源電路.

我要去使用一個 線路板, 我推薦你使用, 有一些 從大約 4 歐元 和他們允許我們反復重用元件,而無需他們焊, 內部連接之一 線路板 他們傾向于以下.

protocon

線路板連接.

之間的連接 線路板覆盆子 他們必須是如下圖所示, 的 GPIO 你可以達到問題 3,3V 要分配一個邏輯的高值.

線上路板上的電路.

需要控制的 LED 發光二極體電源電路.

你好的 GPIO 與 Bash 的世界

一次安裝的電路, 我們打算做我稱之為 “你好世界 GPIO” 在 Bash 運行以下內容 腳本.

#!/bin/bash
#Exportamos el puerto GPIO 17 
echo 17 > /sys/class/gpio/export 
#Lo configuramos como salida 
echo out > /sys/class/gpio/gpio17/direction 
#Encendemos el LED asignandole 1 como valor lógico
echo 1 > /sys/class/gpio/gpio17/value

若要關閉 LED,我們能做到以下 腳本.

#!/bin/bash
#Apagamos el LED asignandole 0 como valor lógico
echo 0 > /sys/class/gpio/gpio17/value  
#Eliminamos la entrada del puerto GPIO 17 
echo 17 > /sys/class/gpio/unexport 

基本上我們做什麼的 Bash 是創建 目錄層次結構/sys/類/gpio 並將內容添加到每個檔,將被視為 變數.

層次結構

/Sys/class/gpio 目錄內的層次結構.

Python 簡介

我們已證明我們的電路是否正常工作, LED 它被解雇了一個邏輯的高值給變數, 現在讓我們看看如何我們可以這樣做 Python, 這將使我們能夠安排我們 web 應用程式 控制輸入和輸出 GPIO 從任何設備.

funcweb

使用 WEB 應用程式的操作.

在繼續之前, 我推薦你去看 各章 1 到 10 的 Python 這個視頻的教程 管道 YouTube便利的代碼, 如果因為我並沒有很多想法在程式設計 Python, 它能給你很好,使您熟悉的代碼,我們將看到更前面的來理解它.

不同引出線的 GPIO (BCM 和理事會)

有兩種類型的針腳編號, 物理編號或模式 董事會, 和晶片的編號 SoC 博通 控制他們, 我們要在模式中使用引出線 BCM, 但讓我們看看區別.

BCMvsBOARD

你好的 python GPIO 的世界

看完視頻後, 和不同的引出線能已經理解了基本的代碼,使 “你好世界 GPIO” 在 Python.

首先我們要下載你所需要的一切控制 GPIOPython, 在 Raspbian 它們已安裝 Python 和庫 GPIO, 但是我們打算安裝額外的套裝軟體和更新系統,擁有最新版本.

usuario@maquina:~$ sudo apt-get install python-dev
usuario@maquina:~$ sudo apt-get install python-rpi.gpio
usuario@maquina:~$ sudo apt-get update && sudo apt-get upgrade

更新一次, 讓我們看看如何打開 LED 用以下 腳本, 例如可以調用 enciende.py, 我們可以運行它作為根的命令 “sudo Python enciende.py”.

#!usr/bin/env/ python
#enciende.py
#importamos la libreria GPIO
import RPi.GPIO as GPIO 
#Definimos el modo BCM 
GPIO.setmode(GPIO.BCM) 
#Ahora definimos el pin GPIO 17 como salida
GPIO.setup(17, GPIO.OUT) 
#Y le damos un valor logico alto para encender el LED
GPIO.output(17, GPIO.HIGH) 

為此,我們可以把它關掉, 例如調用 apaga.py

#!usr/bin/env/ python
#apaga.py
#importamos la libreria GPIO
import RPi.GPIO as GPIO 
#Definimos el modo BCM
GPIO.setmode(GPIO.BCM)  
#Ahora definimos el pin GPIO 17 como salida
GPIO.setup(17, GPIO.OUT) 
#Y le damos un valor logico bajo para apagar el LED
GPIO.output(17, GPIO.LOW) 
#Finalmente liberamos todos los pines GPIO, es decir, los desconfiguramos)
GPIO.cleanup() 

為此我們將打電話給你 parpadea.py, 我們會閃爍 LED.

#!usr/bin/env/ python
#parpadea.py
#importamos la libreria GPIO
import RPi.GPIO as GPIO 
#Importamos la libreria time
import time 
#Definimos el modo BCM 
GPIO.setmode(GPIO.BCM) 
#Ahora definimos el pin GPIO 17 como salida
GPIO.setup(17, GPIO.OUT) 
#Queremos que lo que contenga el for i in range se repita 5 veces
for i in range(0,5): 
        #Asignamos valor logico alto para encenderlo
               GPIO.output(17, GPIO.HIGH) 
        #Esperamos un segundo
               time.sleep(1)
        #Asignamos valor logico bajo para apagarlo
         GPIO.output(17, GPIO.LOW) 
        #Esperamos un segundo
         time.sleep(1) 
#Una vez termina las 5 repeticiones, liberamos el pin GPIO utilizado; en este caso el 17
GPIO.cleanup() 

如果你不導入圖書館 “時間“, 不能添加 “睡眠“, 如果不添加 “睡眠” 之間的第二次打開和關閉, 很有可能我們的眼睛會不察覺到閃爍.

它是非常重要不添加中的特殊字元 腳本 在 Python 中, 這個原因的評論不帶口音, 因為它給了字元的錯誤無效.

在下面的條目 我們將看到如何使一個簡單的 Web 應用程式 讓我們來執行這類 腳本, 必須能夠從任何瀏覽器的設備控制 Web.

如果你願意,你可以跟著我 推特, Facebook, 谷歌 +, LinkedIn, 或它分享這份出版物下方的按鈕, 如果您有任何疑問或建議,請不要猶豫,置評.

説明我們達成更多的讀者 Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+Email this to someone

16 思考"覆盆子 PI 和 GPIO 引腳: 控制與 Bash 和 Python 的 LED

  1. 我有一個從新手的問題…
    因為的阻力 330 歐姆和何時使用它?

    通常被用於 330 當我們與 RPI 工作, 或它可能會發生變化?

    問候和最優秀的博客!!!

    • 你好,皮特,

      它應該工作原則, 錯誤只是把許可權交給一些人,但從 web 應用程式運行, 作為使用者 www 資料在預設情況下不再具有這些許可權.

      只是在案例試運行 “sudo chmod + x script.py” 使其可執行檔, 雖然不那麼它應該工作只是從終端; 你可以教我如果在終端來運行該腳本返回你的錯誤嗎??

      非常感謝你的評論.

  2. 你好,
    我試圖打開 LED 通過 python 以下指南樣品,但在運行代碼時,它給了我以下錯誤它:

    作為 GPIO 導入 RPi.GPIO

    錯誤:
    -bash: 導入: 找不到命令

    你知道這個錯誤是為什麼嗎?

    謝謝你,祝賀博客個人服侍我,很多!

    • 納米你好, 歡迎再次光臨.

      你提到的線是往往是包含一個腳本來告訴終端訂單的翻譯應該去的地方你開頭的語句傳遞, 在這種情況下,Python; bash 將如下:

      #!/bin/bash

      在這種情況下,它作品宣言 》 並沒有它擴展.py 檔以來, 但它是很好的做法總是添加它.

      我希望能有清除你的疑慮, 回到這裡, 每當你想, 非常感謝你的評論🙂

  3. 謝謝, 本教程是優秀, 但我有個疑問:

    他們給我留下了以下錯誤:

    線 12 導入:找不到
    線 14 語法錯誤: 很意外的消息 (期待 “)”)

    我的代碼:

    #GPIO setup.py
    ### 開始初始化資訊
    # 提供: GPIO setup.ch
    # 需要開始: $$syslog remote_fs
    # 要求停止: $$syslog remote_fs
    # 預設啟動: 2 3 4 5
    # 預設停止: 0 1 6
    # 簡短說明: 安裝模式 gpio
    # 描述: 安裝 gpio 22/27/17/4 出模式
    ### 結束初始化資訊

    作為 GPIO 導入 RPi.GPIO
    #我們定義 BCM 模式
    GPIO.setmode(GPIO。BCM)
    #我們現在定義 GPIO 輸出插針
    GPIO.setup(4, GPIO。出)
    GPIO.setup(17, GPIO。出)
    GPIO.setup(27, GPIO。出)
    GPIO.setup(22, GPIO。出)

    任何想法???

    • 你好 Leoctam, 謝謝你的評論.

      第一次線給要明白,你想要創建一個系統守護進程, 但他們被注釋掉,所以它不會被考慮.

      另一方面, 您正在使用與 GPIO 進行交互的代碼是 Python, 所以你必須留在將調用腳本.py 從你的系統守護進程, 或使用 Bash 在本教程中將這樣做第一個示例.

留言