今回はマイクロビットを二つ使うので、プログラムも二種類ありますよ。
最初はプロペラを動かす側のプログラムです。赤い部分が変更した箇所です。
10行目、11行目で回転数も調整しました。
- 1行目 import radio
- 2行目 from microbit import *
- 3行目
- 4行目 STATE_STOP = 0
- 5行目 STATE_CELL_MOTOR = 1
- 6行目 STATE_ENGINE = 2
- 7行目 STATE_STOPPING =3
- 8行目
- 9行目 RPM_STOP = 0
- 10行目 RPM_CELL = 70
- 11行目 RPM_ENGINE = 400
- 12行目 D_RPM = 100
- 13行目
- 14行目 def UserInput():
- 15行目 data = radio.receive()
- 16行目 if data == ‘a’:
- 17行目 return ‘a’
- 18行目 if data == ‘b’:
- 19行目 return ‘b’
- 20行目 if button_a.get_presses():
- 21行目 return ‘a’
- 22行目 if button_b.get_presses():
- 23行目 return ‘b’
- 24行目 return ‘ ‘
- 25行目
- 26行目 def StateStop():
- 27行目 nextState = STATE_STOP
- 28行目 display.show(‘S’)
- 29行目 pin1.write_analog(RPM_STOP)
- 30行目 pin13.write_digital(0)
- 31行目 while True:
- 32行目 data = UserInput()
- 33行目 if data == ‘a’:
- 34行目 nextState = STATE_CELL_MOTOR
- 35行目 break
- 36行目 return nextState
- 37行目
- 38行目 def StateCellMotor():
- 39行目 nextState = STATE_CELL_MOTOR
- 40行目 display.show(‘C’)
- 41行目 pin1.write_analog(RPM_CELL)
- 42行目 pin13.write_digital(1)
- 43行目 while True:
- 44行目 data = UserInput()
- 45行目 if data == ‘a’:
- 46行目 nextState = STATE_ENGINE
- 47行目 break
- 48行目 if data == ‘b’:
- 49行目 nextState = STATE_STOP
- 50行目 break
- 51行目 return nextState
- 52行目
- 53行目 def StateEngine():
- 54行目 nextState = STATE_ENGINE
- 55行目 display.show(‘E’)
- 56行目 pin1.write_analog(RPM_ENGINE)
- 57行目 pin13.write_digital(1)
- 58行目 while True:
- 59行目 data = UserInput()
- 60行目 if data == ‘b’:
- 61行目 nextState = STATE_STOPPING
- 62行目 break
- 63行目 return nextState
- 64行目
- 65行目 def StateStopping():
- 66行目 rpm = RPM_ENGINE
- 67行目 nextState = STATE_STOPPING
- 68行目 display.show(‘:’)
- 69行目 while True:
- 70行目 data = UserInput()
- 71行目 rpm = rpm – D_RPM
- 72行目 if rpm <= RPM_CELL:
- 73行目 nextState = STATE_STOP
- 74行目 break
- 75行目 pin1.write_analog(rpm)
- 76行目 sleep(300)
- 77行目 return nextState
- 78行目
- 79行目 state = STATE_STOP
- 80行目
- 81行目 pin14.write_digital(1)
- 82行目 pin1.write_analog(RPM_STOP)
- 83行目 pin12.write_digital(0)
- 84行目
- 85行目 radio.on()
- 86行目
- 85行目 while True:
- 86行目 if state == STATE_CELL_MOTOR:
- 87行目 state = StateCellMotor()
- 88行目 elif state == STATE_ENGINE:
- 89行目 state = StateEngine()
- 90行目 elif state == STATE_STOPPING:
- 91行目 state = StateStopping()
- 92行目 else:
- 93行目 state = StateStop()
そして、次はリモコン側デ~ス。
- 1行目 import radio
- 2行目 from microbit import *
- 3行目
- 4行目 radio.on()
- 5行目
- 6行目 while True:
- 7行目 if button_a.get_presses():
- 8行目 radio.send(‘a’)
- 9行目 if button_b.get_presses():
- 10行目 radio.send(‘b’)
プログラムの内容については、以下の記事を見て下サ~イ。
【プログラミング応用】(5)プラモの飛行機のプロペラ(4)無線で操作できるように改造
プロペラの回転数は、以下の記事で調整しました。
【プラモ】ハセガワ1/32「F6F-3/5ヘルキャット」の製作(9)デカール貼り、機体各部の組み立て
改造前のプログラムについては、こっちを見てね。
最初のバージョン
【マイクロビット応用】プラモの飛行機のプロペラのプログラム:最初のバージョン
回転が徐々に遅くなって止まるバージョン
コメント