此包的最新版本(v1.0)没有可用的许可证信息。

维护者

详细信息

github.com/bashleigh/GPIO

源代码

问题

安装: 94

依赖项: 0

建议者: 0

安全: 0

星星: 5

关注者: 2

分支: 4

开放问题: 1

类型:项目

v1.0 2018-04-26 09:53 UTC

This package is not auto-updated.

Last update: 2024-09-22 03:27:35 UTC


README

需要测试

GPIO管理器旨在存放您的硬件环境设置,并允许您管理和与硬件交互。

GPIO管理器附带了一个Laravel桥接服务提供程序,以便轻松与Laravel集成。

GPIO类需要安装gpio

apt-get install gpio

在Laravel中安装

通过composer将包添加到您的应用程序中

composer require chickentikkamasala/gpio
'providers' => [

    ...
    
    \ChickenTikkaMasala\GPIO\Bridge\Laravel\GPIOServiceProvider::class,
    
    ...
    
];

将事件监听器添加到您的Event Service Provider

$subscribe = [
    \ChickenTikkaMasala\GPIO\Bridge\Laravel\Events\EventSubscriber::class,
];

上面的方法是在请求后重新缓存GPIO管理器,以防止重新声明管理器并将一切重置为默认值。

如果您运行应用程序并更改环境设置,您可能需要运行php artisan cache:clear来清除缓存的设置。

发布供应商以获取配置文件

php artisan vendor:publish --provider="ChickenTikkaMasala\GPIO\Bridge\Laravel\GPIOServiceProvider"

示例设置

    'pins' => [
        'redled' => [
            'pin' => 1,
            'mode' => 'pwm',
        ],
    ],

使用命令行进行测试

将1号引脚上的红色LED打开全亮

php artisan gpio:set redled 1023

列出您的设置中所有GPIO引脚的输入

php artisan gpio:list

这将输出所有由管理器设置的所有GPIO的数组

创建新的连接

作为配置设置的替代方案,您可以调用create函数添加新的连接。

    public function index(GPIOManager $manager) 
    {
        $manager->create('greenled', 2);
        $manager->greenled = 'ON';
    }

管理器将您的命名连接映射为上述参数。在读取引脚时,我们可以使用相同的方法和参数来获取结果

    public function index(GPIOManager $manager)
    {
        //create an analog sensor
        $manager->create('sensor', 3, 'aread');
        $value = $manager->sensor;
        
        return response()->json(['sensor' => $value]);
    }

映射也适用于'OFF'和'ON'值,PWM期望最大值为1023,write期望为1。'OFF'等于0。

自定义GPIO类/模式

但是,您可以通过两种方式添加自己的GPIO模式/类。

首先是

use ChickenTikkaMasala\GPIO\GPIO;

class RedLED extends GPIO
{
    public function __construct()
    {
        parent::__construct(1, 'pwm', 'OFF');
    }
    
    public function getMethod()
    {
        return 'out';
    }
    
}
    public function index(GPIOManager $manager)
    {
        $redLED = new RedLED();
        $manager->add($redLED);
    }

另一种方法是使用registerMode函数将模式类型注册到管理器,以便您可以这样做

    $manager->create('red', 1, 'LED');

我们的GPIO配置数组在app/gpio.php

    'modes' => [
        'LED' => \App\GPIO\Modes\LED::class,
    ],

终端函数

  • gpio:set redled 500 => 将红色LED设置为500
  • gpio:get sensor => 打印传感器读取值
  • gpio:list => 列出所有连接
  • gpio:function redled increment 1023 1000 => 调用increment函数并带有选项(需要实现选项)
  • gpio:listen sensor --onChange => 打印传感器的状态(onChange选项仅在值更改时打印,否则持续打印传入的值)

默认模式

  • PWM => 用于在0和最大值之间增加电压
  • Awrite
  • ARead
  • Write => 用于写入引脚的ON/OFF(0v或最大电压)
  • Read => 用于读取引脚的ON/OFF

值转换

您可能记得(如果您曾经使用过Arduino),值被设置为HIGH或LOW。您可以使用GPIO,并且根据其模式,它将自动调整最大值。

    //PWM all the below = 1023
    $manager->redled = 'HIGH';
    $manager->redled = 'UP';
    $manager->redled = 'ON';
    
    //Where as for write and awrite: these equal to 1
    $manager->redled = 'HIGH';
    $manager->redled = 'UP';
    $manager->redled = 'ON';
    //all equal to 1
    
    //The below all equal to 0
    $manager->redled = 'LOW';
    $manager->redled = 'DOWN'
    $manager->redled = 'OFF';

从管理器中获取GPIO类

如果您想使用,可以使用以下方法从管理器中获取类

    $redled = $manager->get('redled');
    
    //if you wanted to put it back simply use the add function again
    
    $manager->add('redled', $redled);

PWM函数

在PWM GPIO中,我添加了两个用于增加和减少值的功能,以便在区间内增加/减少到某个值。

$redled = $manager->get('redled');
$redled->increment(1023, 200);
//redled will 'fade' from 0 to 1023 
//increment will increase every 200th millisecond

$redled->decrement(0, 200);

$manager->add('redled', $redled);

GPIO选项

如果您看到http://wiringpi.com/the-gpio-utility/中的使用部分,这些选项可以像这样传递给GPIOManager(例如,使用BCM引脚)

    'pins' => [
        'redled' => [
            'pin' => 18, //wiring pi pin 1 = BCM pin 18
            'mode' => 'pwm',
            'options' => [
                '-g',
            ],
        ],
    ],

一个非常有用的引脚映射https://pinout.xyz/

默认GPIO值

    'pins' => [
        'redled' => [
            'pin' => 18,
            'mode' => 'pwm',
            'defaultValue' => 1023,//turn pin on full on boot of application 
        ],
    ],

即将推出

  • Symfony桥接器
  • 将值从'低'映射到'高'(例如,对于电子速度控制器(ESCs),PWM值为60时为0。对于伺服电机,我们可能希望将0-1023映射到类似于0-180度的值,其中'高'值为1023 = 180度)
  • 命令错误的异常