From d91a65bdfd07ee9b18c0974ee10a416ef4371ce8 Mon Sep 17 00:00:00 2001 From: Ben Nuttall Date: Sat, 10 Oct 2015 18:26:02 +0100 Subject: [PATCH] Add button and keyboard robot controller recipes --- docs/recipes.md | 58 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/docs/recipes.md b/docs/recipes.md index e151588..4f5a798 100644 --- a/docs/recipes.md +++ b/docs/recipes.md @@ -360,6 +360,64 @@ for i in range(4): sleep(1) ``` +## Button controlled Robot + +Use four GPIO buttons as forward/back/left/right controls for a robot: + +```python +from gpiozero import RyanteckRobot, Button +from signal import pause + +robot = RyanteckRobot() + +left = Button(26) +right = Button(16) +fw = Button(21) +bw = Button(20) + +fw.when_pressed = robot.forward +fw.when_released = robot.stop + +left.when_pressed = robot.left +left.when_released = robot.stop + +right.when_pressed = robot.right +right.when_released = robot.stop + +bw.when_pressed = robot.backward +bw.when_released = robot.stop + +pause() +``` + +## Keyboard controlled Robot + +Use up/down/left/right keys to control a robot: + +```python +from gpiozero import RyanteckRobot +from evdev import InputDevice, list_devices, ecodes + +robot = RyanteckRobot() + +devices = [InputDevice(device) for device in list_devices()] +keyboard = devices[0] # this may vary + +keypress_actions = { + ecodes.KEY_UP: robot.forward, + ecodes.KEY_DOWN: robot.backward, + ecodes.KEY_LEFT: robot.left, + ecodes.KEY_RIGHT: robot.right, +} + +for event in keyboard.read_loop(): + if event.type == ecodes.EV_KEY: + if event.value == 1: # key down + keypress_actions[event.code]() + if event.value == 0: # key up + robot.stop() +``` + ## Motion Sensor Robot Make a robot drive forward when it detects motion: