プロペラのプログラムの改良版デース。
プロペラを止めるときに、徐々に回転が遅くなっていくのですね。
赤い部分が変更した箇所です。
- 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)回転が徐々に遅くなって止まるように改造
改造前のプログラムについては、こっちを見てね。
コメント