はじめに
この記事は、otamaさんが作成したmicroガタゴッtという作品について説明する記事のその2です。
小学校高学年くらいなら出来る内容だと思いますが、プラレールに穴をあけたりしんちゅう線を曲げたりするため、すこしむずかしいかもしれません。
microガタゴッtとは
maicroガタゴッtは たのしいmicrobitコンテスト2023 にエントリーするために作成されました。
プラレールをハックしてmicrobitをつかって次の4つの機能を追加します。。
①プラレールをリモコン操作する
②駅位置を検知して自動停発車する
③ポイントをリモコンで切り替える
④自動踏切を作る
すべて組み込むとこんな感じに遊べます。
この記事について
この記事では、microガタゴッtに追加する機能③について扱います。
できたもの
ポイントとサーボをしんちゅう線でつなぎ、リモコン操作でプラレールのポイントを切り替えます。
部品表
部品名 | 個数 | 備考 |
---|---|---|
micro:bit | 2 | V1でもV2でもOK |
プラレールポイント | 1 | |
GeekServo 9G Servo-Gray | 1 | なるべく大きい方が良い |
LEGOテクニック | 適量 | サーボを段ボールに固定します |
LEGOテクニック歯車(大) | 1 | |
micro:bit用ワークショップモジュール | 1 | |
φ1しんちゅう線 | 10cm程度 | |
段ボール | 適量 |
必要な工具はこちら
工具名 | 備考 |
---|---|
ニッパー | しんちゅう線を切るのにつかいます |
ラジオペンチ | しんちゅう線を曲げるのにつかいます |
φ1ドリル | しんちゅう線を通す穴を開けます。セットで購入しておくと便利です |
ピンバイス | ドリルを固定するハンドルです |
工作
写真の様に、段ボールの上にサーボとプラレールのポイントパーツを固定します。
サーボには歯車を取付け、歯車とポイントの可動レール(黄色い部品)をしんちゅう線でつなげます。
写真内では、歯車に付けた黒いコネクタパーツと、ポイントの側面にドリルで穴を開けてしんちゅうを通し、折り曲げて固定しています。ポイント側は、青いレールは貫通し、黄色いレールに引っ掛けています。
コーディング
今回、microbit公式のmicropython環境でコーディングしました。
送信機側と受信機側をコーディングしています。受信機側がプラレールに載せる側のmicrobitです
送信機側にはプラレールのリモコン制御用のコードも含まれていますが、このまま使用しても問題ありません。
送信機側、受信機側ともBボタンを押すたび、ポイントのサーボが動きます。
サーボの角度は工作した内容に合わせて調節が必要ですので適宜変更してください。
送信機側microbit
# Imports go at the top
from microbit import *
import radio
display.show(Image.HAPPY)
flag_a = 0
flag_b = 0
radio.on()
radio.config(group=1)
while True:
if button_a.was_pressed():
if flag_a == 0:
flag_a = 1
radio.send('a')
display.show('a')
elif flag_a == 1:
flag_a = 0
radio.send('b')
display.show('b')
if button_b.was_pressed():
if flag_b == 0:
flag_b = 1
radio.send('c')
display.show('c')
elif flag_b == 1:
flag_b = 0
radio.send('d')
display.show('d')
ポイント側microbit
# Imports go at the top
from microbit import *
import radio
radio.config(group=1)
radio.on()
# Code in a 'while True:' loop repeats forever
while True:
if button_a.was_pressed():
display.show('c')
pin0.write_analog(69)
if button_b.was_pressed():
display.show('d')
pin0.write_analog(100)
message = radio.receive()
if message:
display.show(message)
if message == 'c':
pin0.write_analog(69)
if message == 'd':
pin0.write_analog(100)
投稿者の人気記事
-
airpocket
さんが
2023/08/22
に
編集
をしました。
(メッセージ: 初版)
ログインしてコメントを投稿する