Armed the gpio class
This commit is contained in:
parent
429932bf4b
commit
bd5728062e
35
examples/rf-remote.php
Normal file
35
examples/rf-remote.php
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
require_once __DIR__."/../vendor/autoload.php";
|
||||||
|
|
||||||
|
use NoccyLabs\Gpio\Gpio;
|
||||||
|
use NoccyLabs\Gpio\GpioMapper\WiringPiMapper;
|
||||||
|
|
||||||
|
try {
|
||||||
|
$gpio = new Gpio(true);
|
||||||
|
} catch (Gpio\Exception $e) {
|
||||||
|
error_log("Error: {$e}");
|
||||||
|
}
|
||||||
|
|
||||||
|
// The mapper translates GPIO to logical pins and vice versa
|
||||||
|
$gpio->setMapper( new WiringPiMapper(2) );
|
||||||
|
|
||||||
|
// Access logical pin 0, since we got a mapper assigned. Otherwise this would
|
||||||
|
// be the actual GPIO0 pin.
|
||||||
|
$led = $gpio[0]
|
||||||
|
->export()
|
||||||
|
->setDirection("input")
|
||||||
|
->setEdge("rising")
|
||||||
|
->setHandler(function($e) use($gpio) {
|
||||||
|
|
||||||
|
})
|
||||||
|
->setLabel("rfint")
|
||||||
|
->dumpStatus(true);
|
||||||
|
|
||||||
|
for($n = 1; $n < 5; $n++) {
|
||||||
|
$gpio[$n]
|
||||||
|
->setDirection("input")
|
||||||
|
->setLabel("rfbt{$n}")
|
||||||
|
->dumpStatus(true);
|
||||||
|
}
|
||||||
|
|
14
lib/Gpio.php
14
lib/Gpio.php
@ -28,13 +28,15 @@ class Gpio implements \ArrayAccess
|
|||||||
/** @var NoccyLabs\Gpio\GpioMapperInterface */
|
/** @var NoccyLabs\Gpio\GpioMapperInterface */
|
||||||
protected $mapper;
|
protected $mapper;
|
||||||
|
|
||||||
public function __construct()
|
public function __construct($force=false)
|
||||||
{
|
{
|
||||||
if (!file_exists("/sys/class/gpio")) {
|
if (!$force) {
|
||||||
throw new HardwareException("gpio sysfs is not available");
|
if (!file_exists("/sys/class/gpio")) {
|
||||||
}
|
throw new HardwareException("gpio sysfs is not available");
|
||||||
if (!is_writable("/sys/class/gpio/export")) {
|
}
|
||||||
throw new HardwareException("gpio sysfs is not writable");
|
if (!is_writable("/sys/class/gpio/export")) {
|
||||||
|
throw new HardwareException("gpio sysfs is not writable");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,12 +45,12 @@ class GpioPin
|
|||||||
public function __construct($pin)
|
public function __construct($pin)
|
||||||
{
|
{
|
||||||
$this->pin = (int)$pin;
|
$this->pin = (int)$pin;
|
||||||
//$this->fd = fopen("/sys/class/gpio/gpio{$pin}/value", "rb");
|
$this->fd = fopen("/sys/class/gpio/gpio{$pin}/value", "rb");
|
||||||
}
|
}
|
||||||
|
|
||||||
public function __destruct()
|
public function __destruct()
|
||||||
{
|
{
|
||||||
//fclose($this->fd);
|
fclose($this->fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setDirection($direction)
|
public function setDirection($direction)
|
||||||
@ -59,7 +59,7 @@ class GpioPin
|
|||||||
throw new \Exception;
|
throw new \Exception;
|
||||||
}
|
}
|
||||||
$this->direction = $direction;
|
$this->direction = $direction;
|
||||||
//file_put_contents("/sys/class/gpio/{$this->pin}/direction", $direction);
|
file_put_contents("/sys/class/gpio/{$this->pin}/direction", $direction);
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ class GpioPin
|
|||||||
public function setValue($value)
|
public function setValue($value)
|
||||||
{
|
{
|
||||||
$this->value = (bool)$value;
|
$this->value = (bool)$value;
|
||||||
//file_put_contents("/sys/class/gpio/{$this->pin}/value", (int)$this->value);
|
file_put_contents("/sys/class/gpio/{$this->pin}/value", (int)$this->value);
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,18 +93,16 @@ class GpioPin
|
|||||||
|
|
||||||
public function export()
|
public function export()
|
||||||
{
|
{
|
||||||
/*
|
|
||||||
file_put_contents("/sys/class/gpio/export", $this->pin);
|
file_put_contents("/sys/class/gpio/export", $this->pin);
|
||||||
if (!file_exists("/sys/class/gpio/gpio{$this->pin}")) {
|
if (!file_exists("/sys/class/gpio/gpio{$this->pin}")) {
|
||||||
throw new \Exception();
|
throw new \Exception();
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function unexport()
|
public function unexport()
|
||||||
{
|
{
|
||||||
//file_put_contents("/sys/class/gpio/unexport", $this->pin);
|
file_put_contents("/sys/class/gpio/unexport", $this->pin);
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,7 +112,7 @@ class GpioPin
|
|||||||
throw new \Exception;
|
throw new \Exception;
|
||||||
}
|
}
|
||||||
$this->edge = $edge;
|
$this->edge = $edge;
|
||||||
//file_put_contents("/sys/class/gpio/{$this->pin}/edge", $edge);
|
file_put_contents("/sys/class/gpio/{$this->pin}/edge", $edge);
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,17 +136,17 @@ class GpioPin
|
|||||||
{
|
{
|
||||||
if ($ansi) {
|
if ($ansi) {
|
||||||
$status = "\e[44;37;1m GPIO{$this->pin} \e[0m\n";
|
$status = "\e[44;37;1m GPIO{$this->pin} \e[0m\n";
|
||||||
$direction = "\e[36;1m".
|
$direction =
|
||||||
($this->direction=="input"?(CS::chr(0x2190)):(CS::chr(0x2192))).
|
($this->direction=="input"?(CS::chr(0x2190)):(CS::chr(0x2192))).
|
||||||
"\e[0m ".$this->direction;
|
" ".$this->direction;
|
||||||
$edge = "\e[33;1m";
|
$edge = $this->edge; //"";
|
||||||
if ($this->edge == "rising") {
|
/*if ($this->edge == "rising") {
|
||||||
$edge.= CS::chr(0x21A5)."\e[0m rising";
|
$edge.= CS::chr(0x21A5)." rising";
|
||||||
} elseif ($this->edge == "falling") {
|
} elseif ($this->edge == "falling") {
|
||||||
$edge.= CS::chr(0x21A7)."\e[0m falling";
|
$edge.= CS::chr(0x21A7)." falling";
|
||||||
} else {
|
} else {
|
||||||
$edge.= "\e[0m".$this->edge;
|
$edge.= "\e[0m".$this->edge;
|
||||||
}
|
}*/
|
||||||
} else {
|
} else {
|
||||||
$status = "********** GPIO{$this->pin} **********\n";
|
$status = "********** GPIO{$this->pin} **********\n";
|
||||||
$direction = $this->direction;
|
$direction = $this->direction;
|
||||||
|
Loading…
Reference in New Issue
Block a user