legoEv3/save/home/robot/button1.py
from ev3dev2.motor import *
from ev3dev2.led import Leds
from ev3dev2.button import *
from datetime import datetime, timedelta
import time
import threading
from ev3dev2._platform.ev3 import *
from queue import Queue, Empty
import sys
# print('EVDEV_DEVICE_NAME', EVDEV_DEVICE_NAME)
# for name, mod in sys.modules.items():
# print(name, '-->', mod)
print("start t1.py ... ")
print("sys.version", sys.version, "time=" + str(datetime.now()))
class ButtonThr(threading.Thread):
""" thread ev3 brick buttons """
running = True;
def __init__(self):
threading.Thread.__init__(self)
self.but = Button()
self.button_pressed = []
Button.evdev_device_name = 'EV3 Brick Buttons' # Constant in Button has wrong case, still aber updgrade ... !!!!
def run(self):
self.buttons_pressed = self.but.buttons_pressed
print(str(datetime.now()) + " button start " + repr(self.buttons_pressed))
Button.on_change = (lambda a, b: print(str(datetime.now()) + " button" + repr(self.but.buttons_pressed), 'a', repr(a), 'b', repr(b)))
for event in self.but.evdev_device.read_loop():
self.buttons_pressed = self.but.buttons_pressed
print(str(datetime.now()) + " button" + repr(self.buttons_pressed), 'event', repr(event))
if 'left' in self.buttons_pressed:
leds.set_color("LEFT", "RED")
else:
leds.set_color("LEFT", "BLACK")
if 'right' in self.buttons_pressed:
leds.set_color("RIGHT", "GREEN")
else:
leds.set_color("RIGHT", "BLACK")
if 'up' in self.buttons_pressed:
mA.on_for_rotations(SpeedPercent(25), 5, block=False)
elif 'down' in self.buttons_pressed:
mA.on_for_rotations(SpeedPercent(-25), 5, block=False)
else:
mA.stop()
if 'backspace' in self.buttons_pressed:
break;
print(str(datetime.now()) + " button stop " + repr(self.but.buttons_pressed))
print("platform", get_current_platform())
# print("devices", repr(evdev.list_devices()))
# print("dev 2", repr([evdev.InputDevice(fn).name for fn in evdev.list_devices()]))
but = ButtonThr()
leds = Leds()
mA = MediumMotor(OUTPUT_A)
but.start()