【マイクロビット応用】[4.1] プラモの飛行機のプロペラのプログラム:回転が徐々に遅くなって止まるバージョン

マイクロビット

 プロペラのプログラムの改良版デース。

 プロペラを止めるときに、徐々に回転が遅くなっていくのですね。

 赤い部分が変更した箇所です。

  • 1行目 from microbit import *
  • 2行目 
  • 3行目 STATE_STOP = 0
  • 4行目 STATE_CELL_MOTOR = 1
  • 5行目 STATE_ENGINE = 2
  • 6行目 STATE_STOPPING =3
  • 7行目
  • 8行目 RPM_STOP = 0
  • 9行目 RPM_CELL = 350
  • 10行目 RPM_ENGINE = 950
  • 11行目 D_RPM = 100
  • 12行目
  • 13行目 def StateStop():
  • 14行目  nextState = STATE_STOP
  • 15行目  display.show(‘S’)
  • 16行目  pin1.write_analog(RPM_STOP)
  • 17行目  pin13.write_digital(0)
  • 18行目  while True:
  • 19行目   if button_a.get_presses():
  • 20行目    nextState = STATE_CELL_MOTOR
  • 21行目    break
  • 22行目   if button_b.get_presses():
  • 23行目    nextState = STATE_STOP
  • 24行目 return nextState
  • 25行目
  • 26行目 def StateCellMotor():
  • 27行目  nextState = STATE_CELL_MOTOR
  • 28行目  display.show(‘C’)
  • 29行目  pin1.write_analog(RPM_CELL)
  • 30行目  pin13.write_digital(1)
  • 31行目  while True:
  • 32行目   if button_a.get_presses():
  • 33行目    nextState = STATE_ENGINE
  • 34行目    break
  • 35行目   if button_b.get_presses():
  • 36行目    nextState = STATE_STOP
  • 37行目    break
  • 38行目 return nextState
  • 39行目
  • 40行目 def StateEngine():
  • 41行目  nextState = STATE_ENGINE
  • 42行目  display.show(‘E’)
  • 43行目  pin1.write_analog(RPM_ENGINE)
  • 44行目  pin13.write_digital(1)
  • 45行目  while True:
  • 46行目   if button_a.get_presses():
  • 47行目    nextState = STATE_ENGINE
  • 48行目   if button_b.get_presses():
  • 49行目    nextState = STATE_STOPPING
  • 50行目    break
  • 51行目 return nextState
  • 52行目
  • 53行目 def StateStopping():
  • 54行目  rpm = RPM_ENGINE
  • 55行目  nextState = STATE_STOPPING
  • 56行目  display.show(‘:’)
  • 57行目  while True:
  • 58行目   if button_a.get_presses():
  • 59行目    nextState = STATE_STOPPING
  • 60行目   if button_b.get_presses():
  • 61行目    nextState = STATE_STOPPING
  • 62行目   rpm = rpm – D_RPM
  • 63行目   if rpm <= RPM_CELL:
  • 64行目    nextState = STATE_STOP
  • 65行目    break
  • 66行目   pin1.write_analog(rpm)
  • 67行目   sleep(300)
  • 68行目 return nextState
  • 69行目
  • 70行目 state = STATE_STOP
  • 71行目
  • 72行目 pin14.write_digital(1)
  • 73行目 pin1.write_analog(RPM_STOP)
  • 74行目 pin12.write_digital(0)
  • 75行目 
  • 76行目 while True:
  • 77行目  if state == STATE_CELL_MOTOR:
  • 78行目   state = StateCellMotor()
  • 79行目  elif state == STATE_ENGINE:
  • 80行目   state = StateEngine()
  • 81行目  elif state == STATE_STOPPING:
  • 82行目   state = StateStopping()
  • 83行目  else:
  • 84行目   state = StateStop()

 プログラムの内容については、以下の記事を見て下サ~イ。

【プログラミング応用】(4)プラモの飛行機のプロペラ(3)回転が徐々に遅くなって止まるように改造

 改造前のプログラムについては、こっちを見てね。

【マイクロビット応用】(2)プラモの飛行機のプロペラ(1)

【マイクロビット応用】(3)プラモの飛行機のプロペラ(2)

【マイクロビット応用】プラモの飛行機のプロペラのプログラム:最初のバージョン

コメント

タイトルとURLをコピーしました