覆盆子 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 文件以来, 但它是很好的做法总是添加它.

      我希望能有清除你的疑虑, vuelve por aquí cuando quieras y muchas gracias por tu comentario 🙂

  3. 谢谢, 本教程是优秀, 但我有个疑问:

    他们给我留下了以下错误:

    线 12 导入:找不到
    线 14 语法错误: 很意外的消息 (期待 “)”)

    我的代码:

    #GPIO setup.py
    ### 开始初始化信息
    # 提供: GPIO setup.ch
    # 需要开始: $remote_fs $syslog
    # 要求停止: $remote_fs $syslog
    # 默认启动: 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 在本教程中将这样做第一个示例.

留言