0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

使用Arduino Leonardo將操縱桿作為游戲控制器的方式

科技觀察員 ? 來源:circuitdigest ? 作者:Pradeep Kumar ? 2022-09-01 16:17 ? 次閱讀

在這個項目中,我們將使用與游戲手柄或游戲控制器相同的操縱桿來玩任何需要左右移動的電腦游戲。要玩需要更多控制選項的游戲,可以使用兩個或更多操縱桿。在這里,我們將使用 Arduino Leonardo 將操縱桿作為游戲控制器進行接口。Arduino Leonardo 比 Uno 的優(yōu)勢在于我們可以在其上安裝 USB 驅(qū)動程序,并且在連接時可以被計算機檢測為鼠標(biāo)、鍵盤或操縱桿。

所需組件

阿杜諾·萊昂納多

雙軸XY操縱桿模塊

Arduino IDE

連接線

阿杜諾·萊昂納多

對于這個項目,我們使用的是 Arduino Leonardo,它是一個基于 ATmega32u4 的微控制器板。它有 20 個數(shù)字輸入/輸出引腳(其中 7 個可用作 PWM 輸出,12 個用作模擬輸入)、一個 16 MHz 晶體振蕩器、一個微型 USB 連接、一個電源插孔、一個 ICSP 接頭和一個復(fù)位按鈕。它包含支持微控制器所需的一切;只需使用 USB 電纜將其連接到計算機或使用 AC-DC 適配器或電池為其供電即可開始使用。

pYYBAGMQaj6AHZghAALXAvZWT4c005.png

Leonardo 與之前所有開發(fā)板的不同之處在于 ATmega32u4 具有內(nèi)置 USB 通信功能,無需輔助處理器。除了虛擬 (CDC) 串行/COM 端口外,這允許 Leonardo 在連接的計算機上顯示為鼠標(biāo)和鍵盤。

技術(shù)規(guī)格

pYYBAGMQajmAVXUVAAAuditmaho209.png

引腳輸出參考

pYYBAGMQajaAVMInAAEQM_TOS94801.png

雙軸XY操縱桿模塊

操縱桿 有不同的形狀和尺寸。典型的 操縱桿模塊 如下圖所示。此操縱桿模塊通常提供模擬輸出,并且此模塊提供的輸出電壓會根據(jù)我們移動它的方向不斷變化。我們可以通過使用一些微控制器解釋這些電壓變化來獲得運動方向。

poYBAGMQajKAdMfyAALMzeimLuw480.png

如您所見,此操縱桿模塊有兩個軸。它們是 X 軸和 Y 軸。JOY STICK 的每個軸都安裝在電位器或電位器上。這些電位器的中點被驅(qū)動為 Rx 和 Ry。所以 Rx 和 Ry 是這些底池的可變點。當(dāng)操縱桿處于待機狀態(tài)時,Rx 和 Ry 充當(dāng)分壓器。

當(dāng)操縱桿沿水平軸移動時,Rx 引腳上的電壓會發(fā)生變化。類似地,當(dāng)它沿垂直軸移動時,Ry 引腳上的電壓會發(fā)生變化。所以 我們在兩個 ADC 輸出上有四個方向的操縱桿。當(dāng)搖桿移動時,每個引腳上的電壓會根據(jù)方向變高或變低。

電路原理

此Arduino 操縱桿游戲控制器需要 Arduino 和操縱桿之間的連接,如下所示:

pYYBAGMQai6AH4NcAABQqxp_6jU359.png

poYBAGMQaiqAdZmgAAM4sBm9q_Q844.png

poYBAGMQaiiAdQhRAAaZck6_7KM309.png

代碼和工作說明

最后給出完整的代碼和演示視頻;在這里,我們解釋它的幾個重要部分。

首先,我們需要初始化鍵盤庫

#include《鍵盤.h》

接下來在下面的代碼中,我們分別為模擬引腳 A0 和 A1 初始化了操縱桿模塊的 X 和 Y 軸。

const int X_pin 和 const int Y_pin 分別

讀取 VRX 引腳的模擬值,如果值為 1023,則給出“向上”命令,如果值為 0,則給出“向下”命令。

類似地,讀取 VRY 引腳的模擬值,如果值為 1023,則給出“右”命令,如果值為 0,則給出“左”命令。

操縱桿頂部還有一個按鈕,因此該按鈕 (SW) 也會被讀取,如果按下按鈕,則值將為 0,然后給出“輸入”命令。

最后將代碼燒錄到 Arduino 中,并將 Arduino 與計算機連接。

接下來檢查控制面板中的“設(shè)備和打印機”,您將能夠在設(shè)備部分下看到“ Arduino Leonardo”,如下圖所示?,F(xiàn)在您可以開始使用操縱桿了。

pYYBAGMQaiOAe5N7AADm5E9LWdw341.png

我們可以使用此操縱桿控制任何游戲控件。搖桿內(nèi)部有兩個電位器,一個用于 X 軸移動,另一個用于 Y 軸移動。每個電位器從 Arduino 獲得 5v。所以當(dāng)我們移動操縱桿時,電壓值會改變,模擬引腳 A0 和 A1 的模擬值也會改變。所以操縱桿將充當(dāng)游戲手柄。

poYBAGMQah-ABymMAAavtoU4LUE891.png

因此,這就是使用 Arduino Leonardo 將普通操縱桿轉(zhuǎn)換為游戲控制器的方式,并可用于玩具有向左、向右、向上和向下移動的所有控件的游戲。如前所述,除了這四個基本功能之外,可以連接多個操縱桿以獲得更多控制。

#include<鍵盤.h>


常量 int SW_pin = 2; // 數(shù)字引腳連接到開關(guān)輸出

const int X_pin = A0; // 模擬引腳連接到 X 輸出

const int Y_pin = A1; // 模擬引腳連接到 Y 輸出

int x, y;

無效設(shè)置()

{

pinMode(SW_pin,輸入);// SW 引腳設(shè)置為輸入

digitalWrite(SW_pin, HIGH); // 向 SW 引腳寫入高值

Serial.begin(115200);

鍵盤.開始();

}

無效循環(huán)()

{

x = 模擬讀?。╔_pin);// 讀取 X_pin 的輸出

if (x == 1023) // 檢查 x = 1023

{

Serial.println("Up:");

鍵盤.press(218); // 鍵向上移動

}

else

{

鍵盤.release(218); // 釋放鍵

}

x = analogRead(X_pin); // 讀取 X_pin 的輸出

if (x == 0) // 檢查 x 的值是否 = 0


{

Serial.println("向下:");

鍵盤.press(217); // 鍵向下移動

}

else

{

Keyboard.release(217); // 釋放鍵

}

y = analogRead(Y_pin); // 讀取 Y_pin 的輸出


if (y == 1023) // 檢查 y = 1023

{

Serial.println("Right:");

鍵盤.press(216); // 鍵向右移動

}

else

{

Keyboard.release(216); // 釋放鍵

}

y = analogRead(Y_pin); // 讀取 Y_pin 的輸出


if (y == 0) // 檢查 y = 0

{

Serial.println("Left:");

鍵盤.press(215); // 鍵向左移動


}

else

{

鍵盤.release(215); // 釋放密鑰

}

int z = digitalRead(SW_pin); // 讀取 SW pin 的值

if (z == 0) // 檢查 z 的值是否 = 0

{

Serial.println("Enter:");

鍵盤.println(); //按下回車鍵

}

delay(500);

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6469

    瀏覽量

    187109
  • 操縱桿
    +關(guān)注

    關(guān)注

    0

    文章

    69

    瀏覽量

    8545
  • 游戲控制器
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    3013
收藏 人收藏

    評論

    相關(guān)推薦

    用于游戲手柄/操縱桿的PSoC嵌入式系統(tǒng)介紹

    用于游戲手柄/操縱桿的PSoC嵌入式系統(tǒng),使用CY7C63000 USB控制器設(shè)計低成本USB鼠標(biāo)
    發(fā)表于 07-19 16:06

    如何使用Arduino UNO、操縱桿模塊和NRF24L01模塊控制伺服電機?

    文章目錄參考資料:如何使用Arduino UNO、操縱桿模塊和NRF24L01模塊控制伺服電機1. 必需的組件2. 伺服電機控制如何工作3. NRF24L01引腳說明4. 電路原理圖5
    發(fā)表于 06-28 09:49

    PS2游戲操縱桿搖桿模塊

    PS2游戲操縱桿搖桿模塊(雙軸按鍵搖桿)產(chǎn)品簡介:雙軸按鍵搖桿傳感模塊由采用PS2搖桿電位制作,具有(X,Y)2軸模擬輸出,(Z)1路按鈕數(shù)字輸出。配合
    發(fā)表于 07-19 09:40

    基于arduino的超級無尾卡丁車操縱桿

    描述超級無尾卡丁車操縱桿這是我為在 2021 年的 arduino 日玩 Super Tux Kart 而創(chuàng)建的 arduino 操縱桿的演變。您可以在下面看到第一個版本,它是精美的紙
    發(fā)表于 06-24 06:52

    基于C++的游戲操縱桿模擬鼠標(biāo)的程序

      要編寫一個支持游戲操縱桿的應(yīng)用程序,首先必須要捕獲游戲操縱桿,接著要處理Windows發(fā)送給程序窗口的操縱桿消息,最后使用完
    發(fā)表于 09-01 11:54 ?2009次閱讀

    怎樣用Arduino操縱桿控制伺服電機

    這個項目的硬件部分非常容易制作。首先,操縱桿模塊與Arduino連接。操縱桿模塊和Arduino的連接如下:
    的頭像 發(fā)表于 08-01 14:24 ?5796次閱讀

    使用操縱桿模塊和LCD制作游戲

    電子發(fā)燒友網(wǎng)站提供《使用操縱桿模塊和LCD制作游戲.zip》資料免費下載
    發(fā)表于 10-28 14:27 ?0次下載
    使用<b class='flag-5'>操縱桿</b>模塊和LCD制作<b class='flag-5'>游戲</b>

    使用Arduino Uno制作操縱桿控制的PC鼠標(biāo)

    電子發(fā)燒友網(wǎng)站提供《使用Arduino Uno制作操縱桿控制的PC鼠標(biāo).zip》資料免費下載
    發(fā)表于 11-04 14:46 ?2次下載
    使用<b class='flag-5'>Arduino</b> Uno制作<b class='flag-5'>操縱桿</b><b class='flag-5'>控制</b>的PC鼠標(biāo)

    如何使用Arduino操縱桿控制BLDC電機

    電子發(fā)燒友網(wǎng)站提供《如何使用Arduino操縱桿控制BLDC電機.zip》資料免費下載
    發(fā)表于 11-24 10:10 ?0次下載
    如何使用<b class='flag-5'>Arduino</b>和<b class='flag-5'>操縱桿</b><b class='flag-5'>控制</b>BLDC電機

    如何使用Arduino創(chuàng)建操縱桿控制器

    電子發(fā)燒友網(wǎng)站提供《如何使用Arduino創(chuàng)建操縱桿控制器.zip》資料免費下載
    發(fā)表于 12-06 14:35 ?0次下載
    如何使用<b class='flag-5'>Arduino</b>創(chuàng)建<b class='flag-5'>操縱桿</b><b class='flag-5'>控制器</b>

    Arduino之使用PS2操縱桿控制LED

    電子發(fā)燒友網(wǎng)站提供《Arduino之使用PS2操縱桿控制LED.zip》資料免費下載
    發(fā)表于 12-22 16:39 ?2次下載
    <b class='flag-5'>Arduino</b>之使用PS2<b class='flag-5'>操縱桿</b><b class='flag-5'>控制</b>LED

    基于Arduino Pro Mini的操縱桿手柄和DIY相機滑塊

    方案介紹操縱桿手柄控制器可以使用兩軸值(操縱桿旋鈕的移動方向)來控制項目。此外,在這個項目中,我制作了一個 DIY 相機滑塊,并使用 Arduino
    發(fā)表于 12-27 16:35 ?0次下載

    Arduino基于網(wǎng)絡(luò)的操縱桿

    電子發(fā)燒友網(wǎng)站提供《Arduino基于網(wǎng)絡(luò)的操縱桿.zip》資料免費下載
    發(fā)表于 02-01 10:06 ?0次下載
    <b class='flag-5'>Arduino</b>基于網(wǎng)絡(luò)的<b class='flag-5'>操縱桿</b>

    如何雙軸操縱桿Arduino Uno連接

    Duel axis Joystick:Arduino搖桿模塊,采用雙軸電位控制X、Y軸。按下時,它會激活一個開關(guān)。它基于 PS2 控制器操縱桿
    發(fā)表于 07-07 15:01 ?0次下載
    如何<b class='flag-5'>將</b>雙軸<b class='flag-5'>操縱桿</b>與<b class='flag-5'>Arduino</b> Uno連接

    如何使用操縱桿Arduino控制伺服電機

    在這篇文章中,我們學(xué)習(xí)如何使用操縱桿Arduino控制伺服電機。我們看到有關(guān)操縱桿,其銷,
    的頭像 發(fā)表于 07-27 11:47 ?1808次閱讀
    如何使用<b class='flag-5'>操縱桿</b>和<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b>伺服電機