如何用遊戲控制器和arduino控制機器人

你一直想用電子遊戲控制器控制Arduino嗎?好吧,現在你只需要這篇文章和一個Xbox360控制器就可以了!...

Arduinos和類似的兼容板是各地DIY修補匠的首選設備之一。無論你是一個剛開始使用Arduino的初學者,還是一個已經在你的生活中使用Arduino的人,它們都為無數令人敬畏的項目提供了一個平臺。

contol-robot-arduino

今天我們將探索一種創造性的方法來控制伺服使用處理,和Xbox360控制器。如果你已經相當精通遊戲開發,你可能會對我們的自定義遊戲控制器教程感興趣,它使用Unity。

本教程將假設您有一點先驗知識,如果這是您第一次嘗試Arduino小提琴,您可能會發現我們的Arduino指南在這裡很有用。同樣,如果這是您第一次使用Java,可能會有點混亂。雖然Processing使用的是平臺的簡化版本,但這些Java概念和技巧可能仍然有用。

你需要什麼

control robots with game controller and arduino

  • 1個Arduino。我們今天用的是UNO。
  • 1個愛好伺服。任何能用Arduino銷的東西。
  • 1個有線Xbox360控制器。儘管這在技術上幾乎適用於任何控制器。
  • 幾根連接線。

除此之外,您還需要從各自的網站下載Processing和ArduinoIDE。

準備arduino

control robots with game controller and arduino

首先我們需要安裝伺服系統。這裡的接線顏色可能不同,但一般情況下,5v引腳連接紅色,GND引腳連接棕色或黑色。通常為黃色或橙色的數據線連接到引腳10。

檢查您的線路,並將Arduino連接到計算機。打開Arduino IDE。

control robots with game controller and arduino

打開位於文件>示例>Firmata>標準Firmata的StandardFirmata草圖。這個草圖為串行端口的外部控制建立了電路板,和我們在用Python控制Arduino的文章中使用的相同。把草圖上傳到黑板上。

如果上載失敗,請檢查是否在“工具”菜單中選擇了正確的板和端口詳細信息。

我們的Arduino已經準備好了!

設置處理

打開處理,你會得到一個空白的草圖。在此之前,我們需要安裝一些庫。轉到“草圖”菜單,然後選擇“導入庫”>“添加庫”。這將帶來貢獻管理器,任何Arduino用戶都會很熟悉它。

control robots with game controller and arduino

我們需要安裝三個庫來實現這一點。首先是遊戲控制加庫。這是什麼將允許我們使用我們的遊戲控制器與處理。使用“搜索”窗口找到它,然後單擊右下角的“安裝”。Game Control Plus需要為其配置工具安裝另一個庫,所以我們現在就開始吧。搜索G4P庫並安裝它。

最後,我們需要Arduino(firmata)庫。您猜對了,搜索它,然後單擊“安裝”。安裝了這些東西之後,我們就可以開始測試了,一切都可以正常工作。我們現在使用的是windows10,但大多數平臺都提供了處理功能,包括Raspberry-Pi。想象一下可能性吧!

測試arduino

在我們開始創建自定義草圖之前,讓我們測試Arduino和伺服的處理。打開“文件”>“示例”,然後從“已貢獻的庫”/“Arduino(firmata)”文件夾中選擇“ArduinoServo”。我們將用這個來測試我們的伺服,但首先我們可能需要改變一些東西。

向下滾動草圖並找到以下行:

println(Arduino.list());

如果註釋為“輸出”,請在println之前刪除兩個斜槓(Arduino.list());,保存草圖。通過單擊play圖標運行它,並在底部的控制檯上保持一個眼睛。這將列出連接到COM端口的所有內容。

control robots with game controller and arduino

在我的例子中,我的Arduino在COM 8上,這是這裡列出的第三個端口。這一點很重要,因為下一行中的代碼有一個數組,其值決定要使用哪個COM端口。

control robots with game controller and arduino

我們需要改變它以反映我們的COM端口。對我來說,這是第三個位置,或索引編號2:

arduino = new Arduino(this, Arduino.list()[2], 57600);

我們需要對這段代碼做一些其他的小改動來測試它。向下滾動到Arduino管腳的設置位置,並在此處註釋其中一行。將另一個更改為針腳10。

//arduino.pinMode(4, Arduino.SERVO);arduino.pinMode(10, Arduino.SERVO);

我們需要在Draw()方法中執行相同的操作:

arduino.servoWrite(10, c***train(mouseX / 2, 0, 180));// arduino.servoWrite(4, c***train(180 - mouseX / 2, 0, 180));

保存草圖,然後運行它。你應該能夠移動你的伺服移動你的鼠標在窗口上來回移動程序生成。

control robots with game controller and arduino

如果它不適合你,檢查你的伺服線路,並檢查你有你的COM端口正確的陣列位置。一旦你知道Arduino正在與處理進行良好的溝通,是時候繼續前進了。

配置控制器

我們使用的遊戲控制加庫也有一個強大的配置。確保控制器已**,打開Configurator示例項目並運行它。您將得到如下菜單:

control robots with game controller and arduino

單擊您的控制器名稱,將彈出一個更大的配置窗口。

control robots with game controller and arduino

這看起來可能相當令人望而生畏,但設計得儘可能簡單。在左邊,用您想要的變量名填寫第一個鍵。這個變量將控制伺服的位置,所以我稱之為servoPos。

在它旁邊的框中,您可以簡要描述它的功能。現在拿起你的控制器,移動你想用伺服棒。一個小小的實驗表明,右拇指與X旋轉框相對應。在servoPos變量和此框之間拖動一行。

control robots with game controller and arduino

現在我們需要將配置保存為數據文件。在窗口的右上角,填寫設備角色字段和文件名字段。

文件名很重要,因為您將在代碼中使用它。我把它叫做xbs來保持簡單。單擊“驗證”,然後單擊“保存”。這會為我們的控制器編寫一個包含指令的文件,我們可以稍後使用。

control robots with game controller and arduino

準備自定義草圖文件夾

讓我們設置工作文件夾。打開一個空白的加工草圖,然後用你喜歡的名字保存它。這將在保存位置為它創建一個目錄。

現在導航到Documents/Processing/libraries/GameControlPlus/examples/Configurator並複製標記為data的文件夾。這個文件夾包含我們剛剛創建的配置文件。導航到新保存的空白草圖的目錄,然後粘貼數據文件夾。

control robots with game controller and arduino

創建自定義草圖

現在一切就緒,我們可以開始用我們的兩個庫來繪製草圖。我們將一步一步地討論這個問題,但是如果您想繼續,可以下載完整的sketch和data文件夾。請注意,您可能仍需要修改代碼以反映您的Arduino COM端口。

首先導入我們需要的所有庫:

import processing.serial.*;import net.java.games.input.*;import org.gamecontrolplus.*;import org.gamecontrolplus.gui.*;import cc.arduino.*;import org.firmata.*;

我們還需要聲明ControlDevice、I/O和Arduino,以及一個用於保存拇指杆中的值的浮點:

ControlDevice cont;ControlIO control;Arduino arduino;float thumb;

我們的setup()方法創建一個小窗口,一個控制器實例,並將設備與配置文件相匹配。在這一點上,確保配置數據文件的文件名正確非常重要:

void setup() { size(360, 200); control = ControlIO.getInstance(this); cont = control.getMatchedDevice("xbs"); if (cont == null) { println("not today chump"); // write better exit statements than me System.exit(-1); } // println(Arduino.list()); arduino = new Arduino(this, Arduino.list()[2], 57600); arduino.pinMode(10, Arduino.SERVO);}

我們還檢查在這個階段是否沒有適用的控制器,如果需要,退出程序。雖然不需要使用size()創建的窗口,但它稍後會給我們一些反饋,告訴我們是否從控制器獲得有用的值。我們也在這裡初始化我們的Arduino和pin,就像我們在測試時做的那樣。

現在我們創建一個小方法,從我們的控制器獲取輸入值,並將其映射到我們的伺服能夠使用的值:

public void getUserInput() { thumb = map(cont.getSlider("servoPos").getValue(), -1, 1, 0, 180);}

這一行代碼使用我們的數據文件來獲取我們命名的控制servoPos,它鏈接到控制器的右拇指,並從中讀取值。然後它映射這些值並將值存儲在thumb float變量中。

現在這個代碼永遠不會被調用,我們現在就修復它。

void draw() { getUserInput(); background(thumb,100,255); arduino.servoWrite(10, (int)thumb);}

draw()類似於ArduinoIDE中的loop()方法。每一幀,它都調用getUserInput()方法並更新thumb值。它使用這個值來更改background()的紅色值,從而提供值更改的可視指示器。然後使用arduino.servoWrite公司()功能。請注意,我們必須將thumb轉換為整數值,因為servoWrite函數使用兩個整數(管腳號和角度)作為其參數。

檢查代碼是否有錯誤,保存代碼,然後單擊“運行”。在初始化Arduino時稍微延遲一下,它應該是這樣的:

control robots with game controller and arduino

用遊戲控制器和arduino控制:完成!

這個項目在許多方面是相當深入的經驗不足的程序員,儘管奇妙的圖書館可以幫助我們。它所代表的是一種新的方式來思考如何控制機器人,以及你所建造的任何其他設備。

這個項目將與我們的指南完美地建立一個激光炮塔,讓你完全控制它。你可以像我們簡單的Arduino警報教程一樣設置一個壓電蜂鳴器,並使用你的控制器來改變蜂鳴器的音調或燈光的顏色。

或者,你也可以造一個巨大的機器人來接管地球。只要你有足夠長的USB線!

  • 發表於 2021-03-25 23:05
  • 閱讀 ( 47 )
  • 分類:DIY

你可能感興趣的文章

如何用python程式設計和控制arduino

...。隨著這門新語言的興起,DIY電子領域也蓬勃發展。來自Arduino和Raspberry Pi等公司的開發板和單板計算機改變了人們生產家用電子產品的方式。如果你能用Python程式設計一個Arduino,那不是很棒嗎? ...

  • 發佈於 2021-03-11 16:20
  • 閲讀 ( 75 )

你現在可以做10個預算的arduino星球大戰專案

... 在本文中,我們將介紹一些基於Arduino的星球大戰專案,你可以在預算。這些專案有的只花了幾美元,有的甚至高達40美元。我們還加入了一些更大專案的連結,雖然沒有一個專案可以說是預算意識強,但...

  • 發佈於 2021-03-12 05:05
  • 閲讀 ( 52 )

5個很棒的電視和電影機器人,你可以用樹莓皮做

...有一個驅動單元應該是理想的整合樹莓圓周率(也許一個Arduino,你可以一起使用這兩個)和發展一個更現實的R2-D2體驗。 ...

  • 發佈於 2021-03-12 06:35
  • 閲讀 ( 47 )

6種將arduino連線到android的簡單方法

Arduino板和類似的微控制器使創造力比以往任何時候都更容易獲得。無論你是控制LED燈帶,自動化你的家,甚至保護你的財產,這些小奇蹟是大多數DIY電子產品的核心。 ...

  • 發佈於 2021-03-12 23:13
  • 閲讀 ( 61 )

如何用arduino遙控你的家,5個diy專案

...何工作的基礎知識,並給出一些任何人都能做的簡單DIY Arduino專案的例子。 ...

  • 發佈於 2021-03-13 11:21
  • 閲讀 ( 57 )

10個涉及程式設計或指令碼的有益愛好

... Arduino是電子、程式設計和休閒的完美結合。它是一個開源的微控制器(即一個微型的單電路計算機),具有各種元件和可程式設計邏輯。把它想象成**使用的樂高,使用實...

  • 發佈於 2021-03-14 18:18
  • 閲讀 ( 69 )

arduino vs raspberry pi:哪臺是你的迷你電腦?

... Arduino是一個微型控制器,實際上不是一臺微型計算機。微控制器只是構成整個計算機的一小部分。Arduino僅提供Raspberry Pi功能的一個子集。 ...

  • 發佈於 2021-03-15 06:18
  • 閲讀 ( 53 )

12款電子套件激發diy創意

... 8arduino入門套件(70美元/75英鎊) ...

  • 發佈於 2021-03-16 15:48
  • 閲讀 ( 54 )

如何用arduino和unity製作自定義遊戲控制器

你有沒有想過設計自己的遊戲控制器?比你想象的容易! ...

  • 發佈於 2021-03-17 05:47
  • 閲讀 ( 68 )

為你生活中的arduino tinkerer準備的10個禮物

...是一個初出茅廬的年輕發明家還是一個終生的硬體駭客,Arduino板和配件都是完美的禮物。 ...

  • 發佈於 2021-03-19 01:59
  • 閲讀 ( 60 )