import time, tty, sys, threading from ev3dev2 import list_devices from ev3dev2.motor import LargeMotor, OUTPUT_A, SpeedPercent, SpeedDPS, MoveTank from ev3dev2.sensor import INPUT_1 # some keyboard control setup and vars tty.setcbreak(sys.stdin) x = 0 # set here to make global # setup motor mL = LargeMotor(OUTPUT_A) time.sleep(0.5) mL.reset() time.sleep(2) mL.duty_cycle_sp = 0 mLDtyMax = 16 mL.stop_action = 'coast' mL.polarity = 'inversed' mL.position = 0 StallDetected = False mLlastPos = 0 i = 0 # Turn motor on with run_direct and duty_cycle_sp of '0' mL.run_direct() def keyboardInput(name): while (True):
# - this is the initial code testing the Left Right PiCam shuttle mechanism # designed to simulate a Stereo camera # import time, tty, sys from ev3dev2.motor import LargeMotor, OUTPUT_D, SpeedPercent, SpeedDPS, MoveTank from ev3dev2.sensor import INPUT_1 tty.setcbreak(sys.stdin) mShuttle = LargeMotor(OUTPUT_D) time.sleep(0.5) mShuttle.reset() time.sleep(2) mShuttle.duty_cycle_sp = 0 mShuttleDtyMax = 22 mShuttle.stop_action = 'coast' mShuttle.polarity = 'inversed' mShuttle.position = 0 prev_mShuttle_pos = 0 # Turn motor on with run_direct and duty_cycle_sp of '0' mShuttle.run_direct() print ("Ready for keyboard commands...") while (True): x = ord(sys.stdin.read(1)) if x == 120: # x key pushed - exit
# 2/22/2020 Ron King Port from MindSensors Pistorms version # 3/1/2020 Ron King Fixed issues in speed change control logic and sequencing # 3/22/2020 Ron King v2.0 - change from regulated 'on', 'speed' to duty_cycle # Removed all traces of Pistorms version (issues and comments) import time, tty, sys from ev3dev2.motor import LargeMotor, OUTPUT_C, OUTPUT_D, SpeedPercent, SpeedDPS, MoveTank from ev3dev2.sensor import INPUT_1 tty.setcbreak(sys.stdin) mLift = LargeMotor(OUTPUT_C) time.sleep(0.5) mLift.reset() time.sleep(2) mLift.duty_cycle_sp = 0 mLiftDtyMax = 36 mLift.stop_action = 'coast' mLift.polarity = 'inversed' mLift.position = 0 mGrab = LargeMotor(OUTPUT_D) time.sleep(0.5) mGrab.reset() time.sleep(2) mGrab.duty_cycle_sp = 0 mGrabDtyMax = 36 mGrab.stop_action = 'coast' mGrab.polarity = 'inversed' mGrab.position = 0
import time, tty, sys, threading from ev3dev2 import list_devices from ev3dev2.motor import LargeMotor, OUTPUT_A, SpeedPercent, SpeedDPS, MoveTank from ev3dev2.sensor import INPUT_1 # some keyboard control setup and vars tty.setcbreak(sys.stdin) x = 0 # set here to make global # setup motor mL = LargeMotor(OUTPUT_A) time.sleep(0.5) mL.reset() time.sleep(2) mL.duty_cycle_sp = 0 mLDtyMax = 12 mL.stop_action = 'coast' mL.polarity = 'inversed' mL.position = 0 StallDetected = False mLlastPos = 0 mLposU = 0 mLposJ = 0 i = 0 # Turn motor on with run_direct and duty_cycle_sp of '0' mL.run_direct()
from smbus import SMBus from ev3dev2.display import Display from ev3dev2.motor import LargeMotor, SpeedPercent, OUTPUT_A, OUTPUT_D from ev3dev2.sensor import INPUT_1 from ev3dev2.port import LegoPort from ev3dev2.button import Button # Brick Variables left_motor = LargeMotor(OUTPUT_D) right_motor = LargeMotor(OUTPUT_A) # Start program target_duty_cycle = 75 correction_factor = 0.3 left_motor.duty_cycle_sp = target_duty_cycle right_motor.duty_cycle_sp = target_duty_cycle left_motor.run_direct() right_motor.run_direct() for i in range(100): left_degrees = left_motor.degrees right_degrees = right_motor.degrees steering = (left_degrees - right_degrees) * correction_factor left_duty = (target_duty_cycle - steering/2.0) if left_duty > 100: left_duty = 100 elif left_duty < -100: left_duty = -100 left_motor.duty_cycle_sp = left_duty
pos_rel = 0 eprint("dt = " + str(dt)) nowError = False preError = False error_cont = 0 error = 0 angle = 0 # (deg) rate = 0 # (deg/s) time.sleep(0.01) media_angle = offset() # (deg) motorLeft.reset() motorRight.reset() motorLeft.duty_cycle_sp = 0 motorRight.duty_cycle_sp = 0 motorLeft.run_direct() motorRight.run_direct() vel = 0 pos = 0 avance = 0 max_acel = 0 extra_pwr = 0 tiempo = time.time() t1 = [] t2 = [] t3 = []
import sys import time # TODO: implement fast read/write from ev3dev2.motor import LargeMotor, OUTPUT_A, OUTPUT_D from ev3dev2.sensor.lego import GyroSensor, TouchSensor touch = TouchSensor() gyro = GyroSensor() gyro.mode = gyro.MODE_GYRO_G_A offset = 0 left = LargeMotor(OUTPUT_D) left.duty_cycle_sp = 0 left.command = left.COMMAND_RUN_DIRECT right = LargeMotor(OUTPUT_A) right.duty_cycle_sp = 0 right.command = right.COMMAND_RUN_DIRECT alpha = 0.8 dc_gain = 1.0 p_gain = 1 i_gain = 0.029 d_gain = 0.049 #dt = 30 / 1000 dt = 250 / 1000