編集履歴一覧に戻る
LEGOTAROのアイコン画像

LEGOTARO が 2021年02月08日20時52分18秒 に編集

コメント無し

記事種類の変更

+

製作品

本文の変更

### 実際の動き |日本語バージョン|英語バージョン| |---|---|---| |@[youtube](https://www.youtube.com/watch?v=XtYlJCI2JAo) |@[youtube](https://www.youtube.com/watch?v=wVFjX0iXQxY&t=7s)| ### 経緯 コロナ禍でお店に遊びに行きにくいですが、これならお家でクレーンゲームが楽しめます。 夏休みの宿題で作りました。 配線図はFlitzingで初めて描いてみました!!! ほかの作品の配線図も描きたいのですが、パーツがなくてかけないので残念です。 動画の英語バージョンはCoolest Projectに応募するために、英語を教えてもらいながら作りました。 ### 外観 ![完成したところ](https://cdn.discordapp.com/attachments/800373049882574878/807575690026549248/kure.png) 完成図です。 ### 機構(構造) ##### 1.前後左右の機構 ![上から見たところ](https://cdn.discordapp.com/attachments/800373049882574878/807890624338198568/c7a785824b45431c.png) ![前後の機構](https://cdn.discordapp.com/attachments/800373049882574878/807891780636246036/220faa0e7f193e2f.png)] ![下から見たところ](https://cdn.discordapp.com/attachments/800373049882574878/807892850523897866/d0aa31e76da9e2db.png) 前後左右の機構です。 ラダーチェーンを使うことで前後左右に動かしていますが、夏休みの宿題で学校に持っていきたかったので、コンパクトにしようとしたため、可動域はあまり広くありません。 ##### 2.アームを下ろす機構

-

![前から見たところ](https://cdn.discordapp.com/attachments/800373049882574878/807900924869607424/6bc9ec844767231d.png)

+

![前から見たところ](https://cdn.discordapp.com/attachments/800373049882574878/808117668841521202/IMG_20200106_132209.jpg)

タミヤのミニモーターでアームを上下させています。 ミニモーターを左右に動かすためのスライダーはカーテンレールを切って使いました。 ##### 3. アームの機構 ![アームの中身](https://cdn.discordapp.com/attachments/800373049882574878/807898118808272957/e02bfd9ac3528cce.png) ![完成図](https://cdn.discordapp.com/attachments/800373049882574878/807898126101905418/83f56ec37097ff97.png) 3つのサーボモーターを同時に動かすためにPCA9685搭載16チャネル PWM/サーボ ドライバー (I2C接続)を使いました。 ボタンを押してアームの開閉をします。 ### 配線 |前後左右の配線|上下の動き・アームの開閉の配線| |---|---|---| |![](https://cdn.discordapp.com/attachments/800373049882574878/807565324281970728/shuntaromazemotor_.png)|![](https://cdn.discordapp.com/attachments/800373049882574878/807564795687075870/up_down_.png)| ### プログラム #### 前後左右のプログラム ```arduino: int val_ud; int val_lr; void u() { digitalWrite(2, HIGH); digitalWrite(4, LOW); } void d() { digitalWrite(2, LOW); digitalWrite(4, HIGH); } void r() { digitalWrite(7, HIGH); digitalWrite(8, LOW); } void l() { digitalWrite(7, LOW); digitalWrite(8, HIGH); } void s() { digitalWrite(2, LOW); digitalWrite(4, LOW); digitalWrite(7, LOW); digitalWrite(8, LOW); void setup() { Serial.begin(9600); pinMode(2, OUTPUT); pinMode(4, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); } void loop() { val_ud = analogRead(A4); val_lr = analogRead(A5); Serial.println(val_ud); delay(1); Serial.println(val_lr); delay(10); if (val_lr < 300) { l(); delay(1); } else if (val_lr > 800) { r(); delay(1); } else if (val_ud < 300) { u(); delay(1); } else if (val_ud > 800) { d(); delay(1); } else { s(); delay(1); } } ``` #### 上下の動き・アームの開閉 ```arduino int val_ud; #include <Wire.h> #include <PCA9685.h> PCA9685 pwm = PCA9685(0x40); #define SERVOMIN 120 #define SERVOMAX 350 void setup() { pwm.begin(); pwm.setPWMFreq(50); Serial.begin(9600); pinMode(10, OUTPUT); pinMode(11, OUTPUT); pinMode(7, INPUT_PULLUP); pinMode(8, INPUT_PULLUP); } int n = 90; int ch0 = 0; int ch1 = 1; int ch2 = 2; void loop() { val_ud = analogRead(A4); Serial.println(val_ud); delay(200); if (val_ud < 300) { digitalWrite(10, HIGH); digitalWrite(11, LOW); delay(1); } else if (val_ud > 800) { digitalWrite(10, LOW); digitalWrite(11, HIGH); delay(1); } else { digitalWrite(10, LOW); digitalWrite(11, LOW); delay(1); } // servo_write(ch0,n); // n=n-10; // if(n<=40)n=100; // delay(0); if (!digitalRead(7)) { catch1(); } if (!digitalRead(8)) { serv(90); } } void servo_write(int ch, int ang) { ang = map(ang, 40, 100, SERVOMIN, SERVOMAX); pwm.setPWM(ch, 0, ang); delay(100); } void serv(int ang) { ang = map(ang, 40, 100, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, ang); pwm.setPWM(1, 0, ang); pwm.setPWM(2, 0, ang); delay(100); } void catch1() { serv(n); delay(50); serv(85); delay(50); serv(80); delay(50); serv(75); delay(50); serv(70); delay(50); serv(65); delay(50); serv(60); delay(50); serv(55); delay(50); serv(50); delay(50); delay(1500); } } ``` ### 今後やっていきたいこと クレーンゲームにBGMを付けたり、ライトで装飾したりしたいです。 今回は自動で初期位置に戻せなかったので リミットスイッチを使い、自動で初期位置に戻すことができるようにしたいです。 ### 材料  板  制御ボックス(下部)   1、30×15cm・・・2枚   2、30.5×15cm・・・2枚   3、30×30cm・・・3枚   4、30×30㎝(内側をくり抜く)・・・1枚   高さ(柱)   5、2.5×2.5×45cm・・・4本   制御ボックス(上部)   6、7×30cm・・・4枚   Arduino Uno・・・2台  DCモーター・・・大2台(タミヤ)、ミニ1台(タミヤ)、モータードライバー  サーボモーター 3台  モータードライバー(TA77191p)  ラダーチェーン&スプロケットセット(タミヤ)  ユニバーサルプレート   ブレッドボード  ジョイスティック  タクトスイッチ  ジャンパーコード   ### 遊び方   電源を入れる。(上:1カ所、横:3カ所、9ボルト電池をスナップに付ける。)  前後左右のジョイスティック(向かって左)🕹でアームの位置を決める。  赤いボタンでアームを開く。  上下のジョイスティック(向かって右)🕹でカプセルの上にアームを移動させる。  青いボタンでカプセルをつかむ。  上下のジョイスティックで少し上に移動させる。  前後左右でカプセル取り出し口へ移動し、赤いボタンでカプセルを落とす。