def task_time(t, mot, velo, f): global thread_end global thread_started global threads_num global result w.cmpc(mot) w.motor(mot, velo) # lock.acquire() # threads_num += 1 # lock.release() thread_started = True print("wait {}s ...".format(t)) while t > 0: # wait till expected time print(t), sleep(1) t -= 1 w.freeze(mot) print("\nstopping ...") thread_end = True # lock.acquire() # threads_num -= 1 # lock.release() result = "motor {}\nruntime: {}\nmotor ticks: {}\nturns: {}".format( mot, runtime, w.gmpc(mot), f.get_result())
def task_rotate(turns, mot, velo, f): global thread_end global thread_started global threads_num global result w.cmpc(mot) w.motor(mot, velo) # lock.acquire() # threads_num += 1 # lock.release() thread_started = True print("wait {} turns ...".format(turns)) #data = [] last_val = f.get_result() while last_val < turns: # wait till expected turns val = f.get_result() if val > last_val: print("%2.1f\t%i" % (last_val, w.gmpc(mot))) last_val = val w.freeze(mot) print("\nstopping ...") thread_end = True # lock.acquire() # threads_num -= 1 # lock.release() result = "motor {}\nturns: {}\nmotor ticks: {}".format( mot, f.get_result(), w.gmpc(mot))
def DEBUGwithWait(): freeze(c.LMOTOR) freeze(c.RMOTOR) #print ('Program stop for DEBUG\nSeconds: ', seconds() - startTime) ao() msleep(5000) exit(0)
def rotate_spinner(rotations, speed): full_rotation = 1400.0 start = get_motor_position_counter(SPINNER) motor_power(SPINNER, speed) tries_remaining = 3 previous = 0 counter = 0 while abs(get_motor_position_counter(SPINNER) - start) < abs( full_rotation * rotations) and tries_remaining > 0: if counter >= 10: counter = 0 if tries_remaining > 0: motor_power(SPINNER, int(-speed)) msleep(300) motor_power(SPINNER, speed) tries_remaining -= 1 elif abs(get_motor_position_counter(SPINNER)) == previous: counter += 1 else: counter = 0 previous = abs(get_motor_position_counter(SPINNER)) msleep(10) print "rotated {} out of {}".format( get_motor_position_counter(SPINNER) - start, abs(full_rotation * rotations)) freeze(SPINNER)
def DEBUG_WITH_WAIT(): freeze(c.LMOTOR) freeze(c.RMOTOR) ao() msleep(5000) display('Program stop for DEBUG\nSeconds: {}'.format(seconds() - c.startTime)) exit(0)
def DEBUG(): freeze(c.LMOTOR) freeze(c.RMOTOR) ao() display('Program stop for DEBUG\nSeconds: {}'.format(seconds() - c.startTime)) display("NOTE: {}\t{}".format(seconds(), c.startTime)) exit(0)
def rotate_until_stalled(speed): counter = 0 motor_power(SPINNER, speed) previous = abs(get_motor_position_counter(SPINNER)) while counter < 10: if abs(get_motor_position_counter(SPINNER)) == previous: counter += 1 else: counter = 0 previous = abs(get_motor_position_counter(SPINNER)) msleep(10) freeze(SPINNER) clear_motor_position_counter(SPINNER)
def task_rotate(turns, mot, velo, sens): global result w.cmpc(mot) w.motor(mot, velo) print("wait {} turns ...".format(turns)) sens.update() last_val = sens.get_result() while last_val < turns: # wait till expected turns sens.update() val = sens.get_result() if val > last_val: print(last_val), last_val = val w.freeze(mot) print("\nstopping ...") result = "motor {}\nturns: {}\nmotor ticks: {}".format( mot, sens.get_result(), w.gmpc(mot))
def freeze_motors(): # Locks the motors to reduce drift. freeze(LMOTOR) freeze(RMOTOR)
def shutdown(): freeze(c.LMOTOR) freeze(c.RMOTOR) ao() display('Program stopped\nSeconds: {}'.format(seconds() - c.startTime)) exit(0)
def DEBUG(): freeze(c.LMOTOR) freeze(c.RMOTOR) print('Program stop for DEBUG\nSeconds: ', seconds() - c.startTime) ao() exit(0)
def rotate_to_safe(power): full_rotation = 1400.0 motor_power(SPINNER, power) while abs(get_motor_position_counter(SPINNER)) % full_rotation > 50: pass freeze(SPINNER)
def DEBUGwithWait(): freeze(c.LMOTOR) freeze(c.RMOTOR) ao() print 'Program stop for DEBUG\nSeconds: ', seconds() - c.startTime msleep(5000)