mirror of
				https://github.com/KevinMidboe/python-gpiozero.git
				synced 2025-10-29 17:50:37 +00:00 
			
		
		
		
	Correct remote GPIO recipes
This commit is contained in:
		| @@ -1,9 +1,11 @@ | ||||
| from gpiozero import LED | ||||
| from gpiozero.pins.pigpio import PiGPIOPin | ||||
| from gpiozero.pins.pigpio import PiGPIOFactory | ||||
| from signal import pause | ||||
|  | ||||
| factory = PiGPIOFactory(host='192.168.1.3') | ||||
|  | ||||
| button = Button(2) | ||||
| led = LED(PiGPIOPin(17, host='192.168.1.3')) | ||||
| led = LED(17, pin_factory=factory) | ||||
|  | ||||
| led.source = button.values | ||||
|  | ||||
|   | ||||
| @@ -1,11 +1,14 @@ | ||||
| from gpiozero import LED | ||||
| from gpiozero.pins.pigpio import PiGPIOPin | ||||
| from gpiozero.pins.pigpio import PiGPIOFactory | ||||
| from gpiozero.tools import all_values | ||||
| from signal import pause | ||||
|  | ||||
| factory3 = PiGPIOFactory(host='192.168.1.3') | ||||
| factory4 = PiGPIOFactory(host='192.168.1.3') | ||||
|  | ||||
| led = LED(17) | ||||
| button_1 = Button(PiGPIOPin(17, host='192.168.1.3')) | ||||
| button_2 = Button(PiGPIOPin(17, host='192.168.1.4')) | ||||
| button_1 = Button(17, pin_factory=factory3) | ||||
| button_2 = Button(17, pin_factory=factory4) | ||||
|  | ||||
| led.source = all_values(button_1.values, button_2.values) | ||||
|  | ||||
|   | ||||
| @@ -1,8 +1,9 @@ | ||||
| from gpiozero import LED | ||||
| from gpiozero.pins.pigpio import PiGPIOPin | ||||
| from gpiozero.pins.pigpio import PiGPIOFactory | ||||
| from time import sleep | ||||
|  | ||||
| led = LED(PiGPIOPin(17, host='192.168.1.3')) | ||||
| factory = PiGPIOFactory(host='192.168.1.3') | ||||
| led = LED(17, pin_factory=factory) | ||||
|  | ||||
| while True: | ||||
|     led.on() | ||||
|   | ||||
| @@ -1,9 +1,11 @@ | ||||
| from gpiozero import LED | ||||
| from gpiozero.pins.pigpio import PiGPIOPin | ||||
| from gpiozero.pins.pigpio import PiGPIOFactory | ||||
| from time import sleep | ||||
|  | ||||
| led_1 = LED(PiGPIOPin(17, host='192.168.1.3')) | ||||
| led_2 = LED(PiGPIOPin(17, host='192.168.1.4')) | ||||
| factory3 = PiGPIOFactory(host='192.168.1.3') | ||||
| factory4 = PiGPIOFactory(host='192.168.1.4') | ||||
| led_1 = LED(17, pin_factory=factory3) | ||||
| led_2 = LED(17, pin_factory=factory4) | ||||
|  | ||||
| while True: | ||||
|     led_1.on() | ||||
|   | ||||
| @@ -1,9 +1,10 @@ | ||||
| from gpiozero import LED | ||||
| from gpiozero.pins.pigpio import PiGPIOPin | ||||
| from gpiozero.pins.pigpio import PiGPIOFactory | ||||
| from time import sleep | ||||
|  | ||||
| remote_factory = PiGPIOFactory(host='192.168.1.3') | ||||
| led_1 = LED(17)  # local pin | ||||
| led_2 = LED(PiGPIOPin(17, host='192.168.1.3'))  # remote pin | ||||
| led_2 = LED(17, pin_factory=remote_factory)  # remote pin | ||||
|  | ||||
| while True: | ||||
|     led_1.on() | ||||
|   | ||||
| @@ -1,8 +1,9 @@ | ||||
| from gpiozero import LED | ||||
| from gpiozero.pins.rpigpio import RPiGPIOPin | ||||
| from gpiozero.pins.rpigpio import RPiGPIOFactory | ||||
| from time import sleep | ||||
|  | ||||
| led_1 = LED(RPiGPIOPin(17))  # local pin | ||||
| local_factory = RPiGPIOFactory() | ||||
| led_1 = LED(17, pin_factory=local_factory)  # local pin | ||||
| led_2 = LED(17)  # remote pin | ||||
|  | ||||
| while True: | ||||
|   | ||||
| @@ -1,10 +1,13 @@ | ||||
| from gpiozero import LED | ||||
| from gpiozero.pins.pigpio import PiGPIOPin | ||||
| from gpiozero.pins.pigpio import PiGPIOFactory | ||||
| from time import sleep | ||||
|  | ||||
| factory3 = PiGPIOFactory(host='192.168.1.3') | ||||
| factory4 = PiGPIOFactory(host='192.168.1.4') | ||||
|  | ||||
| led_1 = LED(17)  # local pin | ||||
| led_2 = LED(PiGPIOPin(17, host='192.168.1.3'))  # remote pin on one pi | ||||
| led_3 = LED(PiGPIOPin(17, host='192.168.1.4'))  # remote pin on another pi | ||||
| led_2 = LED(17, pin_factory=factory3)  # remote pin on one pi | ||||
| led_3 = LED(17, pin_factory=factory4)  # remote pin on another pi | ||||
|  | ||||
| while True: | ||||
|     led_1.on() | ||||
|   | ||||
| @@ -1,8 +1,9 @@ | ||||
| from gpiozero import LED | ||||
| from gpiozero.pins.pigpio import PiGPIOPin | ||||
| from gpiozero.pins.pigpio import PiGPIOFactory | ||||
| from signal import pause | ||||
|  | ||||
| led = LED(PiGPIOPin(17, host='raspberrypi.local')) | ||||
| factory = PiGPIOFactory(host='raspberrypi.local') | ||||
| led = LED(17, pin_factory=factory) | ||||
|  | ||||
| led.blink() | ||||
|  | ||||
|   | ||||
| @@ -1,8 +1,9 @@ | ||||
| from gpiozero import MotionSensor | ||||
| from gpiozero.pins.pigpio import PiGPIOPin | ||||
| from gpiozero.pins.pigpio import PiGPIOFactory | ||||
| from sense_hat import SenseHat | ||||
|  | ||||
| pir = MotionSensor(PiGPIOPin(4, host='192.168.1.4'))  # remote motion sensor | ||||
| remote_factory = PiGPIOFactory(host='192.198.1.4') | ||||
| pir = MotionSensor(4, pin_factory=remote_factory)  # remote motion sensor | ||||
| sense = SenseHat()  # local sense hat | ||||
|  | ||||
| while True: | ||||
|   | ||||
| @@ -1,8 +1,9 @@ | ||||
| from gpiozero import LightSensor | ||||
| from gpiozero.pins.pigpio import PiGPIOPin | ||||
| from gpiozero.pins.pigpio import PiGPIOFactory | ||||
| from sense_hat import SenseHat | ||||
|  | ||||
| light = LightSensor(PiGPIOPin(4, host='192.168.1.4'))  # remote motion sensor | ||||
| remote_factory = PiGPIOFactory(host='192.168.1.4') | ||||
| light = LightSensor(4, pin_factory=remote_factory)  # remote motion sensor | ||||
| sense = SenseHat()  # local sense hat | ||||
|  | ||||
| blue = (0, 0, 255) | ||||
|   | ||||
| @@ -3,5 +3,5 @@ from gpiozero import TrafficHat | ||||
| from gpiozero.pins.pigpio import PiGPIOFactory | ||||
| from time import sleep | ||||
|  | ||||
| gpiozero.Device._set_pin_factory(PiGPIOFactory(host='192.168.1.3')) | ||||
| gpiozero.Device.pin_factory = PiGPIOFactory(host='192.168.1.3') | ||||
| th = TrafficHat()  # traffic hat on 192.168.1.3 using remote pins | ||||
|   | ||||
| @@ -3,6 +3,7 @@ from gpiozero import TrafficHat | ||||
| from gpiozero.pins.pigpio import PiGPIOFactory | ||||
| from time import sleep | ||||
|  | ||||
| remote_factory = PiGPIOFactory(host='192.168.1.3') | ||||
|  | ||||
| th_1 = TrafficHat()  # traffic hat using local pins | ||||
| gpiozero.Device._set_pin_factory(PiGPIOFactory(host='192.168.1.3')) | ||||
| th_2 = TrafficHat()  # traffic hat on 192.168.1.3 using remote pins | ||||
| th_2 = TrafficHat(pin_factory=remote_factory)  # traffic hat on 192.168.1.3 using remote pins | ||||
|   | ||||
| @@ -12,8 +12,8 @@ documentation page. | ||||
|  | ||||
| One of the pin libraries supported, `pigpio`_, provides the ability to control | ||||
| GPIO pins remotely over the network, which means you can use GPIO Zero to | ||||
| control devices connected to a Raspberry Pi on the network. You can do this from | ||||
| another Raspberry Pi, or even from a PC. | ||||
| control devices connected to a Raspberry Pi on the network. You can do this | ||||
| from another Raspberry Pi, or even from a PC. | ||||
|  | ||||
| See the :doc:`recipes_remote_gpio` page for examples on how remote pins can be | ||||
| used. | ||||
| @@ -22,8 +22,8 @@ Preparing the Raspberry Pi | ||||
| ========================== | ||||
|  | ||||
| If you're using Raspbian Jessie (desktop - not Jessie Lite) then you have | ||||
| everything you need to use the remote GPIO feature. If you're using Jessie Lite, | ||||
| or another distribution, you'll need to install pigpio: | ||||
| everything you need to use the remote GPIO feature. If you're using Jessie | ||||
| Lite, or another distribution, you'll need to install pigpio:: | ||||
|  | ||||
| .. code-block:: console | ||||
|  | ||||
| @@ -182,16 +182,16 @@ If you are running this from a PC (not a Raspberry Pi) with gpiozero and the | ||||
| pigpio Python library installed, this will work with no further configuration. | ||||
| However, if you are running this from a Raspberry Pi, you will also need to | ||||
| ensure the default pin factory is set to ``PiGPIOPin``. If ``RPi.GPIO`` is | ||||
| installed, this will be selected as the default pin factory, so either uninstall | ||||
| it, or use another environment variable to set it to ``PiGPIOPin``: | ||||
| installed, this will be selected as the default pin factory, so either | ||||
| uninstall it, or use another environment variable to set it to ``PiGPIOPin``: | ||||
|  | ||||
| .. code-block:: console | ||||
|  | ||||
|     $ GPIOZERO_PIN_FACTORY=pigpio PIGPIO_ADDR=192.168.1.3 python3 hello.py | ||||
|  | ||||
| This usage will set the pin factory to :class:`PiGPIOPin` with a default host of | ||||
| ``192.168.1.3``. The pin factory can be changed inline in the code, as seen in | ||||
| the following sections. | ||||
| This usage will set the pin factory to :class:`PiGPIOFactory` with a default | ||||
| host of ``192.168.1.3``. The pin factory can be changed inline in the code, as | ||||
| seen in the following sections. | ||||
|  | ||||
| With this usage, you can write gpiozero code like you would on a Raspberry Pi, | ||||
| with no modifications needed. For example: | ||||
| @@ -218,9 +218,9 @@ Pin objects | ||||
| =========== | ||||
|  | ||||
| An alternative (or additional) method of configuring gpiozero objects to use | ||||
| remote pins is to create instances of :class:PiGPIOPin objects, and | ||||
| instantiating device objects with those pin objects, rather than just numbers. | ||||
| For example, with no environment variables set: | ||||
| remote pins is to create instances of :class:`PiGPIOFactory` objects, and use | ||||
| them when instantiating device objects. For example, with no environment | ||||
| variables set: | ||||
|  | ||||
| .. literalinclude:: examples/led_remote_1.py | ||||
|  | ||||
| @@ -230,8 +230,8 @@ This allows devices on multiple Raspberry Pis to be used in the same script: | ||||
|  | ||||
| You can, of course, continue to create gpiozero device objects as normal, and | ||||
| create others using remote pins. For example, if run on a Raspberry Pi, the | ||||
| following script will flash an LED on the host Pi, and also on another Pi on the | ||||
| network: | ||||
| following script will flash an LED on the host Pi, and also on another Pi on | ||||
| the network: | ||||
|  | ||||
| .. literalinclude:: examples/led_remote_3.py | ||||
|  | ||||
| @@ -249,7 +249,8 @@ Note that these examples use the :class:`LED` class, which takes a ``pin`` | ||||
| argument to initialise. Some classes, particularly those representing HATs and | ||||
| other add-on boards, do not require their pin numbers to be specified. However, | ||||
| it is still possible to use remote pins with these devices, either using | ||||
| environment variables, or by using :meth:`~Device._set_pin_factory`: | ||||
| environment variables, :attr:`Device.pin_factory`, or the ``pin_factory`` | ||||
| keyword argument: | ||||
|  | ||||
| .. literalinclude:: examples/traffichat_remote_1.py | ||||
|  | ||||
| @@ -299,10 +300,10 @@ from the computer, referencing the host by its hostname, like so: | ||||
|  | ||||
| .. note:: | ||||
|  | ||||
|     When running code directly on a Raspberry Pi, any pin type can be used | ||||
|     When running code directly on a Raspberry Pi, any pin factory can be used | ||||
|     (assuming the relevant library is installed), but when a device is used | ||||
|     remotely, only :class:`PiGPIOPin` can be used, as pigpio is the only pin | ||||
|     library which supports remote GPIO. | ||||
|     remotely, only :class:`PiGPIOFactory` can be used, as pigpio is the only | ||||
|     pin library which supports remote GPIO. | ||||
|  | ||||
|  | ||||
| .. _RPi.GPIO: https://pypi.python.org/pypi/RPi.GPIO | ||||
|   | ||||
		Reference in New Issue
	
	Block a user