legoEv3/save/home/robot/t1.py

from ev3dev2.motor import *
from ev3dev2.sensor import INPUT_1
from ev3dev2.sensor.lego import TouchSensor
from ev3dev2.led import Leds
from ev3dev.core import Sound
from datetime import datetime
import time
import threading

t0=datetime.now()
print("start t1.py ... ")
print("sys.version", sys.version, "time=" + str(t0))

leds = Leds()
mA = MediumMotor(OUTPUT_A)
out = []
lck = threading.Lock();


class MoPr(threading.Thread):
    stop = False;
    def __init__(self, mo):
        threading.Thread.__init__(self)
        self.mot = mo

    def run(self):
        cL = 0;
        cP = 0;
        lck.acquire()
        out.append(str(datetime.now()) + " motor " + self.mot.address + "begin count_per_rot=" + 
            str(self.mot.count_per_rot) +  " commands=" + repr(self.mot.commands))
        lck.release()
        lPos = "undef"
        while not MoPr.stop:
            cL = cL + 1
            
            time.sleep(0.001)
            lck.acquire()
            if lPos != self.mot.position:
                lPos = self.mot.position  
                cP = cP + 1
                out.append(str(datetime.now()) + " motor " + self.mot.address + " state=" + repr(self.mot.state) +   
                   "position="+str(self.mot.position) + " speed="+str(self.mot.speed) + " cnt="+str(cP)+'/'+str(cL))
            lck.release()

        out.append(str(datetime.now()) + " motor " + self.mot.address + ' end')        

MoPr(mA).start()

for x in range(0, 3):
    Sound.play_song((("A5", 'e'),("C4", 'e'), ('E5', 'h')))
    leds.set_color("LEFT", "GREEN")
    leds.set_color("RIGHT", "RED")
    lck.acquire()
    out.append(str(datetime.now()) + " rotate plus")
    mA.on_for_rotations(SpeedPercent(25), 0.5, block=False)
    lck.release()
    time.sleep(1)
    lck.acquire()
    out.append(str(datetime.now()) + " rotate stop")
    mA.stop()
    lck.release()
 
    Sound.play_song((("A5", 'e'),("C4", 'e'), ('E5', 'h')))
    leds.set_color("LEFT", "RED")
    leds.set_color("RIGHT", "GREEN")
    lck.acquire()
    out.append(str(datetime.now()) + " rotate minus")
    mA.on_for_rotations(SpeedPercent(-25), 0.5, block=False)
    lck.release()
    time.sleep(1)
    out.append(str(datetime.now()) + " rotate stop")
    mA.stop()
leds.set_color("LEFT", "YELLOW")
leds.set_color("RIGHT", "RED")
MoPr.stop = True
for o in out:
    print(o)
Sound.speak('what is going on in t1.py')
leds.set_color("LEFT", "BLACK")
leds.set_color("RIGHT", "BLACK")