Skip to content

Joystick Examples

Local Controller Query

examples/joystick/local_query.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import time

from kevinbotlib.joystick import LocalJoystickIdentifiers

while True:
    count = LocalJoystickIdentifiers.get_count()
    names = LocalJoystickIdentifiers.get_names()
    guids = LocalJoystickIdentifiers.get_guids()
    print(f"{count} joysticks present")
    print(f"Joystick Names: {names}")
    print(f"Joystick GUIDs: {guids}")
    time.sleep(1)

Local Raw Polling

examples/joystick/local_polling.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import time

from kevinbotlib.joystick import RawLocalJoystickDevice
from kevinbotlib.logger import Logger, LoggerConfiguration

logger = Logger()
logger.configure(LoggerConfiguration())

controller = RawLocalJoystickDevice(0)
controller.start_polling()

try:
    while True:
        print("Buttons:", controller.get_buttons())
        print("POV:", controller.get_pov_direction())
        print("Axes:", controller.get_axes())
        time.sleep(0.1)
except KeyboardInterrupt:
    controller.stop()

Local Named Polling

examples/joystick/local_named_polling.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import time

from kevinbotlib.joystick import LocalNamedController
from kevinbotlib.logger import Logger, LoggerConfiguration

logger = Logger()
logger.configure(LoggerConfiguration())

controller = LocalNamedController(0)
controller.start_polling()

try:
    while True:
        print("Held buttons:", [btn.name for btn in controller.get_buttons()])
        print("POV Direction:", controller.get_pov_direction())
        print("Trigger Values:", controller.get_triggers())
        print("Left Stick Values:", controller.get_left_stick())
        print("Right Stick Values:", controller.get_right_stick())
        time.sleep(0.1)
except KeyboardInterrupt:
    controller.stop()

Sending Joystick Data with a RedisCommClient

examples/joystick/sender.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import time

from kevinbotlib.comm import RedisCommClient
from kevinbotlib.joystick import JoystickSender, LocalNamedController
from kevinbotlib.logger import Logger, LoggerConfiguration

logger = Logger()
logger.configure(LoggerConfiguration())

controller = LocalNamedController(
    0
)  # it doesn't matter what type of controller is being sent - all values will be converted to raw anyway
controller.start_polling()

client = RedisCommClient()
client.connect()
client.wait_until_connected()

sender = JoystickSender(client, controller, "joysticks/0")
sender.start()

while True:
    time.sleep(1)

Receiving Raw Joystick Data with a RedisCommClient

examples/joystick/rx_raw.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import time

from kevinbotlib.comm import RedisCommClient
from kevinbotlib.joystick import RemoteRawJoystickDevice
from kevinbotlib.logger import Logger, LoggerConfiguration

logger = Logger()
logger.configure(LoggerConfiguration())

client = RedisCommClient()
client.connect()
client.wait_until_connected()

controller = RemoteRawJoystickDevice(client, "joysticks/0")
controller.start_polling()

try:
    while True:
        print("Buttons:", controller.get_buttons())
        print("POV:", controller.get_pov_direction())
        print("Axes:", controller.get_axes())
        print("Connected:", controller.is_connected())
        time.sleep(0.1)
except KeyboardInterrupt:
    controller.stop()

Receiving Named Joystick Data with a RedisCommClient

examples/joystick/rx_named.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import time

from kevinbotlib.comm import RedisCommClient
from kevinbotlib.joystick import RemoteNamedController
from kevinbotlib.logger import Logger, LoggerConfiguration

logger = Logger()
logger.configure(LoggerConfiguration())

client = RedisCommClient()
client.connect()
client.wait_until_connected()

controller = RemoteNamedController(client, "joysticks/0")
controller.start_polling()

try:
    while True:
        print("Buttons:", controller.get_buttons())
        print("POV:", controller.get_pov_direction())
        print("Trigger Values:", controller.get_triggers())
        print("Left Stick Values:", controller.get_left_stick())
        print("Right Stick Values:", controller.get_right_stick())
        print("Connected:", controller.is_connected())
        time.sleep(0.1)
except KeyboardInterrupt:
    controller.stop()