三目並べゲーム名刺
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要なツールとマシン
> |
| |||
| ||||
| ||||
|
アプリとオンラインサービス
> |
|
このプロジェクトについて
こんにちは
このチュートリアルでは、訪問/名刺の作り方を紹介します。名刺だけではありません。これは PCB です しかし、通常の名刺と同じように。 EDISON SCIENCE CORNERの名前、ロゴ、ソーシャルメディアアイコン、QRコードを確認できます。 QRコードは私のYouTubeチャンネルにあなたを導きます。しかし反対側には、回路が見えます。これは三目並べです ゲーム回路。三目並べは2人用のゲームです。 XOゲームとも呼ばれます 。 XまたはOで3行3列のグリッドのスペースを順番にマークする2人のプレーヤー。水平、垂直、または斜めの行に3つのマークを配置することに成功したプレーヤーが勝者です。ほとんどの場合、ゲームは描画します。ここでは、XとOを色に置き換え、従来の3 * 3を4 * 4に変更しました。したがって、合計16個のLEDと16個のスイッチが、各スイッチが対応するLEDを表します。プレーヤー1は緑色で、プレーヤー2は赤色です。それはあなたがそれを手に入れたと思います。
それでは、これを作成する方法を見てみましょう。
ステップ1:PCBの設計と印刷
これが easyeda を使ってデザインしたゲーム回路です 。ここでは atmega328 を使用しています このプロジェクトの中心として。次に、回路をPCBに変換しました。名刺の標準サイズなので、89mm * 50mmの寸法でPCBを設計しました。 easyedaの画像挿入ツールを使ってデザインしました。これはあなたがあなたのアイデアで作ることができる芸術についてです。 PCBを設計した後、ガーバーファイルをダウンロードしました。それから私はjlcpcb.comに行きました。 JLCPCBを選択したのは、5つのPCBに対して2ドルしか提供されていないためです。 PCBを注文するには今すぐ注文をクリックして、ガーバーファイルを選択するだけです。アップロード後、厚さ0.8mmのブラックを選んで注文しました。 2週間後、PCBを受け取りました。 PCBの厚さはわずか0.8mmですが、期待どおりの品質です。
ステップ2:必要なコンポーネント
ATMEGA328P-AU * 1
0805コンデンサ22pf * 2
0805コンデンサ100nF * 2
SMD WS2812B-B * 16
0805 LED SMD * 2
0805抵抗1K * 3
0805抵抗10K1
16MHZ * 1
マイクロUSBFemale * 1
ここからBOMをダウンロード
ステップ3:はんだ付け
すべてのコンポーネントをつかんだ後、はんだ付けを開始しました
私はマイクロUSBポートから始めました。次に、他のすべてのコンポーネントをはんだ付けしました。制御回路をはんだ付けした後、ネオピクセルLEDのはんだ付けを開始し、終了後、対応するスイッチをはんだ付けしました。 1時間後、すべてのはんだ付けを完了しました。これで、PCBは次のようになります。
ステップ4:プログラミング
はんだ付けが完了したら、USBケーブルを接続してテストしました。次に、コードをアップロードします。 spiピンをispArduinoに接続し、スケッチをアップロードしました
ここからコードをダウンロード
ステップ5:遊んで楽しむ
これが私が4 * 4の三目並べゲームPCBで名刺を作った方法です。リンクから回路、コード、ガーバーをダウンロードできます。あなたが私のチュートリアルから何かを楽しんで学んだことを願っています。
コード
- コード
コード C / C ++
//エジソンサイエンスコーナー#include#include #define LED_PIN 5#define NUM_LEDS 16#define LED_TYPE WS2812B#define COLOR_ORDER GBR#define BRIGHTNESS 30CRGB leds [NUM_LEDS]; int player =1; int n、i、e =0、j =0; char a [16] ={'1'、 '2'、 '3'、 '4'、 '5'、 '6'、 '7'、 '8'、 '9'、 '10'、 '11'、 '12'、 '13'、 '14'、 '15'、 '16'}; char key; int w =0; const byte ROWS =4; // 4行constバイトCOLS =4; // 4列//キーパッドのボタンの記号を定義しますscharhexaKeys [ROWS] [COLS] ={{'1'、 '2'、 '3'、 'A'}、{'4'、 '5' 、 '6'、 'B'}、{'7'、 '8'、 '9'、 'C'}、{'*'、 '0'、 '#'、 'D'}}; byte rowPins [行] ={A0、A1、A2、A3}; //キーパッドバイトの行ピン配置に接続しますcolPins [COLS] ={A4、A5,2,3}; //キーパッドの列ピン配置に接続しますKeypadcustomKeypad =Keypad(makeKeymap(hexaKeys)、rowPins、colPins、ROWS、COLS); void setup(){Serial.begin(9600); LEDS.addLeds (leds、NUM_LEDS); FastLED.setBrightness(BRIGHTNESS); for(int m =0; m <3; m ++){leds [0] .setRGB(0、255、0); leds [1] .setRGB(0、255、0); leds [2] .setRGB(0、255、0); leds [3] .setRGB(0、255、0); leds [4] .setRGB(0、255、0); leds [5] .setRGB(0、255、0); leds [6] .setRGB(0、255,0); leds [7] .setRGB(0、255、0); leds [8] .setRGB(0、255、0); leds [9] .setRGB(0、255、0); leds [10] .setRGB(0、255、0); leds [11] .setRGB(0、255、0); leds [12] .setRGB(0、255、0); leds [13] .setRGB(0、255、0); leds [14] .setRGB(0、255、0); leds [15] .setRGB(0、255、0); FastLED.show(); delay(500); leds [0] .setRGB(0、0、225); leds [1] .setRGB(0、0、225); leds [2] .setRGB(0、0、225); leds [3] .setRGB(0、0、225); leds [4] .setRGB(0、0、225); leds [5] .setRGB(0、0、225); leds [6] .setRGB(0、0、225); leds [7] .setRGB(0、0、225); leds [8] .setRGB(0、0、225); leds [9] .setRGB(0、0、225); leds [10] .setRGB(0、0、225); leds [11] .setRGB(0、0、225); leds [12] .setRGB(0、0、225); leds [13] .setRGB(0、0、225); leds [14] .setRGB(0、0、225); leds [15] .setRGB(0、0、225); FastLED.show(); delay(500); } FastLED.clear(); FastLED.show();} void loop(){key =customKeypad.getKey(); if(key &&player ==1){Serial.println( "\ nP1"); Serial.println(key); n =number(key); Serial.println(n); leds [n] .setRGB(0、255、0); FastLED.show(); a [n] ='X'; Serial.println(a [n]); w =check(a、n); if(w ==1){Serial.println( "Player 1 Wins!"); while(1){leds [0] .setRGB(0、255、0); leds [1] .setRGB(0、255、0); leds [2] .setRGB(0、255、0); leds [3] .setRGB(0、255、0); leds [4] .setRGB(0、255、0); leds [5] .setRGB(0、255、0); leds [6] .setRGB(0、255,0); leds [7] .setRGB(0、255、0); leds [8] .setRGB(0、255、0); leds [9] .setRGB(0、255、0); leds [10] .setRGB(0、255、0); leds [11] .setRGB(0、255、0); leds [12] .setRGB(0、255、0); leds [13] .setRGB(0、255、0); leds [14] .setRGB(0、255、0); leds [15] .setRGB(0、255、0); FastLED.show(); delay(500); FastLED.clear(); FastLED.show(); delay(500); }} player ++; delay(1000); } delay(20); key =customKeypad.getKey(); if(key &&player ==2){Serial.println( "\ nP2"); Serial.println(key); n =number(key); Serial.println(n); leds [n] .setRGB(0、0、225); FastLED.show(); a [n] ='0'; Serial.println(a [n]); w =check(a、n); if(w ==2){Serial.println( "Player 2 Wins!"); while(1){leds [0] .setRGB(0、0、225); leds [1] .setRGB(0、0、225); leds [2] .setRGB(0、0、225); leds [3] .setRGB(0、0、225); leds [4] .setRGB(0、0、225); leds [5] .setRGB(0、0、225); leds [6] .setRGB(0、0、225); leds [7] .setRGB(0、0、225); leds [8] .setRGB(0、0、225); leds [9] .setRGB(0、0、225); leds [10] .setRGB(0、0、225); leds [11] .setRGB(0、0、225); leds [12] .setRGB(0、0、225); leds [13] .setRGB(0、0、225); leds [14] .setRGB(0、0、225); leds [15] .setRGB(0、0、225); FastLED.show(); delay(500); FastLED.clear(); FastLED.show(); delay(500); }} e ++;プレーヤー -; delay(1000); } if(e ==8){Serial.println( "Game Draw"); while(1){leds [0] .setRGB(255、0、0); leds [1] .setRGB(255、0、0); leds [2] .setRGB(255、0、0); leds [3] .setRGB(255、0、0); leds [4] .setRGB(255、0、0); leds [5] .setRGB(255、0、0); leds [6] .setRGB(255、0、0); leds [7] .setRGB(255、0、0); leds [8] .setRGB(255、0、0); leds [9] .setRGB(255、0、0); leds [10] .setRGB(255、0、0); leds [11] .setRGB(255、0、0); leds [12] .setRGB(255、0、0); leds [13] .setRGB(255、0、0); leds [14] .setRGB(255、0、0); leds [15] .setRGB(255、0、0); FastLED.show(); delay(1000); FastLED.clear(); FastLED.show(); delay(500); }} delay(20);} int number(char keyn){if(keyn =='1')return 0; if(keyn =='2')return 1; if(keyn =='3')return 2; if(key =='A')return 3; if(keyn =='4')return 4; if(keyn =='5')return 5; if(keyn =='6')return 6; if(keyn =='B')return 7; if(keyn =='7')return 8; if(keyn =='8')return 9; if(keyn =='9')return 10; if(keyn =='C')return 11; if(key =='*')return 12; if(keyn =='0')return 13; if(keyn =='#')return 14; if(keyn =='D')return 15;} int check(char a [16]、int n){if(a [0] =='X' &&a [1] =='X' &&a [ 2] =='X' &&a [3] =='X')return 1; if(a [0] =='0' &&a [1] =='0' &&a [2] =='0' &&a [3] =='0')return 2; if(a [0] =='X' &&a [4] =='X' &&a [8] =='X' &&a [12] =='X')return 1; if(a [0] =='0' &&a [4] =='0' &&a [8] =='0' &&a [12] =='0')return 2; if(a [0] =='X' &&a [5] =='X' &&a [10] =='X' &&a [15] =='X')return 1; if(a [0] =='0' &&a [5] =='0' &&a [10] =='0' &&a [15] =='0')return 2; if(a [1] =='X' &&a [5] =='X' &&a [9] =='X' &&a [13] =='X')return 1; if(a [1] =='0' &&a [5] =='0' &&a [9] =='0' &&a [13] =='0')return 2; if(a [2] =='X' &&a [6] =='X' &&a [10] =='X' &&a [14] =='X')return 1; if(a [2] =='0' &&a [6] =='0' &&a [10] =='0' &&a [14] =='0')return 2; if(a [3] =='X' &&a [7] =='X' &&a [11] =='X' &&a [15] =='X')return 1; if(a [3] =='0' &&a [7] =='0' &&a [11] =='0' &&a [15] =='0')return 2; if(a [3] =='X' &&a [6] =='X' &&a [9] =='X' &&a [12] =='X')return 1; if(a [3] =='0' &&a [6] =='0' &&a [9] =='0' &&a [12] =='0')return 2; if(a [4] =='X' &&a [5] =='X' &&a [6] =='X' &&a [7] =='X')return 1; if(a [4] =='0' &&a [5] =='0' &&a [6] =='0' &&a [7] =='0')return 2; if(a [8] =='X' &&a [9] =='X' &&a [10] =='X' &&a [11] =='X')return 1; if(a [8] =='0' &&a [9] =='0' &&a [10] =='0' &&a [11] =='0')return 2; if(a [12] =='X' &&a [13] =='X' &&a [14] =='X' &&a [15] =='X')return 1; if(a [12] =='0' &&a [13] =='0' &&a [14] =='0' &&a [15] =='0')return 2;}
回路図
製造プロセス