[[2019a/Member]] #!/usr/bin/env python3 from ev3dev.ev3 import * from time import sleep mL = LargeMotor('outD') mR = LargeMotor('outC') mM = MediumMotor('outB') cs = ColorSensor('in3') cs.mode = 'COL-REFLECT' def motor_init(): #モーターをリセット mL.reset() mR.reset() def arm_move(t,y): #ピンポン玉回収用アームを動かす。tにモーターを動かす時間[s]を、yにモーターを動かす速度を入力する。y>0だとアームが上がり、y<0だとアームが下がる。 x = time.time() while time.time() - x < t: mM.run_forever(speed_sp=y) mM.stop() sleep(1) def catch_up(x,t): mM.run_timed(speed_sp=x,time_sp=t,stop_action='hold') sleep(1) def move_forward(t): #時間t[s]だけ前進する x = time.time() while time.time() - x < t: mL.run_forever(speed_sp=-100) mR.run_forever(speed_sp=-100) mL.stop() mR.stop() def move_back(t): #時間t[s]だけ後進する x = time.time() while time.time() - x < t: mL.run_forever(speed_sp=100) mR.run_forever(speed_sp=100) mL.stop() mR.stop() def turn_left(t): #時間t[s]だけ右周りの回転をする x = time.time() while time.time() - x < t: mL.run_forever(speed_sp=100) mR.run_forever(speed_sp=-100) mL.stop() mR.stop() def turn_right(t): #時間t[s]だけ左周りの回転をする x = time.time() while time.time() - x < t: mL.run_forever(speed_sp=-100) mR.run_forever(speed_sp=100) mL.reset() mR.reset() def line_trace_right(t,c): #線の左側に沿って前進する。t[s]でコーナーを判定する時間の長さを指定し、c[cs.calue()]で白と黒の境目の値を指定する。 x = time.time() while time.time() - x < t: if cs.value() > c: mL.run_forever(speed_sp=40) mR.run_forever(speed_sp=-80) x = time.time() else: mL.run_forever(speed_sp=-80) mR.run_forever(speed_sp=40) if time.time() - x >t: mL.stop() mR.stop() def line_trace_left(t,c): #線の右側に沿って前進する。t[s]でコーナーを判定する時間の長さを指定し、c[cs.calue()]で白と黒の境目の値を指定する。 x = time.time() while time.time() - x < t: if cs.value() > c: mL.run_forever(speed_sp=-80) mR.run_forever(speed_sp=40) x = time.time() else: mL.run_forever(speed_sp=40) mR.run_forever(speed_sp=-80) if time.time() - x >t: mL.stop() mR.stop() def change_paper(): #用紙を変更する。片方の用紙からもう片方の用紙に移動する際、通過した黒線の数で行きたい線に行けるようにする。 x = 0 while x < 2: if cs.value() > 50: mL.run_forever(speed_sp=100) mR.run_forever(speed_sp=100) if cs.value() < 50: mL.stop() mR.stop() x = x + 1 if __name__ == '__main__': print(cs.value()) sleep(1) motor_init() sleep(1) line_trace_left(1,40) sleep(1) turn_right(0.57) sleep(1) move_back(4.2) sleep(1) arm_move(2,-300) sleep(1) move_forward(2.1) sleep(1) catch_up(500,500) sleep(1) move_forward(5) sleep(1) turn_right(1) sleep(1) arm_move(1,300) sleep(1) turn_left(3) sleep(1) line_trace_right(1,40) sleep(1) turn_left(0.52) sleep(1) move_forward(7) sleep(1)