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

MAX7219を搭載した24x16マトリックスのArduinoPongゲーム

コンポーネントと消耗品

>
Arduino Nano R3
× 1
8x8 LEDmartrixモジュールとMAX7219
× 6
ロータリーポテンショメータ(汎用)
× 2
ブザー
× 1

必要なツールとマシン

>
はんだごて(汎用)

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

>
Arduino IDE

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

私はこの小さなポンコンソールを6個のアレイ上に構築しました。 https://www.instructables.com/id/Pong/

の指示とコードに従った8x8LEDマトリックス

カスタムメイドのマトリックスボードの代わりに、AliexpressからMAX7219の安価な既製の8x8モジュールを購入しました。

各ボードの「クロック」ピンと「ロード」ピンはすべて互いに接続されています。最初のマトリックスの「Din」ピンはArduinoに、「Dout」は次のマトリックスの「Din」などに接続されます。制御パドルは、ArduinoのA0およびA1アナログピンに接続された2つの10kポテンショメータで、ブザーはD9ピンに接続されています。

最後に、デバイスをプラスチックの箱に入れ、コントローラーを電気設備用の箱に入れました。

LedControlライブラリは次の場所からダウンロードできます:

https://github.com/wayoda/LedControl

コード

  • コード
コード Arduino
 //ライブラリを常に含める必要があります#include "LedControl.h" byte rightscore;バイト左スコア; inttoneloop =1000; byte pongdisplay [] ={//起動時に「Pong」を表示するために使用、B00000000、B01110000、B00000000、B00000000、B00000000、B00000000、B00000000、B11110000、B00000000、B00001000、B00000000、B00001000、B00000000、B11110000、B00000000、B00000000、B00000000、B00000000、B00000000、B11001111、B00000000、B10001001、B00000000 、B11111111、B00000000、B00000000、B00000000、B00000000、B00000000、};バイトゼロ[] ={//スコアを表示するときに「0」を表示するために使用B00000000、B00000000、B00111100、B01000010、B01000010、B01000010、B00111100、B00000000}; byte one [] ={//スコアを表示するときに「1」を表示するために使用されますB00000000、B00000000、B10001000、B10000100、B11111110、B10000000、B10000000、B00000000};バイト2 [] ={//スコアを表示するときに「2」を表示するために使用B00000000、B01100010、B01010001、B01010001、B01001001、B01000110、B00000000、B00000000};バイト3 [] ={//「スコアを表示する場合は3'B00000000、B00100110、B01000001、B01001001、B00110110、B00000000、B00000000、B00000000}; byte four [] ={//スコアを表示する場合は「4」を表示するために使用B00000000、B00000000、B00001111 B00001000、B00001000、B11111111、B00000000、B00000000}; byte five [] ={//スコアを表示するときに「5」を表示するために使用B00000000、B00000000、B10011110、B10010010、B10010010、B11110010、B00000000、B00000000}; byte displayevens =0; byte displayrow =0; byte displayindex =0; byte displayodds =1; unsigned long time; unsigned long currenttime; / *ここで、LedControlを操作する必要があります。ピン12はDataInに接続されていますピン11はCLKに接続されていますピン10はLOADに接続されています6つのMAX72XXがあります。 * /バイトモード;バイトデフレクト;バイトキャリー; intライン; LedControllc =LedControl(12,11,10,6); long randnumber; byte dir; int startpos; byte row; byte column; long randNumber; byte start; byte diry; int pass; byte limit; #define leftpaddle 0 //左ポンノブはアナログ入力に接続されています0#define rightpaddle 1 //右ポンノブはアナログ入力に接続されています1intdirectionpong; int rightpongval; int leftpongval; byte brightx; byte pong [] ={//ボールとパドルの位置を格納しますB00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000 、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000、B00000000 、B00000000、B00000000、B00000000、B00000000、B000000 00}; void setup(){pinMode(leftpaddle、INPUT); //パドルは入力です。 pinMode(rightpaddle、INPUT); //パドルは入力です。 Serial.begin(9600); //デバッグ用のシリアル通信。 9600ボーに設定//以下のこれらの状態は通過し、マトリックスを指定された設定に設定しますlc.shutdown(0、false); lc.setIntensity(0,1); lc.clearDisplay(0); lc.shutdown(1、false); lc.setIntensity(1,1); lc.clearDisplay(1); lc.shutdown(2、false); lc.setIntensity(2,1); lc.clearDisplay(2); lc.shutdown(3、false); lc.setIntensity(3,1); lc.clearDisplay(3); lc.shutdown(4、false); lc.setIntensity(4,1); lc.clearDisplay(4); lc.shutdown(5、false); lc.setIntensity(5,1); lc.clearDisplay(5); while(displayevens <5){while(displayrow <=7){lc.setRow(displayevens、displayrow、pongdisplay [displayindex]); displayrow ++; displayindex + =2; } displayrow =0; displayevens + =2; } displayrow =0; displayindex =1; randomSeed(analogRead(4)); start =1; time =millis(); currenttime =millis(); while(currenttime-time <3000){leftpongval =analogRead(leftpaddle); leftpongval =map(leftpongval、1023,20,2,0); if(leftpongval ==0){lc.setLed(3,2,7、true); lc.setLed(3,3,7、false); lc.setLed(3,4,7、false); mode =1; limit =2; } if(leftpongval ==1){lc.setLed(3,2,7、true); lc.setLed(3,3,7、true); lc.setLed(3,4,7、false); mode =2; limit =1; } if(leftpongval ==2){lc.setLed(3,2,7、true); lc.setLed(3,3,7、true); lc.setLed(3,4,7、true); mode =3; limit =2; } delay(50); lc.clearDisplay(3); currenttime =millis(); }} void loop(){paddles(); pongsim();表示画面(); } void paddles(){//パドルからデータを読み取り、それを配列intsearchbitに表示します。 intキャリー=0; // Serial.print( "LeftPaddle:"); // Serial.println(analogRead(leftpaddle)); leftpongval =analogRead(leftpaddle); leftpongval =map(leftpongval、0,1010,0,13); rightpongval =analogRead(rightpaddle); rightpongval =map(rightpongval、1023,20,0,13); // Serial.print( "RightPaddle:"); // Serial.println(rightpongval); //次のパドルを表示するために前のパドルをクリアしますpong [0] =B00000000; pong [1] =B00000000; pong [46] =B00000000; pong [47] =B00000000; // -------------------------------右パドルif(mode!=3){if(rightpongval <=7) {rightpongval =map(rightpongval、0,7,7,0); bitSet(pong [46]、rightpongval); if(rightpongval-1> =0){bitSet(pong [46]、rightpongval-1); } else {bitSet(pong [47]、7); if(mode!=2){bitSet(pong [47]、6);キャリー=1; }} if(mode!=2){if(carry ==0){if(rightpongval-2> =0){bitSet(pong [46]、rightpongval-2); } else {bitSet(pong [47]、7);キャリー=1; }}}} if(rightpongval> 7){rightpongval =map(rightpongval、8,13,7、limit); bitSet(pong [47]、rightpongval); bitSet(pong [47]、rightpongval-1); if(mode!=2){bitSet(pong [47]、rightpongval-2); }}} else {pong [46] =B11111111; pong [47] =B11111111; lc.setRow(4,7、pong [46]); lc.setRow(5,7、pong [47]); } // ----------------------------------左パドルキャリー=0; if(leftpongval <=7){leftpongval =map(leftpongval、0,7,7,0); bitSet(pong [0]、leftpongval); if(leftpongval-1> =0){bitSet(pong [0]、leftpongval-1); } else {bitSet(pong [1]、7); if(mode!=2){bitSet(pong [1]、6);キャリー=1; }} if(mode!=2){if(carry ==0){if(leftpongval-2> =0){bitSet(pong [0]、leftpongval-2); } else {bitSet(pong [1]、7); }}}} if(leftpongval> 7){leftpongval =map(leftpongval、8,13,7、limit); bitSet(pong [1]、leftpongval); bitSet(pong [1]、leftpongval-1); if(mode!=2){bitSet(pong [1]、leftpongval-2); }}} void pongsim(){if(((line ==2 || line ==3)&&diry ==0)||((line ==44 || line ==45)&&diry ==1) ){ball_meets_paddle(); } if(start ==1){//新しいゲームを開始するrandnumber =random(1,7); //ランダムな開始ビットを考え出しますdir =random(2); //左から右または右から左へのランダムな開始モーションを思い付くdiry =random(2); //ランダムな開始y移動方向を考え出しますif(diry ==0){// y方向が0の場合。下から上への移動line =random(30,34); // 30〜34のランダムな開始行を考え出しますbitSet(pong [line]、randnumber); //ランダムな線のビットとポン配列の1に等しいランダムなビットを設定します} if(diry ==1){// y方向が1の場合上から下の線への移動=random(12,16); // 12〜16のランダムな開始行を考え出しますbitSet(pong [line]、randnumber); //ランダムな線のビットとpong配列の1に等しいランダムなビットを設定します} start =0; //開始変数を0に戻します} if(diry ==0){//ボールが下から上に移動している場合if(dir ==0){//ボールが右から左に移動している場合if (deflect ==0 &&キャリー==0){//ボールが偏向していないか別のマトリックスラインに持ち越されていない場合-=2; //ラインから2を引いて、ボールを反対側に進めますpong [line] =pong [line + 2] <<1; //ボールを左にシフトし、新しいラインpong [line +2]と等しく設定します=B00000000; //ボールの古い線をクリアします} if(carry ==1){//ボールを新しいマトリックス線に持ち越す必要がある場合-=3; //行pong [line] =B00000001から3を引くことにより、ボールを反対側に進めます。 //新しい行を設定しますpong [line + 3] =B00000000; //ボールの古い行をクリアしますcarry =0; //キャリー変数を0に戻しますreturn; //ここで完了です} if(deflect ==1){//ボールが壁の線から逸れる必要がある場合-=2; //行pong [line] =B01000000;から2を引くことにより、ボールを反対側に進めます。 //新しい行を設定しますpong [line + 2] =B00000000; //ボールの古い線をクリアしますdeflect =0; //偏向変数を0に戻しますdir =1; //方向を左から右に切り替えますreturn; //ここで完了です} if(bitRead(pong [line]、7)==1){//ボールがラインの7番目のビットにある場合if(line ==3 || line ==5 || line ==7 || line ==9 || line ==11 || line ==13 || line ==15 || //線が奇数の場合line ==17 || line ==19 | | line ==21 || line ==23 || line ==25 || line ==27 || line ==29 || line ==31 || line ==33 || line ==35 || line ==37 || line ==39 || line ==41 || line ==43 || line ==45){キャリー=1; //ボールは別のマトリックスリターンに持ち越される必要があります。 //ここで完了です} else {//それ以外の場合、ボールは偶数の線上にありますif(line!=2){//ボールが2偏向=1でパドルに出会うため、線を2にすることはできません。 //ボールは壁のリターンからそらす必要があります。 //ここで完了です}}}} //上記のコメントは、以下のすべてのことを説明しているはずです。いくつかのもの、異なるパラメータ。 if(dir ==1){if(deflect ==0 &&キャリー==0){line- =2; pong [line] =pong [line + 2]>> 1; pong [line + 2] =B00000000; } if(carry ==1){line--; pong [line] =B10000000; pong [line + 1] =B00000000;キャリー=0;戻る; } if(deflect ==1){line- =2; pong [line] =B00000010; pong [line + 2] =B0000000;偏向=0; dir =0;戻る; } if(bitRead(pong [line]、0)==1){if(line ==2 || line ==4 || line ==6 || line ==8 || line ==10 || line ==12 || line ==14 || line ==16 || line ==18 || line ==20 || line ==22 || line ==24 || line ==26 || line ==28 || line ==30 || line ==32 || line ==34 || line ==36 || line ==38 || line ==40 || line ==42 || line ==44) {キャリー=1;戻る; } else {if(line!=3){deflect =1;戻る; }}}}}} // ------------------------------------------- -diry =1以下if(diry ==1){if(dir ==0){if(deflect ==0 &&キャリー==0){line + =2; pong [line] =pong [line-2] <<1; pong [line-2] =B00000000; } if(carry ==1){line + =1; pong [line] =B00000001; pong [line-1] =B00000000;キャリー=0;戻る; } if(deflect ==1){line + =2; pong [line] =B01000000; pong [line-2] =B00000000;偏向=0; dir =1;戻る; } if(bitRead(pong [line]、7)==1){if(line ==5 || line ==7 || line ==9 || line ==11 || line ==13 || line ==15 || line ==17 || line ==19 || line ==21 || line ==23 || line ==25 || line ==27 || line ==29 || line ==31 || line ==33 || line ==35 || line ==37 || line ==39 || line ==41 || line ==43 || line ==45){carry =1;戻る; } else {if(line!=44){deflect =1;戻る; }}}} if(dir ==1){if(deflect ==0 &&キャリー==0){line + =2; pong [line] =pong [line-2]>> 1; pong [line-2] =B00000000; } if(carry ==1){line + =3; pong [line] =B10000000; pong [line-3] =B00000000;キャリー=0;戻る; } if(deflect ==1){line + =2; pong [line] =B00000010; pong [line-2] =B0000000;偏向=0; dir =0;戻る; } if(bitRead(pong [line]、0)==1){if(line ==2 || line ==4 || line ==6 || line ==8 || line ==10 || line ==12 || line ==14 || line ==16 || line ==18 || line ==20 || line ==22 || line ==24 || line ==26 || line ==28 || line ==30 || line ==32 || line ==34 || line ==36 || line ==38 || line ==40 || line ==42 || line ==44) {キャリー=1;戻る; } else {if(line!=45){deflect =1;戻る; }}}}}} void displayscreen(){displayevens =0; displayrow =0; displayindex =0; displayodds =1; while(displayevens <5){while(displayrow <=7){lc.setRow(displayevens、displayrow、pong [displayindex]); displayrow ++; displayindex + =2; } displayrow =0; displayevens + =2; } displayrow =0; displayindex =1; while(displayodds <6){while(displayrow <8){lc.setRow(displayodds、displayrow、pong [displayindex]); displayrow ++; displayindex + =2; } displayrow =0; displayodds + =2; }} void clearscreen(){int clearing =0; while(clearing <49){pong [clearing] =B00000000;クリア++; }} void ball_meets_paddle(){byte search1 =0; if(diry ==0){//ボールが上に移動するif(dir ==0){//ボールが右から左に移動するwhile(search1 <8){//ボールが置かれているビットを見つけるif(bitRead(pong [line]、search1)==1){//ボールが置かれているビットを見つけたif(line ==2){if(search1!=6 &&search1!=7){// 2行目にある場合は、それらの特別なビットにないことを確認してくださいif(bitRead(pong [0]、search1)==1){//そこにパドルがあることを確認しますdiry =1; // y方向を切り替えて、他のパドルトーンに向かうようにします(9,500,100); } else if(bitRead(pong [0]、search1 + 1)==1){diry =1; dir =1;トーン(9,500,100); if(search1 ==0){キャリー=1; }} else {//パドルなし、ボールトーンを逃した(9,500,300); clearscreen(); start =1; delay(1000); scoreleft(); }} if(search1 ==6){//特別なビット、入ってくるのと同じパスを偏向させる必要があるif(bitRead(pong [0]、7)==1){//そこにパドルがありますpong [2] =B01000000; dir =1; diry =1;トーン(9,500,100); } else {//見逃しました、パドルなし。トーン(9,500,300); clearscreen(); start =1; delay(1000); scoreleft(); }} if(search1 ==7){//特別なビット、最初に壁に跳ね返る必要があるif(bitRead(pong [0]、6)==1){//パドルポンを見つけた[2] =B00100000; diry =1; dir =1; line =2;トーン(9,500,100);表示画面(); } else {//見逃しました、パドルなし。トーン(9,500,300); clearscreen(); start =1; delay(1000); scoreleft(); }}} if(line ==3){if(search1!=7){// 3行目にある場合は、それらの特別なビットにないことを確認してくださいif(bitRead(pong [1]、search1)==1) {//そこにパドルがあることを確認するdiry =1; // y方向を切り替えて、他のパドルトーンに向かうようにします(9,500,100); } else if(bitRead(pong [1]、search1 + 1)==1){diry =1; dir =1;トーン(9,500,100); } else {//パドルなし、ボールトーンを逃した(9,500,300); clearscreen(); start =1; delay(1000); scoreleft(); }} if(search1 ==7){//特別なビット、次のマトリックスに持ち越す必要があるif(bitRead(pong [1]、7)==1){//そこにパドルが見つかりました// pong [2] =B10000000; // dir =0にあった行をクリアします; //方向は同じですdiry =1; // y方向がトーンを変更します(9,500,100); } else if(bitRead(pong [0]、0)==1){dir =1; diry =1;トーン(9,500,100);キャリー=0; } else {//パドルなし、ボールトーンを逃した(9,500,300); clearscreen(); start =1; delay(1000); scoreleft(); }}}} search1 ++; }} if(dir ==1){//ボールが左から右に移動しているwhile(search1 <8){//ボールが置かれているビットを見つけるif(bitRead(pong [line]、search1)==1) {//ボールが置かれているビットを見つけたif(line ==3){if(search1!=1 &&search1!=0){// 3行目にある場合は、特別なビットにないことを確認しますif( bitRead(pong [1]、search1)==1){//パドルdiry =1があるかどうかを確認します; //ボールが他のパドルトーンに向かうようにy方向を切り替えます(9,500,100); } else if(bitRead(pong [1]、search1-1)==1){diry =1; dir =0;トーン(9,500,100); if(search1 ==7){キャリー=1; }} else {//パドルなし、ボールトーンを逃した(9,500,300); clearscreen(); start =1; delay(1000); scoreleft(); }} if(search1 ==1){if(bitRead(pong [1]、0)==1){pong [3] =B00000010; dir =0; diry =1;トーン(9,500,100); } else {tone(9,500,300); clearscreen(); start =1; delay(1000); scoreleft(); }} if(search1 ==0){if(bitRead(pong [1]、0)==1){pong [3] =B00000100; diry =1; dir =0; line =3;トーン(9,500,100);表示画面(); } else {tone(9,500,300); clearscreen(); start =1; delay(1000); scoreleft(); }}} if(line ==2){if(search1!=0){if(bitRead(pong [0]、search1)==1){//パドルdiry =1があるかどうかを確認します; //ボールが他のパドルトーンに向かうようにy方向を切り替えます(9,500,100); } else if(bitRead(pong [0]、search1-1)==1){diry =1; dir =0;トーン(9,500,100); } else {//パドルなし、ボールトーンを逃した(9,500,300); clearscreen(); start =1; delay(1000); scoreleft(); }} if(search1 ==0){if(bitRead(pong [0]、0)==1){// pong [2] =B00000001; line =2; dir =1; diry =1;トーン(9,500,100);戻る; } else if(bitRead(pong [1]、7)==1){diry =1; dir =0;トーン(9,500,100);キャリー=0; } else {tone(9,500,300); clearscreen(); start =1; delay(1000); scoreleft(); }}}} search1 ++; }}} // ------------------------------------------------- ------------------------- if(diry ==1){//ボールが上に移動if(dir ==0){//ボールが移動右から左へwhile(search1 <8){//ボールが置かれているビットを見つけるif(bitRead(pong [line]、search1)==1){//ボールが置かれているビットを見つけるif(line ==44){if(search1!=6 &&search1!=7){// 2行目にある場合は、それらの特別なビットにないことを確認してくださいif(bitRead(pong [46]、search1)==1){//そこにパドルがあることを確認してくださいdiry =0; // y方向を切り替えて、他のパドルトーンに向かうようにします(9,500,100); } else if(bitRead(pong [46]、search1 + 1)==1){diry =0; dir =1;トーン(9,500,100); if(search1 ==0){キャリー=1; }} else {//パドルなし、ボールトーンを逃した(9,500,300); clearscreen(); start =1; delay(1000); scoreright(); }} if(search1 ==6){//特別なビット、入ってくるのと同じパスを偏向させる必要があるif(bitRead(pong [46]、7)==1){//そこにパドルがありますdir =1; diry =0;トーン(9,500,100); } else {//見逃しました、パドルなし。トーン(9,500,300); clearscreen(); start =1; delay(1000); scoreright(); }} if(search1 ==7){//特別なビット、最初に壁に跳ね返る必要があるif(bitRead(pong [46]、6)==1){//パドルポンを見つけた[44] =B00100000; diry =0; dir =1;トーン(9,500,100);表示画面(); line =44;戻る; }}} if(line ==45){if(search1!=7){// 3行目にある場合は、それらの特別なビットにないことを確認してくださいif(bitRead(pong [47]、search1)==1) {//そこにパドルがあることを確認するdiry =0; // y方向を切り替えて、他のパドルトーンに向かうようにします(9,500,100); } else if(bitRead(pong [47]、search1 + 1)==1){diry =0; dir =1;トーン(9,500,100); } else {//パドルなし、ボールトーンを逃した(9,500,300); clearscreen(); start =1; delay(1000); scoreright(); }} if(search1 ==7){//特別なビット、次のマトリックスに持ち越す必要があるif(bitRead(pong [47]、7)==1){//そこにパドルが見つかりました// pong [45] =B10000000; //行をクリアしますline =45; dir =0; //方向は同じですdiry =0; // y方向がトーンを変更します(9,500,100); } else if(bitRead(pong [46]、0)==1){dir =1; diry =0;トーン(9,500,100);キャリー=0; } else {//パドルなし、ボールトーンを逃した(9,500,300); clearscreen(); start =1; delay(1000); scoreright(); }}}} search1 ++; }} if(dir ==1){//ボールが左から右に移動しているwhile(search1 <8){//ボールが置かれているビットを見つけるif(bitRead(pong [line]、search1)==1) {//ボールが置かれているビットを見つけたif(line ==45){if(search1!=1 &&search1!=0){// 3行目にある場合は、特別なビットにないことを確認しますif( bitRead(pong [47]、search1)==1){//パドルdiry =0があるかどうかを確認します。 //ボールが他のパドルトーンに向かうようにy方向を切り替えます(9,500,100); } else if(bitRead(pong [47]、search1-1)==1){diry =0; dir =0;トーン(9,500,100); if(search1 ==7){キャリー=1; }} else {//パドルなし、ボールトーンを逃した(9,500,300); clearscreen(); start =1; delay(1000); scoreright(); }} if(search1 ==1){if(bitRead(pong [47]、0)==1){pong [43] =B00000010; dir =0; diry =0;トーン(9,500,100); } else {tone(9,500,300); clearscreen(); start =1; delay(1000); scoreright(); }} if(search1 ==0){if(bitRead(pong [47]、1)==1){pong [45] =B00000100; diry =0; dir =0; line =45;トーン(9,500,100);表示画面(); } else {tone(9,500,300); clearscreen(); start =1; delay(1000); scoreright(); }}} if(line ==44){if(search1!=0){if(bitRead(pong [46]、search1)==1){//パドルdiry =0があるかどうかを確認します。 //ボールが他のパドルトーンに向かうようにy方向を切り替えます(9,500,100); } else if(bitRead(pong [46]、search1-1)==1){diry =0; dir =0;トーン(9,500,100); } else {//パドルなし、ボールトーンを逃した(9,500,300); clearscreen(); start =1; delay(1000); scoreright(); }} if(search1 ==0){if(bitRead(pong [46]、0)==1){pong [44] =B00000001; line =44; dir =1; diry =0;トーン(9,500,100); } else if(bitRead(pong [47]、7)==1){dir =0; diry =0;トーン(9,500,100);キャリー=0; } else {tone(9,500,300); clearscreen(); start =1; delay(1000); scoreright(); }}}} search1 ++; }}} pass =1; search1 =0;} void scoreleft(){clearscreen(); rightscore ++; setscore();表示画面(); if(rightscore ==5){while(blinkx ++ <4){clearscreen();表示画面(); delay(500); setscore();表示画面(); delay(500); } brightx =0; rightscore =0; leftscore =0; } else {delay(2000); } clearscreen();} void scoreright(){clearscreen(); leftscore ++; setscore();表示画面(); if(leftscore ==5){while(blinkx ++ <4){clearscreen();表示画面(); delay(500); setscore();表示画面(); delay(500); } brightx =0; rightscore =0; leftscore =0; } else {delay(2000); } clearscreen();} void setscore(){byte setScoreLoop =0; while(setScoreLoop <=7){if(leftscore ==0){pong [setScoreLoop * 2] =zero [setScoreLoop]; } if(leftscore ==1){pong [setScoreLoop * 2] =one [setScoreLoop]; } if(leftscore ==2){pong [setScoreLoop * 2] =two [setScoreLoop]; } if(leftscore ==3){pong [setScoreLoop * 2] =three [setScoreLoop]; } if(leftscore ==4){pong [setScoreLoop * 2] =four [setScoreLoop]; } if(leftscore ==5){pong [setScoreLoop * 2] =five [setScoreLoop]; } if(rightscore ==0){pong [32+(setScoreLoop * 2)] =zero [setScoreLoop]; } if(rightscore ==1){pong [32+(setScoreLoop * 2)] =one [setScoreLoop]; } if(rightscore ==2){pong [32+(setScoreLoop * 2)] =two [setScoreLoop]; } if(rightscore ==3){pong [32+(setScoreLoop * 2)] =three [setScoreLoop]; } if(rightscore ==4){pong [32+(setScoreLoop * 2)] =four [setScoreLoop]; } if(rightscore ==5){pong [32+(setScoreLoop * 2)] =five [setScoreLoop]; } setScoreLoop ++; } pong [20] =B00011000; pong [22] =B00011000; pong [24] =B00011000; } 

回路図


製造プロセス

  1. MPU-6050を搭載したArduinoジャイロスコープゲーム
  2. ArduinoPongゲーム-OLEDディスプレイ
  3. Arduinoゲームコントローラー
  4. Arduinoでコインアクセプターを制御する
  5. MAX7219を搭載した24x16マトリックスのArduinoPongゲーム
  6. 自家製16x8マトリックス上のArduinoNanoTetr​​isゲーム
  7. LEDを制御するBluetoothを搭載したArduino!
  8. ピクセルチェイサーゲーム
  9. ArduinoUnoでLEDマトリックスを制御する
  10. NeoMatrix Arduino Pong
  11. Arduinoで日射量を測定する