コード例 #1
0
def gamepad(q):
    """ gamepad takes a Queue and puts all events on it """
    print "gamepad starting up"
    gp = Gamepad()
    for event in gp.get_events():
        print "gamepad: read {} and queued".format(event)
        q.put(event)
コード例 #2
0
    def __init__(self, grbl):
        self.step_size = 0.1  # mm
        self.max_feedrate = 1000
        self.loop_delay = 0.02

        self.jogging = False
        self.stepping = False
        self.grbl = grbl

        self.gamepad = Gamepad()

        # Feed hold
        self.gamepad.on('l1', lambda *a: grbl.send(b'!'))

        # Resume cycle
        self.gamepad.on('l2', lambda *a: grbl.send(b'~'))

        self.gamepad.on('btn11', self.toggle_stepping)  # left axis btn
        self.gamepad.on('select', lambda *a: grbl.soft_reset())
        self.gamepad.on('start', lambda *a: grbl.unlock())
        self.gamepad.on('dpady', self.on_dpady)

        # zero X-axis work coordinates
        self.gamepad.on('btn2', lambda *a: grbl.set_active_coord_system(x=0))

        # zero Y-axis work coordinates
        self.gamepad.on('btn1',
                        lambda *a: self.grbl.set_active_coord_system(y=0))

        # zero Z-axis work coordinates
        self.gamepad.on('btn3',
                        lambda *a: self.grbl.set_active_coord_system(z=0))
コード例 #3
0
def main():
    gamepad = Gamepad()
    motors = Motors()

    iks = []

    for i in range(4):
        iks.append(DeltaIK())

    controller = ManualController(iks)

    angles = 8 * [0.0]
    kPs = 8 * [0.1]

    frametime = 1.0 / 30.0

    print("Ready.")

    while True:
        try:
            s = time.time()

            if not gamepad.process_events():
                print("Controller disconnected, waiting for reconnect...")

                while not gamepad.reconnect():
                    time.sleep(0.5)

                print("Controller reconnected.")

            if gamepad.is_a_down():
                print("Shutdown button (A) has been pressed, shutting down...")
                break

            pad_y = gamepad.get_left_thumbstick_y()

            controller.step(pad_y, frametime)

            # Map IK leg results to motors
            for i in range(4):
                angles[legMap[i]
                       [0]] = legDirs[i][0] * (iks[i].angle -
                                               (np.pi / 2.0 - iks[i].A))
                angles[legMap[i]
                       [1]] = legDirs[i][1] * (iks[i].angle +
                                               (np.pi / 2.0 - iks[i].A))

            motors.sendCommands(angles, kPs)

            time.sleep(max(0, frametime - (time.time() - s)))
        except Exception as e:
            print(e)
            break

    print("-- Program at End --")
コード例 #4
0
ファイル: cli.py プロジェクト: oralekin/gamepad
def main(args=None):
    """Console script for gamepad."""

    controller = Gamepad()
    controller.watch_all()

    click.echo("Connect a gamepad and start mashing buttons!")

    input("Press ENTER to quit\n\n")

    return 0
コード例 #5
0
ファイル: main.py プロジェクト: matt-duke/Submarine
    def __init__(self):
        super().__init__()

        self.stream = VideoStream()
        self.winId = self.stream.winId()
        self.setCentralWidget(self.stream)

        self.resize(500, 500)

        self.gamepad = Gamepad()

        self.hud = HUD(self)
コード例 #6
0
def main():
    logging.basicConfig(format='%(message)s', level=logging.INFO)

    # read options from rc file
    cfg = rcfile('sky-pointer')
    port = int(cfg.get('port', 10001))
    iface = cfg.get('iface', '0.0.0.0')
    serial = cfg.get('serial', SERIAL_PORT)
    joystick = cfg.get('joystick', JOYSTICK_DEV)

    # override some options with command line arguments
    parser = argparse.ArgumentParser(
        description='Sky-pointing laser controller')
    parser.add_argument('--port',
                        '-p',
                        type=int,
                        default=port,
                        help='Listenging TCP port (default: %d)' % port)
    parser.add_argument('--iface',
                        '-i',
                        default=iface,
                        help='Listenging network interface (default: %s)' %
                        iface)
    parser.add_argument('--serial',
                        '-s',
                        default=serial,
                        help='Serial port (default: %s)' % serial)
    parser.add_argument('--joystick',
                        '-j',
                        default=joystick,
                        help='Joystick device (default: %s)' % joystick)
    args = parser.parse_args()

    ptr = Pointer(args.serial)
    pad = Gamepad(ptr, args.joystick)

    server = Server(ptr, args.iface, args.port)
    logging.info("Server listening on port %d" % args.port)

    pad_thread = threading.Thread(target=pad.loop)
    pad_thread.daemon = True
    pad_thread.start()

    try:
        server.serve_forever()
    except KeyboardInterrupt:
        logging.info("Closing")
コード例 #7
0
ファイル: main.py プロジェクト: wangqiaoli/arduino-quadcopter
 def createGamepad(self):
     if self.gamepad == None:
         print("Connecting gamepad...")
         self.gamepad = Gamepad(0)
         if self.gamepad.enabled():
             self.gamepad.connectButton(0, self.addMinThrottle)
             self.gamepad.connectButton(1, self.removeMinThrottle)
             self.gamepad.connectButton(6, self.stop)
             self.gamepad.connectButton(7, self.start)
             self.gamepad.connectButton(3, self.disableGamepad)
             self.gamepad_timer = PyQt5.QtCore.QTimer()
             self.gamepad_timer.timeout.connect(self.checkGamepad)
             self.setGamepadFrequency()  # This method starts gamepad_timer
         else:
             self.gamepad.close()
             self.gamepad = None
     else:
         print("Gamepad already exists!")
コード例 #8
0
# SPDX-FileCopyrightText: 2021 ladyada for Adafruit Industries
# SPDX-License-Identifier: MIT

import board
import digitalio
import analogio
import usb_hid

from gamepad import Gamepad

gp = Gamepad(usb_hid.devices)

# Create some buttons. The physical buttons are connected
# to ground on one side and these and these pins on the other.
button_pins = (board.D2, board.D3, board.D4, board.D5)

# Map the buttons to button numbers on the Gamepad.
# gamepad_buttons[i] will send that button number when buttons[i]
# is pushed.
gamepad_buttons = (1, 2, 8, 15)

buttons = [digitalio.DigitalInOut(pin) for pin in button_pins]
for button in buttons:
    button.direction = digitalio.Direction.INPUT
    button.pull = digitalio.Pull.UP

# Connect an analog two-axis joystick to A4 and A5.
ax = analogio.AnalogIn(board.A4)
ay = analogio.AnalogIn(board.A5)

コード例 #9
0
"""
Author: Leo Vidarte <http://nerdlabs.com.ar>

This is free software,
you can redistribute it and/or modify it
under the terms of the GPL version 3
as published by the Free Software Foundation.

"""

from gamepad import Gamepad
from serial import Serial

serial = Serial('/dev/ttyUSB0', 9600)
gamepad = Gamepad(serial)


def move(event):
    print 'move', event.state.get_axes()


def move_x(event):
    print 'move-x', event.state.x


def move_y(event):
    print 'move-y', event.state.y


def move_left(event):
    print 'move-left', event.state.x
コード例 #10
0
 def InitializeGamepad(self, request, context):
     client_uuid_str = str(uuid.uuid4())
     print(f"Creating client with uuid {client_uuid_str}")
     self.gamepads[client_uuid_str] = Gamepad(uuid=client_uuid_str)
     return gamepad_pb2.ClientID(client_id=client_uuid_str)
コード例 #11
0
    def __init__(self, root):
        super().__init__()

        self.root = root
        self.root.protocol("WM_DELETE_WINDOW", self.on_closing)

        self.setup_video_frame()

        bottom_frame = Frame(root, relief=RAISED, borderwidth=1)
        bottom_frame.pack(fill=BOTH, expand=True)

        left_analog_frame = Frame(bottom_frame, relief=RAISED, borderwidth=1)
        digital_frame = Frame(bottom_frame,
                              relief=RAISED,
                              borderwidth=1,
                              width=150)
        right_analog_frame = Frame(bottom_frame, relief=RAISED, borderwidth=1)

        left_analog_frame.pack(fill=BOTH, expand=True, side='left')
        digital_frame.pack(fill=BOTH, expand=True, side='left')
        right_analog_frame.pack(fill=BOTH, expand=True, side='left')

        digital_button_wrapper = Frame(digital_frame)
        digital_button_wrapper.pack(fill=NONE)
        digital_button_wrapper.place(relx=.5, rely=.5, anchor="c")

        # Digital buttons
        btn_font = font.Font(weight='bold')
        self.up_button = Button(digital_button_wrapper,
                                text=u'\u2191',
                                font=btn_font)
        self.up_button.pack(side=TOP, padx=5, pady=5)
        self.down_button = Button(digital_button_wrapper,
                                  text=u'\u2193',
                                  font=btn_font)
        self.down_button.pack(side=BOTTOM, padx=5, pady=5)
        self.left_button = Button(digital_button_wrapper,
                                  text=u'\u2190',
                                  font=btn_font)
        self.left_button.pack(side=LEFT, padx=5, pady=5)
        self.right_button = Button(digital_button_wrapper,
                                   text=u'\u2192',
                                   font=btn_font)
        self.right_button.pack(side=RIGHT, padx=5, pady=5)

        # Left analog bar
        self.left_analog = Scale(left_analog_frame, from_=10, to=-10)
        self.left_analog.set(0)
        self.left_analog.pack()
        self.left_analog.place(relx=.5, rely=.5, anchor="c")

        # Right analog bar
        self.right_analog = Scale(right_analog_frame, from_=10, to=-10)
        self.right_analog.set(0)
        self.right_analog.pack()
        self.right_analog.place(relx=.5, rely=.5, anchor="c")

        self.gamepad_thread = Gamepad(self)

        self.orig_color = self.up_button.cget('background')
        self.start_gamepad()