工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

ブレッドボードからPCBへパート1-サイモン曰くゲームを作る

コンポーネントと消耗品

>
Arduino UNO
× 1
無はんだブレッドボードフルサイズ
× 1
LED(汎用)
× 4
SparkFunプッシュボタンスイッチ12mm
× 4
ブザー
× 1
ジャンパー線(汎用)
× 12
抵抗10kオーム
× 4
抵抗330オーム
× 4
USB-AからBへのケーブル
× 1

アプリとオンラインサービス

>
Arduino IDE

このプロジェクトについて

はじめに

正しいライトシーケンスに対応するボタンを押してライトのシーケンスをコピーしようとする、古いSimonSaysゲームを見てきました。 Hackster Liveでは、Upverterと呼ばれるPCB設計ツールを紹介しました。これは、PCBを作成して変換するための楽しくてシンプルなプロジェクトです。以下は、ハードウェアとコードを備えたゲーム作成を示す基本的なプロジェクトです。

このプロジェクトシリーズには3つのパートがあります。

  • パート1: サイモン曰くゲームを作る
  • パート2: Upverterを使用してSimonSaysゲームに基づいてPCBを設計する
  • パート3: Upverterで作成したデザインから独自のPCBを粉砕します

このシリーズで学ぶこと

  • 基本的なプロジェクトをブレッドボードにレイアウトする方法
  • UpverterでPCBをレイアウトする方法
  • CNCマシンを使用して独自のPCBを粉砕する方法

ソフトウェア

コードを記述してArduinoにアップロードするためのArduinoIDEがない場合は、ここからオペレーティングシステムの最新バージョンをダウンロードしてください。

ハードウェアのセットアップ

ハードウェアセットアップのインスピレーションとしてSparkfunのInventor’s Kitの例を使用し、少し調整しました。以下のフリッツの図を確認してください。

<図>

<図>

コード

このゲームの楽しいところは、たくさんのバリエーションを持つことができるということです。上で述べたように、ハードウェアセットアップの開始点としてSparkfunの例を使用し、コードを最初から作成しました。独自のコードを書くことに興味がない場合は、以下の私のコードを使用するか、上記の例でいくつかの調整を加えたSparkfunのコードを使用するか、ハードウェアのセットアップで動作するゲーム/コードを言う他のSimonを検索してください。

ゲームの実行中にシリアルモニターで何が起こっているかを確認できるように、詳細なコメントとデバッグ用のシリアル印刷行をコードに含めました。以下のサイモン曰くゲームの動作のビデオをチェックしてください!

サイモンはゲームビデオを言う

*注:このビデオでは、勝つために必要なライトの数を5に設定しました。これはゲームを難しくするために変更できますが、ビデオを比較的短くしたかったです:)

これで、ブレッドボードをPCBに変える準備ができました。ブレッドボードからPCBへのパート2-Upverterを使用したPCBの設計方法を学びます。

コード

  • SimonはArduinoコードを言います
SimonはArduinoコードを言う Arduino
 int ledArray [] ={12、9、5、2}; // ledArray [0]は緑、ledArray [1]は赤、ledArray [2]は黄色、ledArray [3]は青です。 int buttonArray [] ={13、10、6、3}; // buttonArray [0]は緑、buttonArray [1]は赤、buttonArray [2]は黄色、buttonArray [3]は青です。 int pinCount =4; // ledArrayとbuttonArrayの両方が同じpinCountを持っています->これをボタンとledsの両方に使用しますintbuzzer =8; int ledState =0; int gameState =0; #define NUMBERTOWIN 5 //勝つために一致しなければならないライトの数->この数を変更して、ゲームを勝つために多かれ少なかれ挑戦的にすることができますint gameValues [NUMBERTOWIN]; int roundNum =0; unsigned long previousMillis =0; //遅延なしでライトを点滅させるためのゲーム前の状態にこれが必要です->遅延を使用する場合、ボタンを押してゲームを開始すると、unsigned longinterval1 =500に気付かない場合があります。 //まばたきの間の時間にこれが必要//関数を宣言するvoidsetLed(int ledNum); void displayClue(int roundNum); boolean waitForInput(int buttonNum); void setup(){Serial.begin(9600); Serial.println( "setup"); for(int Pin =0; Pin 関数setLed()は、ledNumが0未満の場合、LEDはLOWであると述べていますsetLed(-1); //ラウンド数をゼロに設定して、最初のラウンドから開始しますroundNum =0;遅延(1000); // gameStateを1に設定gameState =1; }} if(gameState ==1){gamePlay(); } if(gameState ==2){//あなたが勝ちます!! -勝利の音を再生し、LED(winDisplay)を3回スクロールした後、表示を1回失って、適切なトランジションを実現します。 //勝つサウンドが再生される前にボタンを押す時間をプレーヤーに与えるための遅延delay(500); wining_sound(); winDisplay(); winDisplay(); winDisplay(); lostDisplay(); Serial.println( "winDisplay"); // pre_game delay(1000);を実行する前に少し遅延します。 // gameStateをゼロにリセットして、pre_game gameState =0を呼び出します。 } if(gameState ==3){//あなたは負けます:(-負けた音とフラッシュLED(loseDisplay)を3回再生して、適切な遷移を行います。; lost_sound(); lostDisplay(); lostDisplay(); lostDisplay(); Serial.println( "loseDisplay"); // pre_gameを実行する前に少し遅延しますdelay(1000); // gameStateをゼロにリセットしてpre_gamegameState =0を呼び出します;}} // pre_gamevoid pre_game(){// LEDが点灯する間に十分な時間が経過したかどうかを確認しますunsignedlong currentMillis =millis(); if(currentMillis-previousMillis> interval1){//十分な時間が経過した場合更新ライトif( ledState ==0){Serial.println( "pre green"); setLed(0); ledState =1;} else if(ledState ==1){Serial.println( "pre red"); setLed(1); ledState =2;} else if(ledState ==2){Serial.println( "pre yellow"); setLed(2); ledState =3;} else if(ledState ==3){Serial.println ( "プレブルー"); setLed(3); ledState =0; } //リセット時間previousMillis =currentMillis; }} //ゲームのプレイ中の関数voidgamePlay(){Serial.println( "gamePlay"); //ゲームの乱数を含む配列をプリロードしますfor(int i =0; i いずれかのボタンが押された場合は、コードの残りの部分に移動しますif(!button0 ||!button1 ||!button2 ||!button3){//二重カウントボタンを押すのを避けるために少し遅延しますdelay( 250); //ボタンが押されたときに対応するLEDを点灯if(buttonNum ==0){digitalWrite(ledArray [0]、HIGH); delay(250); digitalWrite(ledArray [0]、LOW); } else if(buttonNum ==1){digitalWrite(ledArray [1]、HIGH); delay(250); digitalWrite(ledArray [1]、LOW); } else if(buttonNum ==2){digitalWrite(ledArray [2]、HIGH); delay(250); digitalWrite(ledArray [2]、LOW); } else if(buttonNum ==3){digitalWrite(ledArray [3]、HIGH); delay(250); digitalWrite(ledArray [3]、LOW); } //正しいボタンが押されたかどうかを確認if(buttonNum ==0 &&button0 ==0){Serial.println( "0 Pressed"); trueを返します。 } else if(buttonNum ==1 &&button1 ==0){Serial.println( "1 Pressed"); trueを返します。 } else if(buttonNum ==2 &&button2 ==0){Serial.println( "2 Pressed"); trueを返します。 } else if(buttonNum ==3 &&button3 ==0){Serial.println( "3 Pressed"); trueを返します。 } else {falseを返す; }}}} //勝利後-ライトをすばやくスクロールさせるvoidwinDisplay(){digitalWrite(ledArray [0]、HIGH); delay(75); digitalWrite(ledArray [0]、LOW); delay(75); digitalWrite(ledArray); [1]、HIGH); delay(75); digitalWrite(ledArray [1]、LOW); delay(75); digitalWrite(ledArray [2]、HIGH); delay(75); digitalWrite(ledArray [2]、LOW ); delay(75); digitalWrite(ledArray [3]、HIGH); delay(75); digitalWrite(ledArray [3]、LOW); delay(75); digitalWrite(ledArray [2]、HIGH); delay(75 ); digitalWrite(ledArray [2]、LOW); delay(75); digitalWrite(ledArray [1]、HIGH); delay(75); digitalWrite(ledArray [1]、LOW); delay(75); digitalWrite(ledArray); [0]、HIGH); delay(75); digitalWrite(ledArray [0]、LOW); delay(75);} void wining_sound(void){//トーン(ピン番号、周波数-これをオンラインで調べて見つけました必要な音の​​周波数、チューニングの長さ)Serial.println( "buzzer1");トーン(ブザー、294、250); delay(200);トーン(ブザー、294、250); delay(200);トーン(ブザー、294、250); delay(200);トーン(ブザー、392、500); delay(500); Serial.println( "second 392");トーン(ブザー、392、250); delay(200);トーン(ブザー、440、250); delay(200);トーン(ブザー、392、250); delay(200);トーン(ブザー、440、250); delay(200); tone(buzzer、494、500);} void lostDisplay(){digitalWrite(ledArray [0]、HIGH); digitalWrite(ledArray [1]、HIGH); digitalWrite(ledArray [2]、HIGH); digitalWrite(ledArray [3]、HIGH); delay(200); digitalWrite(ledArray [0]、LOW); digitalWrite(ledArray [1]、LOW); digitalWrite(ledArray [2]、LOW); digitalWrite(ledArray [3]、LOW); delay(200);} void lost_sound(void){Serial.println( "losing_sound");トーン(ブザー、98、250); delay(250);トーン(ブザー、93、250); delay(250);トーン(ブザー、87、250); delay(250);} 

回路図

simon_says_fritzing_Yb8EdKPqD4.fzz

製造プロセス

  1. MPU-6050を搭載したArduinoジャイロスコープゲーム
  2. Arduino Digital Dice
  3. DIY 37LEDルーレットゲーム
  4. Arduinoゲームコントローラー
  5. ジョイスティックゲーム
  6. ポータブルレンジ検出器
  7. ピクセルチェイサーゲーム
  8. 銅による電気めっき
  9. NeoMatrix Arduino Pong
  10. 製造業101:航空宇宙産業の一部になる
  11. 4 層 PCB の製造に関与するプロセス – パート 2