Arduino Marble Maze Labyrinth
コンポーネントと消耗品
> ![]() |
| × | 1 | |||
![]() |
| × | 2 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 1 |
必要なツールとマシン
> ![]() |
| |||
|
アプリとオンラインサービス
> ![]() |
|
このプロジェクトについて
Arduinoで制御されるMarbleMazeLabyrinthボードゲームを非常に簡単で楽しく作成する方法を紹介します。そして最良の部分はそれが段ボールから作られていることです。
ゲームのアイデアは、迷路の中を大理石をナビゲートして、ゲームに勝つために最後にポータルに到達することです。
もちろん、このゲームを改善してもっと楽しくするためのアイデアはたくさんあります。たとえば、最後にいくつかのセンサーをプディングしたり、プレイ中にブザーを鳴らしたり、迷路自体にいくつかの穴をつまんだりします。
アイデア
私は電子ゲームに飽きて、物理的なスキルゲームについて検索すると述べたので、ラビリンスを見つけて気に入りました。
ラビリンスとは ?
ラビリンス は、上に穴のある迷路のある箱と鋼のビー玉で構成される物理的なスキルのゲームです。ゲームの目的は、ビー玉をどの穴にも落とさずに、プレイフィールドを傾けて迷路の端に導くことです。ゲームの一部のバージョンは、それぞれがノブで制御される2つの軸を中心に回転する吊り下げられた迷路面を備えています。ゲームの小型ハンドヘルドバージョンが販売されており、ボックスは完全に閉じられ、上部に透明なカバーが付いています。このゲームはスウェーデンのBRIOによって開発され、1946年に最初にリリースされました。
デザイン

このゲームがどのように見えるかを想像するために、sketch upproを使用して独自のラビリンス迷路をデザインし始めました。そして、子供たちも自分の迷路を作り始めるかもしれないので、私はそれに適切なサイズを与えて、それをかなり簡単にするように注意しました。
デザインファイルをダウンロードして、1時間で段ボールから自分のゲームを作ることができます。
ツールと資料
・段ボール3mm
・ホットグルー
・シャープブレードナイフ
・定規
・鉛筆
コンポーネント
Arduino(任意のボードタイプ)
ミニブレッドボード
ジャンパー線
2Xサーボモーター9g
ジョイスティックモジュール
2本のネジとナット12mmx 3mm
形を切り抜く






添付ファイルを印刷し、次の手順に従って段ボールを切り取ります。
1.迷路の底に20cm×20cmの正方形を1つ切り取ります。
2.迷路の側面にある14cm x 16cmの等脚台形を2つ切り取ります。
3.サーボモーター(X軸)用に、これら2つの部品のいずれかに長方形の穴を開けます。
4.もう一方のピースの真ん中に3mmの穴を開けて、反対側(X軸)のサーボシャフトに接触させます。
5.次に、迷路の内部を支えるために、14 cm x 4cmの長方形を4つ切り取る必要があります。
6.もう一方のピースの真ん中に3mmの穴を開けて、反対側(Y軸)のサーボシャフトに接触させます。
7.サーボモーター(Y軸)用の4つの部品の1つに示すように、中央に長方形の穴を開けます。
8.記事の添付ファイルから独自の迷路を選択し、迷路用に12 cm x12cmの正方形を切り取ります。
9.ヒント*紙の迷路を接着してガイドとして使用します。
10.迷路の壁には、1.5 cm x 12cmの長方形を少なくとも8つ切り取る必要があります。次に、適切なサイズで迷路に収まるようにカットする必要があります。
11.ガイドラインに従い、迷路の壁になるようにその場所にピースを接着します。
12.図のようにサーボモーターを所定の位置に接着します。
13.サーボモーターホーンを長方形の部分に接着します。

配線
図のようにサーボとジョイスティックからのワイヤーを接続します
Arduinoピン8からサーボ1の黄色のワイヤー(X軸)
Arduinoピン9からサーボ1の黄色のワイヤー(Y軸)
ブレッドボードへの赤と茶色のワイヤー。
ArduinoピンA0からジョイスティックピンVRx
ArduinoピンA1からジョイスティックピンVRy
ブレッドボードへのジョイスティックVCCおよびGND。
ブレッドボードへのArduino5VおよびGND。
コード
USBケーブルを使用してArduinoボードをPCに接続しました。
ArduinoIEDを開く
コードをコピーして新しいスケッチに貼り付けます
[ツール]メニュー> [ボード]> [アクティブなシリアルポートを選択]をクリックして、シリアルポートの名前を確認します
上部の円形ボタンをクリックして、コードをアップロードします。
メッセージを受け取ったら、準備は完了です。
コード
- ジョイスティックで迷路を制御する
ジョイスティックで迷路を制御する Arduino
#includeServo myServoX; // X軸サーボmyServoYのサーボモーターを定義します。 // Y軸のサーボモーターを定義しますintServoXPin =8; // X軸のpinintを定義しますServoYPin =9; // Y軸のpinintを定義しますServoXHomePos =90; // servosintのホームポジションを設定ServoYHomePos =90; int ServoXPos =103; int ServoYPos =135; int XAxlePin =A0; //ジョイスティックのX軸ピン制御を定義しますA0intYAxlePin =A1; //ジョイスティックのY軸ピンコントロールを定義しますA1intXAxleValue =0; // joystickintの起動値を設定しますYAxleValue =0; int Direction =0; int range =12; // XまたはYの出力範囲movementintcenter =range / 2; //静止位置valueintthreshold =range / 4; //休止しきい値voidsetup(){myServoX.attach(ServoXPin); //サーボXをアタッチしますmyServoY.attach(ServoYPin); //サーボを接続しますYServoXPos =ServoXHomePos; // ServoXPosをホームポジションでstartupServoYPos =ServoYHomePos;として更新します//ホームポジションをstartupmyServoX.write(ServoXPos); myServoY.write(ServoYPos); Serial.begin(9600);} void loop(){XAxleValue =readAxis(XAxlePin); YAxleValue =readAxis(YAxlePin); SerialとしてServoYPosを更新します.print(XAxleValue、DEC); Serial.print( "-"); Serial.println(YAxleValue、DEC); //ジョイスティックの値を確認し、100ミリ秒の遅延でサーボをスムーズに動かしますif(XAxleValue> 0){ServoXPos ++; myServoX.write(ServoXPos); delay(100 *(7-XAxleValue)); } if(XAxleValue <0){ServoXPos--; myServoX.write(ServoXPos); delay(100 *(7 + XAxleValue)); } if(YAxleValue> 0){ServoYPos ++; myServoY.write(ServoYPos); delay(100 *(7-YAxleValue)); } if(YAxleValue <0){ServoYPos--; myServoY.write(ServoYPos); delay(100 *(7 + YAxleValue)); } if(ServoXPos> ServoXHomePos + 20){ServoXPos =ServoXHomePos + 20; } if(ServoXPos ServoYHomePos + 20){ServoYPos =ServoYHomePos + 20; } if(ServoYPos
カスタムパーツとエンクロージャー
回路図

製造プロセス