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

自作16×8 LEDマトリックスでテトリスゲーム:Arduino Nano実装

必要な部品と用品

Arduino Nano R3 ×1
タクトスイッチ(12mm) ×4
74HC595 シフトレジスタ(シリアル-パラレル) ×2
スライドスイッチ(電源用) ×1
5mm 黄色LED ×128

必要な工具

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

プロジェクトについて

自作の16列×8行(128個)LEDマトリックス、Arduino Nano、2個の74HC595シフトレジスタを使ってテトリスゲームを実装しました。ボタン操作時にビープ音も鳴ります。

ハードウェア構成

ソフトウェアのポイント

ソースコード(全文)

コードは長いため全文を掲載します。主要関数:

/* Author: Jae Yeong Bae, UBC ECE
   Tetris v2 on 16x8 LED Matrix with 2x 74HC595 */

unsigned char latchPin = 3;
unsigned char clockPin = 2;
unsigned char dataPin = 4;
unsigned char rowPin = 5;  // D5-D12 で8行駆動

long delays = 0;
short delay_ = 500;      // 落下間隔(ms)
long bdelay = 0;
short buttondelay = 150;
short btdowndelay = 30;
short btsidedelay = 80;

unsigned char blocktype, blockrotation;
int lines = 0;
boolean block[8][18];    // 現在ブロック(回転用に+2列)
boolean pile[8][16];     // 固定済みブロック
boolean disp[8][16];     // 表示用マージバッファ
boolean lib[10][5][7];   // ブロック形状ライブラリ

void setup() {
  // lib[] に7種類テトロミノ+αの形状をビットパターンで定義
  // 乱数シード生成(アナログノイズ利用)
  // Timer1 CTC割り込み 2kHz 設定
  // ピンモード設定、シリアル開始
  newBlock(); updateLED();
}

void loop() {
  if (delays < millis()) { delays = millis() + delay_; movedown(); }
  int btn = readBut();
  if (btn == 1) rotate();
  else if (btn == 2) moveright();
  else if (btn == 3) moveleft();
  else if (btn == 4) movedown();
}

// 以下、移動・回転・衝突判定・ライン消去・ゲームオーバー・表示リフレッシュ等の全関数実装
// ISR(TIMER1_COMPA_vect) { LEDRefresh(); }

回路図

添付の回路図を参照。74HC595×2のシリアル接続(Data→D4, Clock→D2, Latch→D3)、Q0-Q7が列0-7、Q8-Q15が列8-15を駆動。行アノードD5-D12。ボタンA4-A7。LEDマトリックスはユニバーサル基板に128個手配線とはんだ付けが必要。

製作のヒント

製造プロセス

  1. Arduino NanoとMPU-6050で作るリアルタイムジャイロスコープゲーム
  2. Arduinoデジタルダイス: LCD表示の乱数ジェネレーター自作
  3. 自作Arduino TV-B-Gone:全テレビ対応の万能リモコン
  4. DIY Arduino USBゲームコントローラー - 高性能ゲームパッドを自作
  5. Arduino NanoとMAX7219で作る24×16 LEDポングゲーム機
  6. Pixel Chaser: Arduino Nanoで作るワンタップLEDゲーム
  7. Arduino Nanoで作る8×8 LEDマトリックスのフリップクロック - 自作リアルタイムクロック
  8. Arduino Nanoで作るNeoPixelマトリックス版Pongゲーム
  9. Arduino Nanoで作る携帯型ガイガーカウンター
  10. Arduino NanoとWS2812 LEDストリップで作る1次元ポンゲーム - 完全DIYガイド
  11. Never Ride Alone:サイクリストのためのスマート安全システム