droidDepotPythonControl/droid_commands.py
hornet 8e02ed1a8b
feature/button_input (#2)
* Added keyboard functionality for existing features

* Droid won't repeat most recent noise

* Starting button input

* bcm

* async

* no args

* no arglist

* asycnio

* lgpio

* asyncio

* wait

* async

* asycn

* remove wait

* added keyboard interrup

* params

* test

* got callbacks working

* added keyboard control update

* droid commands have movement

* i do not honestly know what is different

* added movement stub

* added movement support?

* string

* format string

* trying less space

* added global

* manual control

* select_speed

* stop

* droid running

* stupid multiple naming

* play sound fixed

* testing forward functionality

* callback

* move

* rotate head

* typo
2022-10-19 22:11:43 -04:00

89 lines
2.0 KiB
Python

import droid
import asyncio
from time import sleep
from random import randrange
d = ""
lastSound = -1
async def play_sound():
global lastSound
global d
sound = lastSound
while sound == lastSound:
sound = randrange(0,5)
lastSound = sound
while d is None:
sleep(0.1)
await d.play_sound(f"0{sound}","00")
async def play_specific_sound(bank, sound):
global d
await d.play_sound( sound_id = sound, bank_id = bank)
async def move_droid(forward=False, backward=False, left=False, right=False):
l = droid.Directions.FORWARD
r = droid.Directions.FORWARD
global d
if forward:
l = droid.Directions.FORWARD
r = droid.Directions.FORWARD
if backward:
l = droid.Directions.BACKWARD
r = droid.Directions.BACKWARD
if left:
# spin left
l = droid.Directions.BACKWARD
r = droid.Directions.FORWARD
if right:
# spin right
l = droid.Directions.FORWARD
r = droid.Directions.BACKWARD
await d.move_motors(l, droid.Motors.LEFT, "FF")
await d.move_motors(r, droid.Motors.RIGHT,"FF")
async def move_manually(direction, motor, strength):
global d
await d.move_motors(direction, motor, strength)
async def move_stop():
global d
await move_manually(droid.Directions.FORWARD, droid.Motors.LEFT, "00")
await move_manually(droid.Directions.FORWARD, droid.Motors.RIGHT, "00")
async def rotate_head(direction):
global d
await d.move_motors(direction, droid.Motors.HEAD, "FF")
# eventually should we stop this call so we don't waste a bunch of battery?
async def stop_rotate_head():
global d
await d.move_motors(droid.Directions.ROTATE_LEFT, droid.Motors.HEAD, "00")
async def start_droid():
"""
This function should be in a try loop
"""
global d
d = await droid.discoverDroid(retry=True)
await d.connect()
async def stop_droid():
global d
await d.disconnect()