<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

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

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

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

所需組件

阿杜諾·萊昂納多

雙軸XY操縱桿模塊

Arduino IDE

連接線

阿杜諾·萊昂納多

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

pYYBAGMQaj6AHZghAALXAvZWT4c005.png

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

技術規格

pYYBAGMQajmAVXUVAAAuditmaho209.png

引腳輸出參考

pYYBAGMQajaAVMInAAEQM_TOS94801.png

雙軸XY操縱桿模塊

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

poYBAGMQajKAdMfyAALMzeimLuw480.png

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

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

電路原理

此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 與計算機連接。

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

pYYBAGMQaiOAe5N7AADm5E9LWdw341.png

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

poYBAGMQah-ABymMAAavtoU4LUE891.png

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

#include<鍵盤.h>


常量 int SW_pin = 2; // 數字引腳連接到開關輸出

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

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

int x, y;

無效設置()

{

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

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

Serial.begin(115200);

鍵盤.開始();

}

無效循環()

{

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);

}

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

    關注

    185

    文章

    6434

    瀏覽量

    185199
  • 操縱桿
    +關注

    關注

    0

    文章

    67

    瀏覽量

    8465
  • 游戲控制器
    +關注

    關注

    0

    文章

    15

    瀏覽量

    2939
收藏 人收藏

    評論

    相關推薦

    labview操縱桿

    用labview自帶的初始化操縱桿,輸入設備信息,獲取操縱桿的坐標軸,會占很大的內存?。。?!還有其他方法嗎??!
    發表于 04-13 01:06

    小白求教,怎么實現操縱桿控制電機的旋轉角度

    小白求教,怎么實現操縱桿控制電機的旋轉角度。想要實現,電機保持慢轉速,操縱桿前推控制向前轉,后推控制向后轉,
    發表于 02-05 14:27

    Digilent Pmod NAV和操縱桿

    允許通過按下兩個按鈕中的任何一個來調整強度。對于較?。ǔ叽纾┑膽?,也可以使用Arduino Pro Mini 3.3V版本。免責聲明:確保使用3.3V而不是5V,因為操縱桿的額定電壓僅為3.3V。有
    發表于 11-01 15:52

    編碼操縱桿問題

    Y值總是2.5V,因為操縱桿以Y方向為中心,X軸極值中的螺旋槳功率很小。螺旋槳的動力設置為5個前進擋和3個RE。詩齒輪。因此,我的控制循環讀取操縱桿x/y值,然后通過9個I/IF I/OR語句來決定我
    發表于 12-21 15:47

    USB操縱桿如何編程

    我正在做一個項目,我們必須做一個無線USB操縱桿。我搜索了各種各樣的USB微控制器,如CY7C6300 X,并閱讀了它的數據表。誰能告訴我如何編程這個微控制器或有其他更好的微控制器。
    發表于 04-19 09:28

    用于游戲手柄/操縱桿的PSoC嵌入式系統介紹

    用于游戲手柄/操縱桿的PSoC嵌入式系統,使用CY7C63000 USB控制器設計低成本USB鼠標
    發表于 07-19 16:06

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

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

    PS2游戲操縱桿搖桿模塊

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

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

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

    一個Apple IIe數字操縱桿適配器

    收到電路板,并且只使用了我自制的原型和從 KiCAD 文件生成的 CNC 文件。中心周圍有一些抖動(由于未屏蔽的控制器電纜),但在最好使用數字操縱桿玩的游戲中似乎并不重要。調整游戲
    發表于 07-06 06:59

    MAME旋轉操縱桿轉USB的資料分享

    描述MAME 旋轉操縱桿轉 USB要使用像 SNK 的 LS30 這樣的街機旋轉操縱桿或像 MAME 中的 Happ Controls 旋轉這樣的克隆,需要將 12 個旋轉位置開關轉換為順時針或
    發表于 07-22 06:12

    同時使用1個操縱桿玩2臺使用Atari DB-9風格操縱桿端口的電腦

    描述Perifractic 和 Lorin Millsap 的 DoubleJoy - 使用 2 臺計算機和 1 個操縱桿這個瘋狂的科學實驗讓您可以玩 2 臺使用 Atari DB-9 風格操縱桿端口的電腦,同時使用 1 個操縱桿
    發表于 08-12 07:11

    設計一個ESP32操縱桿控制器的教程

    。印刷電路板操縱桿控制器由許多制造商制造,通常使用 Arduino Nano 板和 nRF24L01 或藍牙選項進行通信。在設計 PCB 時,我更喜歡蝙蝠主題以具有獨特的設計。我也更喜歡 ESP32
    發表于 09-02 06:17

    如何使用Arduino創建操縱桿控制器

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

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

    在這篇文章中,我們將學習如何使用操縱桿Arduino控制伺服電機。我們將看到有關操縱桿,其銷,其結構和工作的概述。我們將從操縱桿中提取有用
    的頭像 發表于 07-27 11:47 ?1311次閱讀
    如何使用<b class='flag-5'>操縱桿</b>和<b class='flag-5'>Arduino</b><b class='flag-5'>控制</b>伺服電機
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>