From ed12ac19948c4673e67987155e06253f38e78671 Mon Sep 17 00:00:00 2001 From: Ben Nuttall Date: Sun, 8 Jan 2017 15:58:50 +0000 Subject: [PATCH] Add bee-bot / turtle robot example, close #443 --- .../{robot_buttons.py => robot_buttons_1.py} | 0 docs/examples/robot_buttons_2.py | 34 +++++++++++++++++++ docs/recipes.rst | 6 +++- 3 files changed, 39 insertions(+), 1 deletion(-) rename docs/examples/{robot_buttons.py => robot_buttons_1.py} (100%) create mode 100644 docs/examples/robot_buttons_2.py diff --git a/docs/examples/robot_buttons.py b/docs/examples/robot_buttons_1.py similarity index 100% rename from docs/examples/robot_buttons.py rename to docs/examples/robot_buttons_1.py diff --git a/docs/examples/robot_buttons_2.py b/docs/examples/robot_buttons_2.py new file mode 100644 index 0000000..56241f3 --- /dev/null +++ b/docs/examples/robot_buttons_2.py @@ -0,0 +1,34 @@ +from gpiozero import Button, Robot +from time import sleep +from signal import pause + +robot = Robot((17, 18), (22, 23)) + +left = Button(2) +right = Button(3) +forward = Button(4) +backward = Button(5) +go = Button(6) + +instructions = [] + +def add_instruction(btn): + instructions.append({ + left: (-1, 1), + right: (1, -1), + forward: (1, 1), + backward: (-1, -1), + }[btn]) + +def do_instructions(): + instructions.append((0, 0)) + robot.source_delay = 0.5 + robot.source = instructions + sleep(robot.source_delay * len(instructions)) + del instructions[:] + +go.when_pressed = do_instructions +for button in (left, right, forward, backward): + button.when_pressed = add_instruction + +pause() diff --git a/docs/recipes.rst b/docs/recipes.rst index 6ca48d7..5c64dd3 100644 --- a/docs/recipes.rst +++ b/docs/recipes.rst @@ -331,8 +331,12 @@ Button controlled robot Use four GPIO buttons as forward/back/left/right controls for a robot: -.. literalinclude:: examples/robot_buttons.py +.. literalinclude:: examples/robot_buttons_1.py +Alternatively, use four buttons to program the directions and add a fifth +button to process them in turn, like a Bee-Bot or Turtle robot. + +.. literalinclude:: examples/robot_buttons_2.py Keyboard controlled robot =========================