chickentikkamasala / gpio
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设置为500gpio: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度)
- 命令错误的异常