[[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)

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS