三鶯重工(サンイン重工)のワンハンドルマスコンをPythonで扱うためのサンプルコード・プロトタイプです。一応動きます
#coding: utf-8 | |
# サンイン重工 OHC-PC01AコントローラからPythonへ繋ぎこむライブラリ | |
import pygame | |
import time | |
class OHC_PC01A: | |
def __init__(self): | |
pygame.init() | |
pygame.joystick.init() | |
self.joy = pygame.joystick.Joystick(0) | |
self.joy.init() | |
# 主幹制御器状態から力行ノッチ・ブレーキノッチ指令に変換する | |
def convertPosToAccelBrake(self, pos): | |
if pos == [1, 0, 0, 1]: | |
# [力行ノッチ, ブレーキノッチ] | |
return [0, 1] | |
if pos == [1, 0, 0, 0]: | |
return [0, 2] | |
if pos == [0, 1, 1, 1]: | |
return [0, 3] | |
if pos == [0, 1, 1, 0]: | |
return [0, 4] | |
if pos == [0, 1, 0, 1]: | |
return [0, 5] | |
if pos == [0, 1, 0, 0]: | |
return [0, 6] | |
if pos == [0, 0, 1, 1]: | |
return [0, 7] | |
if pos == [0, 0, 1, 0]: | |
return [0, 8] | |
if pos == [0, 0, 0, 1]: | |
return [0, 9] | |
if pos == [1, 0, 1, 1]: | |
return [1, 0] | |
if pos == [1, 1, 0, 0]: | |
return [2, 0] | |
if pos == [1, 1, 0, 1]: | |
return [3, 0] | |
if pos == [1, 1, 1, 0]: | |
return [4, 0] | |
if pos == [1, 1, 1, 1]: | |
return [5, 0] | |
return [0,0] | |
# 主幹制御器全体の状態を返す | |
def getStatus(self): | |
pygame.event.get() | |
accel_knotch, brake_knotch = self.convertPosToAccelBrake([ | |
self.joy.get_button(6), | |
self.joy.get_button(7), | |
self.joy.get_button(8), | |
self.joy.get_button(9) | |
]) | |
ax = self.joy.get_axis(1) | |
if ax < 0: | |
way = -1 | |
elif ax == 0.0: | |
way = 0 | |
elif ax > 0: | |
way = 1 | |
return { | |
'accel_knotch': accel_knotch, | |
'brake_knotch': brake_knotch, | |
'way': way, | |
'black': bool(self.joy.get_button(0)), | |
'white': bool(self.joy.get_button(1)), | |
'yellow': bool(self.joy.get_button(2)), | |
} | |
if __name__ == '__main__': | |
m = OHC_PC01A() | |
while True: | |
print(m.getStatus()) | |
time.sleep(0.2) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment