SkillAgentSearch skills...

Pinout

Control hardware using Laravel 🔌

Install / Use

/learn @danjohnson95/Pinout
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

<p align="center"><img width="25%" src="/art/laravel-pinout.png?1" alt="Pinout logo"></p>

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:

| Model | Supported | | --- | --- | | Raspberry Pi Model A | ✅ | | Raspberry Pi Model B | ✅ | | Raspberry Pi Model B+ | ✅ | | Raspberry Pi Model 2 | ✅ | | Raspberry Pi 3 Model B | ✅ | | Raspberry Pi 3 Model B+ | ✅ | | Raspberry Pi 3 Model A+ | ✅ | | Raspberry Pi 4 Model B | ✅ | | Raspberry Pi 400 | ✅ | | Raspberry Pi 5 | ✅ | | Raspberry Pi Zero | ✅ | | Raspberry Pi Zero v1.3 | ✅ | | Raspberry Pi Zero W | ✅ | | Raspberry Pi Zero WH | ✅ | | Raspberry Pi Zero 2 W | ✅ |

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

PinService facade

This package allows you to interact with hardware using the PinService 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\Facades\PinService::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\Facades\PinService::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:get 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
View on GitHub
GitHub Stars322
CategoryDevelopment
Updated19d ago
Forks17

Languages

PHP

Security Score

100/100

Audited on Mar 8, 2026

No findings