danjohnson95 / pinout
Installs: 2
Dependents: 0
Suggesters: 0
Security: 0
Stars: 8
Watchers: 1
Forks: 2
Open Issues: 1
Type:project
Requires
- illuminate/console: ^10.10.0|^11.0
- illuminate/support: ^10.10.0|^11.0
- symfony/process: ^6.4|^7.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.4
- larastan/larastan: ^2.7.0
- mockery/mockery: ^1.4
- orchestra/testbench: ^8.0|^9.0
- pestphp/pest: ^1.20|^2.0
- phpstan/phpstan-phpunit: ^1.1
This package is auto-updated.
Last update: 2024-10-24 17:32:19 UTC
README
Pinout
Connect your Laravel application to the physical world with Pinout, where code meets circuitry. Hardware and web, seamlessly united 🤝
Features
With a Laravel application running on supported hardware, you can:
- Get the current state of any GPIO pin
- Set the state of any GPIO pin
These basic features open up a world of possibilities, from simple LED control to complex robotics.
And with the included drivers, you can also:
- Display digits on a 7 segment display
- Display anything on a 16x2 LCD display
Hardware support
At the moment, Pinout supports the following hardware:
Getting started
Install the package to an existing Laravel project:
composer require danjohnson95/pinout
If you're using Laravel 11 or later, the package will be auto-discovered. If you're using an earlier version, you'll need to add the service provider to your config/app.php
file:
'providers' => [ // ... DanJohnson95\Pinout\ServiceProvider::class, // ... ],
Usage
Pinout
facade
This package allows you to interact with hardware using the Pinout
facade, and also comes with a couple of Artisan commands for convenience.
Use the pin
method to get a Pin
instance for a specific pin:
$pin = \DanJohnson95\Pinout\Pinout::pin(13);
The argument is a reference to the GPIO pin number. (The BCM pin number is used, not the physical pin number.) See pinout.xyz for a visual reference.
The Pin
instance has methods for interacting with the pin:
$pin->isOn(); // Whether the pin is "on" (high) $pin->isOff(); // Whether the pin is "off" (low) $pin->turnOn(); // Set the pin to "on" $pin->turnOff(); // Set the pin to "off" $pin->makeInput(); // Set the pin to input mode $pin->makeOutput(); // Set the pin to output mode
The facade also has a pins
method for pulling multiple pins at once:
$pins = \DanJohnson95\Pinout\Pinout::pins(13, 19, 26);
This will return a PinCollection
instance, which is a collection of Pin
instances.
The PinCollection
comes with some handy methods too:
$pins->turnOn(); // Turns all pins on in the collection $pins->turnOff(); // Turns all pins off in the collection $pins->makeInput(); // Sets all pins to input mode $pins->makeOutput(); // Sets all pins to output mode $pins->findByPinNumber(13); // Returns the Pin instance for the given pin number $pins->whereIsOn(); // Returns a collection of pins that are on $pins->whereIsOff(); // Returns a collection of pins that are off
Artisan commands
This package comes with a couple of Artisan commands for convenience:
php artisan pinout:pin 13
This will return the current state of the pin.
php artisan pinout:on 13
This will turn pin 13 on.
php artisan pinout:off 13
This will turn pin 13 off.
Roadmap
- Hardware interrupts
- I2C
- SPI