クレーンゲームを作る [Arduino]
Arduinoを使用して簡易的なクレーンゲームを作ってみました。
毎度、作りは粗いですが、仕組みはこんな感じで良いと思います。
今回のクレーンゲームは上下の移動のみですが、プーリー(滑車)の部分に車輪(タイヤ)をつけて上下左右に動けるようにするとゲームセンターにあるような本格的なゲームになります。
使用部品・材料
総額で約5,563円です。(Arduino本体の値段を除く)
部品/材料 | 値段 | 備考 |
---|---|---|
サンハヤト SAD-101 ニューブレッドボード (2個) | ¥1000 | Amazon.com |
モータードライバ(TA7291P) | ¥150 | 秋月電子の通販コード(I-02001) |
マイクロサーボ SG92R (2個) | ¥1000 | トルク:2.5kgf/cm 秋月電子の通販コード(M-08914) |
タミヤ 楽しい工作シリーズ No.121 プーリーユニットセット (70121) | ¥524 | このプーリー(滑車)はモーターを使用。 Amazon.com |
タミヤ 楽しい工作シリーズ No.157 ユニバーサルプレート 2枚セット (70157) | ¥468 | Amazon.com |
タミヤ 楽しい工作シリーズ No.143 ユニバーサルアームセット (70143) | ¥798 | Amazon.com |
タクトスイッチ (5個) | ¥50 | 秋月電子の通販コード(P-03647) |
ブレッドボード・ジャンパーワイヤ(オス-メス) 15cm(青) (10本入) (3個) | ¥660 | サーボのコード延長用に使用。(長いジャンパワイヤーを自作してもOK) 秋月電子の通販コード(C-08934) |
結束バンド 170本入り白色 10cm(4inch) | ¥100 | 小さくて細いもの。100円ショップ(ダイソー) |
3M スコッチ はがせる両面テープ 強力 薄手 12mm×15m SRE-12 | ¥483 | 強力ではがせる両面テープです。 Amazon.com |
電解コンデンサー 470μF16V105℃(ルビコンWXA) (3個) | ¥30 | 電圧安定用。他のでも良い。 秋月電子の通販コード(P-08426) |
カーボン抵抗器 | 数円 | 10kΩ(5個)を使用。 |
電池ボックス 単3×3本 リード線・フタ・スイッチ付 | ¥90 | モーター用。 秋月電子の通販コード(P-02666) |
コネクタ付コード(みの虫×ジャンパーワイヤ) | ¥110 | 電池ボックス用。 秋月電子の通販コード(C-08916) |
単3電池 3本 | ¥100 | モーター用。 100円ショップ |
マスキングテープ | 任意 | ユニバーサルプレートをこのテープで机などに取り付けます。マスキングテープなので後から綺麗に剥がせます。![]() ホームセンター |
ダンボール | 無料 | 薄くて丈夫なダンボール。 私はAmazon.comで送られてくるダンボールの中にある中敷を使用しました。100円ショップの収納ボックス(紙)などでもOK。 |
※モータードライバの詳細は表内のリンク先をご覧ください。
モーターにはリード線がありませんので「耐熱電子ワイヤー」(P-06756)や片側をカットした「ジャンパーワイヤー」を半田付けして下さい。その2本を繋ぐ場合は2本のリード線をつなぐをご参考にして下さい。

写真





ダンボールのパーツサイズ
ダンボールの各パーツのサイズです。(目安)
部位 | サイズ(横x縦) |
---|---|
胴(1枚) | 9.5cm x 6.5cm |
※「緻密な計算」で算出したサイズではありません。
サーボの初期設定
組み立てる前に各サーボの初期値をArduinoで設定しておきます。
部位 | 角度 |
---|---|
右(12pin) | 90度 |
左(13pin) | 90度 |
次のように2つのサーボの初期角度を1つ1つ設定していきます。
#include <Servo.h> Servo myServo; void setup() { // 右(12pin)のサーボの角度を90度にする myServo.attach(12); myServo.write(90); }
この初期設定が終わってからサーボホーン(羽)を取り付けてください。
配線図
クレーンは5つのボタンで操作します。

各ボタンの動作
ピン番号 | 動作 |
---|---|
5 | ハンドを下げる |
4 | ハンドを持ち上げる |
3 | ハンドを広げる |
2 | ハンドでつかむ |
1 | ハンドの初期化 |
スケッチ(プログラム)
サーボの角度は各人の環境で調整して下さい。
#include <Servo.h> Servo myServoL; Servo myServoR; void setup() { pinMode(7, OUTPUT); pinMode(8, OUTPUT); myServoR.attach(12); myServoL.attach(13); // サーボの位置を初期化する myServoL.write(90); myServoR.write(90); delay(2000); } void loop() { // ハンドを下げる if (digitalRead(5) == HIGH) { digitalWrite(7, LOW); digitalWrite(8, HIGH); delay(100); } // ハンドを持ち上げる if (digitalRead(4) == HIGH) { digitalWrite(7, HIGH); digitalWrite(8, LOW); delay(500); } digitalWrite(7, LOW); digitalWrite(8, LOW); // ハンドを広げる if (digitalRead(3) == HIGH) { myServoR.write(110); delay(500); myServoL.write(65); delay(500); } // ハンドでつかむ if (digitalRead(2) == HIGH) { myServoL.write(95); delay(500); myServoR.write(80); delay(500); } // ハンドの初期化 if (digitalRead(1) == HIGH) { myServoL.write(90); delay(500); myServoR.write(90); delay(500); } }
スポンサーリンク
掲示板
ArduinoやRaspberry Piなどの電子工作の掲示板を作成しました。質問やわからない事は電子工作 (Arduino・ラズパイ等)でユーザー同士で情報を共有して下さい。
関連記事
公開日:2017年12月21日
記事NO:02623