【マイクロビット応用】[5.1] プラモの飛行機のプロペラのプログラム:無線バージョン

マイクロビット

 今回はマイクロビットを二つ使うので、プログラムも二種類ありますよ。

 最初はプロペラを動かす側のプログラムです。赤い部分が変更した箇所です。

 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行目 
  • 行目 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)デカール貼り、機体各部の組み立て

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

最初のバージョン

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

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

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

回転が徐々に遅くなって止まるバージョン

【マイクロビット応用】(4)プラモの飛行機のプロペラ(3)回転が徐々に遅くなって止まるように改造

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

コメント

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