PHP Classes

PHP Led Raspberry PI: Control led lights to turn on and off

Recommend this page to a friend!
  Info   View files Example   View files View files (4)   DownloadInstall with Composer Download .zip   Reputation   Support forum (1)   Blog (2)    
Ratings Unique User Downloads Download Rankings
Not enough user ratingsTotal: 155 All time: 9,021 This week: 571Up
Version License PHP version Categories
led_raspberry 1.0.0Custom (specified...5PHP 5, Hardware
Description 

Author

This class can control led lights to turn on and off.

It can access system variables in a Raspberry PI device to perform several types of operations to control led lights. Currently, it can:

- Turn on and off the led lights
- Set the control variables like export, unexport, direction

Innovation Award
PHP Programming Innovation award nominee
August 2021
Number 7
Raspberry PI is a popular platform for creating small hardware devices that can be controlled by software written in many languages, including PHP.

This package demonstrates how to control a Raspberry PI-based LED light system using PHP.

Manuel Lemos
Picture of Rafael Martin Soto
  Performance   Level  
Name: Rafael Martin Soto <contact>
Classes: 14 packages by
Country: Spain Spain
Age: 49
All time rank: 221753 in Spain Spain
Week rank: 10 Up2 in Spain Spain Up
Innovation award
Innovation award
Nominee: 8x

Winner: 4x

Example

<?php


/** Example of use led class
 * BLINK 2 LEDS EVERY SECOND. ONLY 1 IS ON AT A TIME FOR 10 TIMES.
 *
 * Class for get direct access to GPIO ports on a Raspberry pi with PHP. Made through fwrite() function
 *
 *
 * @author Rafael Martin Soto
 * @author {@link http://www.inatica.com/ Inatica}
 * @blog {@link https://rafamartin10.blogspot.com/ Rafa Martin's blog}
 * @since July 2021
 * @version 1.0.1
 * @license GNU General Public License v3.0 *
*/


include( 'led.class.php' );

// Get de file handle for Export & unexport

$fpUnexport = fopen( '/sys/class/gpio/unexport', 'w' );
$fpExport = fopen( '/sys/class/gpio/export', 'w' );

$Led18 = new Led( '18', $fpUnexport, $fpExport);
$Led23 = new Led( '23', $fpUnexport, $fpExport);

fclose( $fpExport ); // No need Export file handle more
unset( $fpExport );


for(
$i=0;$i<10;$i++){
    if(
$i%2 == 0){
       
$Led18->On();
       
$Led23->Off();
    } else {
       
$Led18->Off();
       
$Led23->On();
    }

   
sleep(1);
}

// Power off leds
$Led18->Off();
$Led23->Off();

// Unexport leds
$Led18->unexport();
$Led23->unexport();

fclose($fpUnexport); // close file handle unexport

// Free Mem
unset( $Led18 );
unset(
$Led23 );
unset(
$i );
unset(
$fpUnexport );
?>


Details

led_raspberry

Class for manage directly leds on raspberry pi in PHP

We can access GPIO ports directly with fwrite() for power on|off leds, without use shell_exec() function. The result is a fasted library to access GPIO ports. This one is written to manage LEDS, but with a litlle changes you can use it for other components (buttons, relay, ....)

# REQUERIMENTS:

- A minimum (minimum, minimum, minimum requeriments is needed). Tested on:

- Simple Raspberry pi (B +	512MB	700 MHz ARM11) with Raspbian Lite PHP7.3 (i love this gadgets)  :heart_eyes:

# FILES: There are 2 files:

led.class.php -> Master class. This file is the main file that you need to include in your code.

example.php -> Code with example use of the class

# INSTALLATION: A lot of easy :smiley:. It is written in PURE PHP. Only need to include the files. Tested on basic PHP installation

     require_once( 'led.class.php' );

# BASIC USAGE:

- Create the variable with led class on GPIO 18:

    $Led18 = new Led( '18' );

- Power ON GPIO led 18:

    $Led18->On();
    

- Power OFF GPIO led 18:

    $Led18->Off();

- Unexport GPIO port 18:

    $Led18->unexport();

RESUME OF METHODS:

CREATE LED ON GPIO PORT 'X':

  • You can pass $fpUnexport & $fpExport file handles if you have more than 1 led. In this way, only 1 file will be openned for Export and Unexport. If not params given, every led will open and close individually files for export and unexport. With $fpUnexport & $fpExport params yo will get a better performance.

Without file handles:

     $Led18 = new Led( '18' ); // Without file handles
     
     // Here your code using power on off on leds as you want
     // ......
     
     // Remember do Unexport at the end of your code
     $Led18->unexport();

With file handles:

     $fpUnexport = fopen( '/sys/class/gpio/unexport', 'w' );
     $fpExport   = fopen( '/sys/class/gpio/export', 'w' );
     
     $Led18      = new Led( '18', $fpUnexport, $fpExport); // With file handles
     
     // Here your code using power on off on leds as you want
     // ......
     
     // Remember do Unexport & close files at the end of your code
     $Led18->unexport();
     
     fclose( $fpUnexport );
     fclose( $fpExport );

Power ON led:

     $Led18->On();

Power OFF led:

     $Led18->Off();

Unexport GPIO PORT:

     $Led18->unexport();

Example

     <?php
     require_once( 'led.class.php' );
     
     // Create the variable with led class on GPIO 18:
     $Led18 = new Led( '18' );
     
     // Power ON GPIO led 18:
     $Led18->On();
     
     // Wait 5 seconds
     sleep(5);
     
     //Power OFF GPIO led 18:
     $Led18->Off();
     
     //Unexport GPIO port 18:
     $Led18->unexport();
     ?>

Of course. You can use it freely :vulcan_salute::alien:

By Rafa.

@author Rafael Martin Soto

@author {@link http://www.inatica.com/ Inatica}

@blog {@link https://rafamartin10.blogspot.com/ Rafael Martin's Blog}

@since July 2021

@version 1.0.0

@license GNU General Public License v3.0


  Files folder image Files  
File Role Description
Accessible without login Plain text file example.php Example Example script
Plain text file led.class.php Class Class source
Accessible without login Plain text file LICENSE Lic. License text
Accessible without login Plain text file README.md Doc. Documentation

 Version Control Unique User Downloads Download Rankings  
 100%
Total:155
This week:0
All time:9,021
This week:571Up
User Comments (1)
Great work overall!
2 years ago (Filip Komar)
80%StarStarStarStarStar