色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何創建一個反應游戲

454398 ? 來源:網絡整理 ? 作者:網絡整理 ? 2019-11-18 09:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

步驟1:基本設計

如何創建一個反應游戲

反應游戲非常簡單。它是一個計時器,一個顯示器以及您需要多少個發光按鈕。

反應游戲接線的主要部分是兩個重復的獨立電路的集合。這兩個電路是:

1。按鈕

Arduino官方網站上有很多關于向Arduino添加按鈕的教程

2。獨立點亮的LED(12v)

對于LED,由于我們使用的是12v LED,我們需要與Arduino分開的外部電源,該電源只能在5v的電壓下工作。對于先前的項目(我希望在某個時候寫一個照相亭),我使用MOSFET在Raspberry PI和一些LED燈之間建立接口。我使用了關于PI和LED之間的連接的出色教程。對于這個項目,我只是簡單地重復了多次練習。

輸出顯示

游戲的第三部分是用于顯示得分的LED矩陣顯示和剩余時間。為此,我使用了4個鏈接的MAX7219矩陣顯示器。為了使它們正常工作,我使用了鏈接到驅動程序庫的鏈接教程,并提供了使用顯示器的示例。

步驟2:電路板-按鈕連接器

在構建我制作的第二個反應游戲時,編寫了指令。在制作第一個反應游戲的過程中,我犯了一些小錯誤,因此在設計上有所改進。 (理想情況下,我想為所有電子設備制作PCB,并且我打算在有更多時間的情況下這樣做)。

在其中鉆兩個6mm孔vero板位于方便的位置。如果使用相同的Vero板,則建議使用與以前相同的位置。這樣可以避免所有主要路線,包括我用于地面的大型路線。這些孔用于將板安裝到反應游戲的背面。在我最初的設計中,我沒有這樣做,最終將電路板熱粘合。除非出現問題,否則我很麻煩!

使用1.5mm的鉆頭,沿一個邊緣增加銷的尺寸。我用來將每個按鈕連接到板上的4針凹型連接器的針腳明顯更寬。由于4針連接器每個跨2個孔,因此僅每個其他孔都需要加寬。

將所有8個母連接器推到板上,并焊接到位。

步驟3:電路板-主接線

本節詳細介紹了主要組件與電路板的接線。

一個16針公插頭,它在板的底部。這是按鈕,LED和Arduino

之間的接口。由于使用了Vero板,因此很容易將單獨的電路(LED和按鈕)分為幾組。母連接器跨越8個孔。這意味著LED可以使用4個孔,按鈕可以使用4個孔,以將電路保持在相同的“垂直”狀態。因此,所有8個電路可以以8個孔的間隔重復進行。

為使布線更簡單,我傾向于依次為每個電路依次布線所有相同的零件(如圖所示)

步驟4 :板

要安裝電子設備,我購買了可以運輸的最大的板(610毫米x 1220毫米x 9毫米)。

我標記了所有按鈕的位置。

每個角按鈕距角100毫米x 100毫米。

中間的頂部和底部按鈕位于中間,但距離邊緣100毫米

中間的兩個按鈕(左側和右側)與其他按鈕的距離相等適當的一面。

在標記了按鈕的位置之后,我使用了25毫米的平頭鉆頭來鉆出按鈕的孔。

我標記了顯示器的位置

一個朋友有一個擺動的多功能工具,所以我借用他在顯示器上切出矩形孔。

由于我使用的顯示器的厚度和設計,我使用了路由器將MDF的深度去除了約5mm。

我為木板切了3個支撐腿。腿部被切割成一定角度,使木板既可以躺在桌子上,也可以直立在墻上。中腿需要一個用于穿過電纜的插槽。

在項目的第1版中,我只用了2條腿,但是當傾斜到“桌面”(平躺)位置時,會導致板子彈跳很多。

將腿粘到位。

我用黑板漆畫了木板。這主要是為了使我們能夠使用粉筆在板上畫廣告,并在按鈕上寫下不同的游戲名稱。

最后,我將兩個螺栓熱粘合到電路板上(電路板頂部附近),以通過先前在PCB中鉆出的2個孔安裝電子設備。我還將一圈膠水熱粘在螺栓上(現在在螺栓的上側),以最大程度地減少短路的風險。

步驟5:接線并組裝

為每個按鈕切斷適當長度的電纜。這些電纜的長度會因面板/按鈕的距離而異。

在一端,將剝開的電線擰入連接塊中。對于每個連接塊,將所有4根電線保持在相同的順序,因為這將簡化以后的接線,也使解決任何問題變得更加容易。我使用的順序是:

紅色-LED 12v

黑色-LED接地

黃色-切換到引腳

灰色-切換5v

在另一端,我壓接了連接器以保持連接的美觀和整潔。我確實沒用完連接器,所以不是我的所有連接器都做完了

所有連接器都連接好后,按如下所示組裝按鈕。我的LED沒有標記,因此按正確的方向進行操作會引起反復試驗,但這要等到代碼完成后才能實現

我的按鈕背面有兩小塊塑料在板上時停止旋轉按鈕。這就要求在每個按鈕的板子前面鉆兩個小孔。我發現最簡單的方法是將按鈕放入并旋轉45度。取出按鈕后,可以看到銷釘畫的兩條線。用一個3mm的小鉆頭在每條線的一端鉆孔。確保您在每條線的同一端都進行了鉆孔(例如,兩行的順時針方向!)

步驟6:接線Arduino

以下說明用于連接Arduino MEGA。

需要將16針公對母帶狀跨接電纜從PCB上的16針接頭連接到Arduino上的數字數據針,如圖所示。

兩個引腳從Arduino連接到PCB。 5v轉到具有紅線的PCB上的小電路。接地引腳從Arduino到PCB,

顯示器的接線方式如接線圖所示。

最后將LED的12v線連接到母插孔連接器上。

顯示器

顯示器已配對并放入孔(確保正確放置)。我使用膠帶將顯示屏固定在板上。

我使用膠帶并且不將顯示屏永久固定在原位的原因是我希望能夠與玩家站在一塊墻,或平躺在桌子上。這就是為什么后面的支桿被切成一定角度的原因。但是,這兩個位置都需要切換顯示,以便每次都能正確顯示。因此,通過使用膠帶方法可以輕松更改它們。

第7步:對Arduino進行編碼

我不會在此提供大量教程Arduino編程,因為有一些很棒的教程,但是我將逐步介紹我的代碼,并提供一般概述。我確信我可以改進代碼,并添加許多其他游戲。

該項目需要HCMAX7219庫。可能有多個版本,但是我使用了Hobby Components Blog引用的版本。這就是我建議從此處獲取矩陣顯示的原因,因為使用它們的工作似乎很厚道而不捐贈!

下載后,編輯HCMAX7219.h文件并將以下行更改為4:

(第31行)

#define NUMBEROFDRIVERS 4

此值確定以菊花鏈方式將多少個LED矩陣顯示器鏈接在一起。對于單人游戲,我們使用4;對于兩人游戲,我們使用8。

附加到Instructable是我的代碼。

該代碼包含兩個數組,一個用于LED,一個用于按鈕:

const int LED[8] = { 2, 4, 6, 8, 22, 24, 26, 28 };

const int BUTTON[8] = { 3, 5, 7, 9, 23, 25, 27, 29 };

通過使用數組,可以索引特定的按鈕,然后返回

該程序包括以下主要部分:

設置-在Arduino通電時運行一次以設置游戲

循環-持續運行

ScreenSaver-隨機點亮按鈕,直到按下按鈕。程序中有3個屏幕保護程序,它們是隨機選擇的

CountDown-按下按鈕時,請進行短暫的倒計時,并越來越快地閃爍燈光,以便播放器準備開始

PlayGame-玩實際游戲

設置

設置通過從屏幕上讀取“噪聲”來隨機化種子模擬端口

如果設置了DEBUG,它將打開串行端口。在設置了DEBUG的情況下運行時,讀取按鈕會有很大的延遲,因此在正確運行游戲時應關閉DEBUG

正確設置所有輸入和輸出引腳

/*

Set up the game

*/

void setup() {

// Set up the seed

randomSeed(analogRead(0));

if (DEBUG)

Serial.begin(9600);

// Set up the pins

for (int i = 0; i 《 NUMBER_BUTTONS; i++)

{

pinMode(LED[i], OUTPUT);

pinMode(BUTTON[i], INPUT);

}

}

循環

主循環啟動“屏幕保護程序”,等待按鈕按下

顯示閃爍的倒計時在開始播放

玩游戲之前

/*

The main loop

*/

void loop()

{

Debug(“DEBUG ON - ”, 0);

// Run the screen saver

ScreenSaver();

// Countdown to start

CountDown();

// Play the game

PlayGame();

}

屏幕保護程序

“屏幕保護程序”只是閃爍按鈕在不同的模式。這對于調試電子設備以及“宣傳”反應游戲正在運行并準備就緒可發揮作用。我創建了3種不同的屏幕保護程序,從簡單地隨機顯示燈光,建立和分解所有燈光,以及以“反彈”的不同線條顯示燈光。每個屏幕保護程序都有其自身的功能,可以在等待按下按鈕的同時打開和關閉相應的燈。因為我們有8個按鈕,所以每個按鈕對應一個字節中的一位。這使SetLEDs函數可以使用按位操作來打開和關閉燈。

“構建和行”屏幕保護程序使用包含要顯示的字節模式的查找表。隨機屏幕保護程序僅選擇一個介于1和255之間的b =數字,并顯示與該數字相對應的燈光。

/*

Randomly does a screen saver

*/

void ScreenSaver()

{

int screenSaver = random(3);

bool response = false;

while (!response)

{

switch(screenSaver)

{

case 0:

Debug(“Screen saver random: ”, screenSaver);

response = ScreenSaverRandom();

break;

case 1:

Debug(“Screen saver build up: ”, screenSaver);

response = ScreenSaverBuildUp();

break;

case 2:

Debug(“Screen saver lines: ”, screenSaver);

response = ScreenSaverLines();

break;

default:

Debug(“Screen saver default: ”, screenSaver);

response = ScreenSaverRandom();

}

}

}

設置LED

以下兩個功能用于設置LED的開和關(取決于調用它們的要求)。

SetLED寫入特定的引腳,將引腳設置為HIGH或LOW。

SetLEDs使用字節模式來設置多個LED的開和關。

/*

Set a button

*/

void SetLED (int button, int led)

{

if (button != HIGH)

digitalWrite(led, LOW);

else

digitalWrite(led, HIGH);

}

/*

Set the LED pattern using bits

0000 0001 - LED 01

0000 0010 - LED 02

0000 0100 - LED 03

0000 1000 - LED 04

0001 0000 - LED 05

0010 0000 - LED 06

0100 0000 - LED 07

1000 0000 - LED 08

*/

void SetLEDs (int pattern)

{

Debug(“SetLEDs: ”, pattern);

int bitPattern = 0x01;

for(int i=0;i if ((pattern & bitPattern) != 0)

SetLED(HIGH, LED[i]);

else

SetLED(LOW, LED[i]);

bitPattern = bitPattern 《《 1;

}

}

檢查是否按下了按鈕

如果按下了任何按鈕,則以下函數返回true,

/*

Check to see if any button is pressed

*/

bool CheckButtons()

{

for (int i=0; i《 NUMBER_BUTTONS; i++)

{

if(digitalRead(BUTTON[i]) 》 0)

{

Debug(“CheckButtons() - pressed: ”, i);

return true;

}

} Debug(“CheckButtons() - NOT PRESSED - ”, -1);

return false;

}

玩游戲

此功能是主要的單人游戲。它僅循環運行31秒,即可更新時間,打開單個LED并等待按下相應的按鈕。按下適當的按鈕后,它會增加分數,隨機選擇其他按鈕并重復。

游戲實際上持續了31秒,但使用30秒時,您的感覺是您獲得了29秒。對于31秒的游戲,計時器顯示30秒,然后等待一秒鐘遞減。當達到0時,游戲停止。如果使用30秒計時器,則游戲將顯示30秒,然后立即更改為29秒。看來您還沒用完30秒(盡管可以)。我發現,比讓用戶認為自己在被騙更值得多花一秒鐘!

時間一到,它會顯示玩家得分10秒,并在適當的時候更新高分并返回到屏幕保護程序(顯示游戲的最高得分)。

/*

Play the game

*/

void PlayGame()

{

unsigned long endTime = millis() + 31000;

int score = 0;

Debug(“endTime: ”, endTime);

Debug(“millis(): ”, millis()); long randButton = random(8);

while (millis() 《 endTime)

{

// Set the button to press as lit

SetLED(HIGH, LED[randButton]);

UpdateDisplay((endTime - millis())/1000, score);

// Check to see if the button was pressed

if(digitalRead(BUTTON[randButton]))

{

score ++;

// Turn off the button

SetLED(LOW, LED[randButton]);

// Get the new button and check it has changed

int newButton = random(8);

while(newButton == randButton)

{

newButton = random(8);

}

// Values differ, so continue

randButton = newButton;

}

}

// Clear all the LEDs

SetLEDs(0);

// Wait 10 seconds to show the score

delay(10000);

// If a new high score, set it

if (score 》 highScore)

highScore = score;

}

更新顯示內容

此功能可在游戲過程中更新顯示內容。該函數將時間和分數轉換為字符串,在任何1個字符值的前面加上“ 0”以將其填充。然后將緩沖區發送到HCMAX7219庫以打印值,然后刷新顯示。

高分函數的工作非常相似,但顯示值HI和高分。

void UpdateDisplay(unsigned long time, int score)

{

// Update the time, make sure it is 2 digits

String timeStr = String(time);

if(timeStr.length() 《 2)

timeStr = “0” + timeStr;

// Add the score which must be 2 digits

String scoreStr = String(score);

if(scoreStr.length() 《 2)

scoreStr = “0” + scoreStr;

// Combine the string

String numberStr = timeStr + scoreStr;

char charBuf[5];

numberStr.toCharArray(charBuf, 5);

// Display the string

HCMAX7219.printMatrix(charBuf,32);

HCMAX7219.Refresh();

}

2人游戲的改進

我對2人游戲進行了一些改進,應將其移回到單人游戲。其中包括:

高分存儲在EEPROM中,以便在關閉游戲時保存高分。首次打開游戲時,已修改設置以查找被按下的按鈕7。如果在啟動時按下按鈕7,則會將高分重置為0。

如果未按下任何按鈕或按下的按鈕的值,則CheckButtons函數已更改為返回-1。這樣,主菜單就可以檢查返回的值并選擇要在主循環中玩的其他游戲。

步驟8:可選改進

隨著我在原始項目上的進展,我正在不斷改進,更新和完善自己的工作。

用于2個玩家游戲的第二個板子

最初,我只是在看一個玩家反應游戲,但在進行游戲測試時,提出了其他可以實施的想法。第一個是兩個玩家選項。通過擁有第二塊棋盤,可以對大量其他游戲進行編碼。通過使用Arduino Mega,可以在一個處理器上運行兩個板。

提高游戲類型的數量

有很多游戲類型可用。大多數是主題的變體

反應游戲-類似于“‘鼠”。如果它點亮,請按按鈕,得到一個指示,重復30秒。

反應減游戲-與游戲#1相同,但是每次按錯都會輸掉一個點。不過,您只能返回零(顯示的大小不足以容納負數)。

多個按鈕反應游戲-與#1類似,但多個按鈕會亮起,并且必須先清除所有按鈕,然后才能顯示一組新的隨機按鈕。

西蒙(Simon)說-盡管我所有的按鈕都是單一顏色,但可以按給定順序點亮燈光并讓玩家重復給定圖案

將顯示添加到按鈕中

如果可以將矩陣顯示添加到每個按鈕中,并在中間添加較大的矩陣顯示,則可以提出簡單的問題,并選擇多項答案。即使每個按鈕上都沒有顯示,您也可以給每個按鈕編號,然后問一些簡單的數學問題。

責任編輯:wv

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • led
    led
    +關注

    關注

    242

    文章

    23866

    瀏覽量

    674866
  • Arduino
    +關注

    關注

    190

    文章

    6499

    瀏覽量

    192456
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【VisionFive 2單板計算機試用體驗】VisionFive 2霸氣的游戲

    這次的測試活動,每人人手送游戲機,非常的好啊!!! 很高興收到賽昉科技發放的VisionFive 2開發板,VisionFive 2是全球首款集成了3D GPU的高性能量產RISC-V
    發表于 07-13 20:41

    超150款游戲現已支持NVIDIA Reflex

    NVIDIA Reflex 是項顛覆性技術,可降低 GeForce 顯卡、臺式電腦和筆記本電腦的 PC 延遲,讓玩家更迅速地作出反應,使其在多人游戲中更具競爭力,并且該技術能夠讓單人游戲
    的頭像 發表于 06-26 09:29 ?446次閱讀

    樹莓派復古游戲,你會選哪一個

    復古游戲與樹莓派單板計算機的組合十分常見。在樹莓派項目列表中,幾乎都會包含至少復古游戲項目。復古游戲發行版讓在樹莓派上開啟復古
    的頭像 發表于 06-16 16:56 ?238次閱讀
    樹莓派復古<b class='flag-5'>游戲</b>,你會選哪<b class='flag-5'>一個</b>?

    鴻蒙5開發寶藏案例分享---多開發實例(游戲

    ?【開發者必看】鴻蒙隱藏寶箱大公開!這些實戰案例讓你的開發效率翻倍! 哈嘍各位開發者小伙伴!今天要和大家分享讓我拍大腿的發現——原來鴻蒙官方早就給我們準備了超多高質量開發案例!(就像在衣柜里翻出
    發表于 06-03 18:22

    游戲手柄振動馬達:沉浸式游戲體驗的核心

    游戲手柄振動馬達是現代游戲設備中不可或缺的部分,它為玩家提供了更加沉浸式的游戲體驗。通過精確的振動反饋,游戲手柄振動馬達能夠將
    的頭像 發表于 05-17 00:05 ?262次閱讀

    使用ADHV4702創建高壓精密恒流源,如何優化?

    我想使用ADHV4702創建高壓精密恒流源,通過切換RS的檔位,使得該恒流源可以輸出pA到A級的電流,但是這個電路無法仿真,請問應該如何優化
    發表于 03-25 06:07

    流動化學和微反應技術特點1

    反應器是微加工或其他結構化的設備,至少有(特性)尺寸小于1毫米。通常使用的最小結構是幾十微米,但也有尺寸更小的例外。微反應技術利用微反應
    的頭像 發表于 02-28 14:05 ?458次閱讀

    電位對中和反應的影響

    電位對中和反應具有顯著的影響,主要體現在以下幾個方面: 、驅動電子轉移 在酸堿中和反應中,電子的轉移是由電位差驅動的。電位是反映電化學
    的頭像 發表于 12-28 14:10 ?694次閱讀

    電荷守恒定律在化學反應中的作用

    在自然界中,電荷守恒定律是基本的物理原理,它規定了電荷既不會被創造,也不會被消滅,只能從物體轉移到另一個物體,或者從物體的
    的頭像 發表于 12-16 14:43 ?1980次閱讀

    行業首個芯片級游戲技術,OPPO「風馳游戲內核」正式亮相游戲大會

    12月12日,游戲大會在中國深圳正式舉行。OPPO首席產品官劉作虎宣布,繼影像與AI后,游戲體驗將成為OPPO性能賽道的戰略級方向,OPPO將著力打造行業第
    的頭像 發表于 12-13 10:20 ?700次閱讀
    行業首個芯片級<b class='flag-5'>游戲</b>技術,OPPO「風馳<b class='flag-5'>游戲</b>內核」正式亮相<b class='flag-5'>一</b>加<b class='flag-5'>游戲</b>大會

    創建5G的邏輯卷

    要求創建5G的邏輯卷 思路: 1. 物理的設備 2. 將物理設備做成物理卷 3. 創建卷組并將物理卷加入其中 4. 創建邏輯卷 5. 格
    的頭像 發表于 12-04 10:31 ?466次閱讀

    反應器在有機合成及催化中的應用

    反應器在有機合成及催化中的應用是跨學科的研究領域,結合了化學反應和化學工程的知識。它首次在化學反應和化學工程的交叉領域全面系統地總結了
    的頭像 發表于 11-13 15:07 ?601次閱讀

    ChatGPT 在游戲開發中的創新應用

    、流暢的對話。在角色扮演游戲(RPG)或冒險游戲中,這可以用于創建動態對話系統。傳統的游戲對話系統通常是預設的,玩家的選擇有限,而ChatGPT可以生成更多樣化的對話,讓每個玩家的體驗
    的頭像 發表于 10-25 18:05 ?1254次閱讀

    反應器介紹

    、 微反應器 的定義 微反應器,即微通道反應器,是利用精密加工技術制造的特征尺寸在10到300微米(或者1000微米)之間的微型反應器。這
    的頭像 發表于 09-30 11:33 ?1098次閱讀

    如何使用TINA創建推挽變壓器?

    請問如何使用TINA創建推挽變壓器?謝謝
    發表于 08-09 06:56
    主站蜘蛛池模板: 国产成人综合视频 | 我半夜摸妺妺的奶C了她软件 | 挺进老师的紧窄小肉六电影完整版 | 久久蜜视频| 欧美大片免费观看 | 久久精品国产亚洲精品2020 | 国产精品99精品无码视亚 | 亚洲精品国产在线网站 | 日本久久频这里精品99 | 超碰公开在线caopon | 高清一区二区亚洲欧美日韩 | 国产精品一区二区20P | 蜜芽在线播放免费人成日韩视频 | 大地影院日本韩国电影免费观看 | 国产睡熟迷奷系列网站 | 99精品欧美一区二区三区美图 | 亚洲精品国产拍在线观看 | 国产精品AV色欲蜜臀在线 | 欧美18videosex性欧美老师 | 无羞耻肉动漫在线观看 | 国产亚洲精品久久久久5区 国产亚洲精品久久久久 | 99er久久国产精品在线 | 人与人特黄一级 | 中文字幕在线不卡精品视频99 | 欧美AAAAAA级午夜福利视频 | 成年人国产视频 | 啦啦啦影院视频在线看高清... | 伊人亚洲AV久久无码精品 | 青青青青草 | 国产精品免费观看视频 | 欧美大香线蕉线伊人久久 | 亚洲日韩视频免费观看 | 一本之道高清www在线观看 | 久久草福利自拍视频在线观看 | YIN荡的老师系列第6部分视频 | 美国大臿蕉香蕉大视频 | 草莓视频在线看免费高清观看 | 美女露出逼 | 久久yy99re66| 国产精品97久久AV色婷婷综合 | 成在线人免费视频 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品