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

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

3天內不再提示

如何使用Flex傳感器和電位計構建憤怒小鳥(niǎo)的游戲控制器

科技觀(guān)察員 ? 來(lái)源:circuitdigest ? 作者:阿斯文斯·拉吉 ? 2023-01-25 16:02 ? 次閱讀

這一切都始于黑暗時(shí)代的一款名為“馬里奧”的小游戲,從一個(gè)小家伙跳上鴨子拯救我的公主到成為一個(gè)陽(yáng)剛英俊的王子在波斯漫游(波斯王子)與黑暗作斗爭以拯救我的世界,我一直是玩電子游戲的忠實(shí)粉絲,我從小玩它們。但他們有時(shí)確實(shí)會(huì )感到無(wú)聊,我覺(jué)得參與其中的程度較低。今天,先進(jìn)的游戲機支持虛擬游戲,并幫助我們比鍵盤(pán)或鼠標更好地感受游戲。

作為一名Arduino愛(ài)好者,我厭倦了使用鍵盤(pán)和鼠標玩名為 “憤怒的小鳥(niǎo)” 的著(zhù)名游戲,并決定 使用Flex傳感器和電位計構建自己的游戲控制器 。當柔性傳感器被拉動(dòng)時(shí),彈射器上的鳥(niǎo)也會(huì )被拉動(dòng),您可以使用電位計設置它的發(fā)射方向。然后,當您釋放柔性傳感器時(shí),鳥(niǎo)將被發(fā)射。我非常喜歡這樣做,所以如果你打算構建非常相似的東西,那么本教程將很有幫助。本教程還將有助于 使用電位計控制鼠標光標 。

軟件和硬件要求:

軟件:

  1. Arduino IDE
  2. 處理集成開(kāi)發(fā)環(huán)境
  3. 憤怒的小鳥(niǎo)游戲在電腦

硬件:

  1. Arduino (任何版本)
  2. 電位計
  3. 柔性傳感器
  4. 47K 歐姆電阻器
  5. 連接線(xiàn)
  6. 面包板

背后的概念:

Arduino 板從電位計和 Flex Senor 讀取值 ,并通過(guò)正常的 Serial.write() 函數通過(guò) USB COM 端口將它們傳輸到筆記本電腦/PC。然后,我們使用 Processing 讀取此信息,并使用 Java 中的 Robot 類(lèi)控制鼠標光標,該類(lèi)受 Process IDE 支持。我們對處理 IDE 進(jìn)行了編程,當拉動(dòng) Flex 傳感器時(shí),將單擊鼠標,并且根據拉動(dòng)的程度,鼠標指針將沿 X 方向移動(dòng)。然后根據電位計的值,我們將在 Y 方向上移動(dòng)鼠標光標,這樣我們就可以設置應該發(fā)射鳥(niǎo)的方向。

使用柔性傳感器和電位計玩憤怒的小鳥(niǎo)游戲

電路圖:

使用柔性傳感器和電位計播放憤怒的小鳥(niǎo)的電路很簡(jiǎn)單。

我們已經(jīng)簡(jiǎn)單地將電位計和柔性傳感器連接到Arduino的模擬輸入(A0,A1)。Flex 傳感器的輸出也使用 47K 下拉電阻下拉。

您可以直接將其連接到面包板上或將它們焊接到 Perf 板上,然后將其組裝在手套或其他東西上以使其更具創(chuàng )意。我只是使用面包板進(jìn)行連接,如下所示:

基于A(yíng)rduino的憤怒的小鳥(niǎo)游戲控制器使用柔性傳感器電路圖

Arduino 計劃:

完整的Arduino代碼在本教程結束時(shí)給出。下面解釋幾個(gè)重要的行。

我們初始化程序以使用 9600 波特率,并開(kāi)始從 Flex 傳感器和電位計讀取值。眾所周知*,serial.write()* 函數一次只能發(fā)送一個(gè)字節的數據。由于一個(gè)字節是 8 位,2^8 = 256。我們將能夠發(fā)送從 0 到 256 的值。因此,我們必須將 Flex 傳感器輸出和電位計輸出的值壓縮為 0 到 256。

為此,我們使用 Arduino 中的 map() 函數。來(lái)自柔性傳感器的所有值都從 5 轉換為 100,因此當我們彎曲傳感器時(shí),它將從 5 遞增,釋放時(shí)它將回到 5。提及鼠標單擊,使用值 1 和 0。發(fā)送 1 時(shí)按下鼠標,發(fā)送 0 時(shí)釋放鼠標。

if (FlexValue>=65 && FlexValue<=120) //my flex sensor varies from 65 to 120, your might be different
  {
  FlexValue = map (FlexValue,120,65,0,100);  //based on bending convert to 0 to 100

  if (FlexValue>=5) // 1 and 0 is used for mouse click so start from 5
   {
   Mclick=true;
   Serial.write(1);  //1 is sent to make mouse left click
   Serial.write(FlexValue); //Flex value is the distance to move mouse in X direction
   }

  else
  {
  Mclick=false;
  Serial.write(0);}
  }

類(lèi)似地,電位計中的值從 101 轉換為 200,通過(guò) map( ) 函數,并發(fā)送到筆記本電腦 COM 端口,通過(guò) Serial.write() 函數,如下所示。

if (potValue<=200)
 {
  potValue = map(potValue,0,200,101,201); //Based in turn convert to 101 to 201
  Serial.write(potValue); //Pot value is the distance to move mouse in Y direction
 }

程序的其余部分使用注釋進(jìn)行解釋。

在此項目中,我們使用處理 IDE 來(lái)讀取 COM 端口值,并根據通過(guò) COM 端口接收的值控制鼠標指針。這個(gè)憤怒的小鳥(niǎo)游戲控制器的完整處理代碼可以從以下鏈接下載

Arduino程序可以在本教程的末尾找到。處理代碼已根據 yoggy 在他的 GitHub 頁(yè)面上給出的代碼進(jìn)行了修改以適應我們的目的。

來(lái)自COM端口的數據應以與從Arduino發(fā)送的數據相同的波特率讀取。此外,使用設備管理器檢查Arduino連接的COM端口。我的Arduino連接到COM3,它是0^千^我電腦中的端口和Arduino中的波特率為9600,因此代碼如下

port = new Serial(this,Serial.list()[0],9600);

一旦我們開(kāi)始閱讀這些值,我們就可以通過(guò)根據它從 Arduino 發(fā)送的值來(lái)識別它來(lái)區分它。這些值再次從 0 映射到 100,以便我們能夠根據該值控制鼠標。

if (port.available()>0)
  {
    data=port.read();
    println(data); //Read the data from COM port and save it in data
  }

  if (data>=101 && data<=201) //If the value if from 101 to 201 then it must be from Potentiometer
  {
    Turn = int (map (data,101,201,0,100)); //Use that value to turn the catapullt
  }

  if (data>=5 && data <=100)  //If the value if from 5 to 100 then it must be from Flex Sensor
  { Pull = int (map(data,5,100,0,100));} //Use that value to pull the catapult

  if (data == 1)
  click = true; //Use that value to press the mouse button

  if (data == 0)
  click = false; //Use that value to release the mouse button

對數據進(jìn)行分類(lèi)后,我們就可以在處理中使用機器人 Java 類(lèi)控制鼠標。命令robot.mouseMove(crntX-Pull, crntY+Turn); 可用于將鼠標移動(dòng)到任何所需InputEvent.BUTTON1_DOWN_MASK InputEvent.BUTTON1_DOWN_MASK位置,并分別用于按下或釋放鼠標按鈕。

if (click == false) //when Flex Sesnor is not pulled
  {
  crntX = (int)p.getX() ; crntY = (int)p.getY() ;
  if (Pull>50)
  robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); //Release the mouse button
  }


  if (click == true) //when Flex Sesnor is pulled
  {
   robot.mousePress(InputEvent.BUTTON1_DOWN_MASK); //Press the mouse Button
   robot.mouseMove(crntX-Pull, crntY+Turn); //Move the mouse based on the Flex and POT value
  }
}

啟動(dòng)時(shí),處理 IDE 還將顯示一個(gè)小對話(huà)框,您可以在其中找到“拉動(dòng)”、“轉動(dòng)”的值和“鼠標單擊”的狀態(tài),如下所示

憤怒的小鳥(niǎo)游戲控制器鼠標位置

加工:

要使用提供的代碼使這個(gè)憤怒的小鳥(niǎo)項目工作,請根據電路圖組裝您的硬件并上傳給定的 Arduino 代碼。然后記下您的Arduino連接到哪個(gè)COM端口,并在處理代碼中進(jìn)行必要的更改并啟動(dòng)處理草圖。

現在,只需啟動(dòng)憤怒的小鳥(niǎo)游戲并將光標放在彈射器附近,然后拉動(dòng)柔性傳感器以拉動(dòng)鳥(niǎo)并使用電位計設置方向。設置方向后,松開(kāi)柔性傳感器

EEEEWWWWWEEEEEEEEEE!!!!!!!!!!...............

你的鳥(niǎo)會(huì )被直接拋到空中,轟??!在小豬身上。完整的工作可以在下面給出的視頻中找到。

基于A(yíng)rduino的憤怒的小鳥(niǎo)游戲控制器,使用柔性傳感器

/*

 * Angry Bird Game Controller Program

 * Code by : B.Aswinth Raj

 * Dated : 3-8-2017

 * More details : www.circuitdigest.com

 */



void setup() {

  Serial.begin(9600); //Transmit at 9600 Baud Rate

}


boolean Mclick = false;


void loop() {

  int potValue = analogRead(A0); //variable to store potValue

  int FlexValue = analogRead(A1); //variable to store Flex Value

 // Serial.println(FlexValue);

 // Serial.print("POT: ");

 // Serial.println(potValue);

 // Serial.print("Flex: ");


  if (FlexValue>=65 && FlexValue<=115) //my flex sensor varies from 65 to 120, your might be different

  {

  FlexValue = map (FlexValue,120,65,0,100);  //based on bending convert to 0 to 100

  

  if (FlexValue>=5) // 1 and 0 is used for mouse click so start from 5

   { 

   Mclick=true; 

   Serial.write(1);  //1 is sent to make mouse left click 

   Serial.write(FlexValue); //Flex value is the distance to move mouse in X direction

   }

  else

  { 

  Mclick=false; 

  Serial.write(0);}

  }


  else

   { 

  Mclick=false; 

  Serial.write(0);}

  

 if (potValue<=200)

 {

  potValue = map(potValue,0,200,101,201); //Based in turn convert to 101 to 201

  Serial.write(potValue); //Pot value is the distance to move mouse in Y direction

 }


  delay(500);     //stability delay   

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

    關(guān)注

    185

    文章

    6434

    瀏覽量

    185337
  • 電位計
    +關(guān)注

    關(guān)注

    0

    文章

    252

    瀏覽量

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

    關(guān)注

    0

    文章

    15

    瀏覽量

    2959
收藏 人收藏

    評論

    相關(guān)推薦

    憤怒小鳥(niǎo):太空版》PC版本全球首發(fā)

    3月22日,備受期待的人氣游戲憤怒小鳥(niǎo):太空版》震撼發(fā)布,360安全桌面獨家獲得中國地區PC版首發(fā)權,也于當日全球同步上線(xiàn)。新場(chǎng)景、新玩法、新造型、新關(guān)卡……《憤怒
    發(fā)表于 03-23 11:47 ?989次閱讀

    脈沖閥控制器 智慧農田傳感器 #三農# 控制器#

    傳感器控制器
    pgz1234
    發(fā)布于 :2023年09月15日 15:52:43

    憤怒小鳥(niǎo) 漢化版 1.5.3

    這款游戲的故事相當有趣,為了報復偷走鳥(niǎo)蛋的肥豬們,鳥(niǎo)兒以自己的身體為武器,仿佛炮彈一樣去攻擊肥豬們的堡壘。游戲是十分卡通的2D畫(huà)面,看著(zhù)憤怒的紅色小鳥(niǎo),奮不顧身的往綠色的肥豬的堡壘砸去
    發(fā)表于 08-03 10:10

    軟件名稱(chēng):憤怒小鳥(niǎo)夏日版 中文破解安卓版

      1、【安卓游戲憤怒小鳥(niǎo)夏日版 中文破解安卓版  軟件名稱(chēng):憤怒小鳥(niǎo)夏日版 中文破解安卓版   軟件大小: 16.4M  軟件分
    發(fā)表于 04-16 18:12

    labview設計憤怒小鳥(niǎo)

    點(diǎn)擊學(xué)習>>《龍哥手把手教你學(xué)LabVIEW視覺(jué)設計》視頻教程用labview編寫(xiě)的憤怒小鳥(niǎo),模擬的程序,供大家學(xué)習。。
    發(fā)表于 05-04 20:43

    令人拍案稱(chēng)奇的創(chuàng )意設計:神奇真彈弓玩憤怒小鳥(niǎo)

    令人拍案稱(chēng)奇的創(chuàng )意設計:神奇真彈弓玩憤怒小鳥(niǎo)
    發(fā)表于 08-16 18:43

    利用霍爾傳感器構建自動(dòng)測速控制裝置

    利用霍爾傳感器構建自動(dòng)測速控制裝置
    發(fā)表于 05-05 09:33

    音量控制器和對數電位

    作者: TI專(zhuān)家Bruce Trump翻譯: TI信號鏈工程師 Rickey Xiong (熊堯) 你曾用過(guò)線(xiàn)性電位作為音量控制器嗎?如果你使用過(guò),你可能會(huì )發(fā)現,音量跳變得非???。如果想將音量調整
    發(fā)表于 09-20 16:30

    傳感器網(wǎng)絡(luò )構建與應用

    的角色,并且每個(gè)節點(diǎn)都具備動(dòng)態(tài)搜索、定位和恢復連接的能力?! 』赯igBee芯片構建的無(wú)線(xiàn)傳感器網(wǎng)可以利用GSM(全球移動(dòng)通信系統)網(wǎng)絡(luò )、CDMA(碼分多址)網(wǎng)絡(luò )、以太網(wǎng)等來(lái)實(shí)現數據的傳輸與控制
    發(fā)表于 10-29 14:56

    項目:重力感應游戲控制器 開(kāi)發(fā)平臺:STM32+MPU9250

    姿態(tài)傳感器-MPU9250(三軸加速度、三軸陀螺儀、三軸磁力),使用高效的傳感器數據融合算法、姿態(tài)解算算法,實(shí)現體感控制PC游戲,精度高,
    發(fā)表于 01-14 21:59

    慣性傳感器在未來(lái)游戲控制器的應用

    慣性傳感將決定未來(lái)游戲控制器的工作方式
    發(fā)表于 04-28 08:50

    智能熱傳感器如何與微控制器結合使用?

    智能熱傳感器是什么?智能熱傳感器如何與微控制器結合使用?為什么流行的存在傳感器通常不是最佳的感測模式?
    發(fā)表于 06-15 06:30

    憤怒小鳥(niǎo)》為Magic Leap創(chuàng )造了一種新的MR內容體驗

    Resolution Games已經(jīng)在虛擬現實(shí)(VR)行業(yè)中以誘餌式的電子游戲成名,而Rovio娛樂(lè )還沒(méi)有進(jìn)入沉浸式市場(chǎng),這種局面很快就會(huì )改變,因為這兩家公司合作開(kāi)發(fā)了新的游戲憤怒小鳥(niǎo)
    發(fā)表于 09-26 09:10 ?1646次閱讀

    憤怒小鳥(niǎo)VR:豬島》將進(jìn)軍全球VR線(xiàn)下市場(chǎng)

    游戲開(kāi)發(fā)商Resolution Games在一年前推出了VR游戲憤怒小鳥(niǎo)VR:豬島》,將公司旗下這款經(jīng)典游戲引入了VR。
    發(fā)表于 03-10 09:35 ?574次閱讀

    Unity 3D引擎制作的憤怒小鳥(niǎo)游戲

    Unity 3D引擎制作的憤怒小鳥(niǎo)游戲
    發(fā)表于 05-12 09:37 ?2次下載
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看