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

電子發燒友App

硬聲App

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

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

3天內不再提示
電子發燒友網>電子資料下載>電子資料>適用于PC的ARDUINO控制游戲手柄(有線)

適用于PC的ARDUINO控制游戲手柄(有線)

2022-12-21 | zip | 2.29 MB | 次下載 | 2積分

資料介紹

描述

大家好,我是 Sarvesh。幾天前,我想玩一些復古游戲。所以我把它們安裝在我的電腦上。但我只能用我的電腦鍵盤玩,這并沒有給我童年時代的感覺。所以我決定為我的 PC 構建一個可以玩舊游戲和新游戲(不是全部)的游戲手柄。我使用了一個舊的游戲控制器并對其進行了修改以創建這個很棒的游戲手柄。這是一款用于 PC 的有線游戲手柄。它可以用來玩模擬器和PC游戲。此外,操縱桿還可以用作 PC 的鼠標。游戲手柄使用 Arduino Pro Micro 進行控制。

第 1 步:電路圖和按鍵映射

pYYBAGOhUwyASJQJAAea2EjPnXs961.jpg
?
pYYBAGOhUy-ALKsZAAowpmEKewU671.jpg
?

根據上面給出的電路圖(第一個圖像)連接所有組件。

我建議首先檢查所有連接并在面包板上工作。

按鍵映射:

我實際按鈕放置的布局也顯示在上面(第二張圖片),讓您清楚地知道哪個按鈕位于何處,它使用什么標簽編程以及它向計算機發送什么字符。

第 2 步:Arduino 代碼

現在下載代碼并安裝 mouse.h 和 keyboard.h 庫。將代碼上傳到您的 Arduino。

您可以從下面復制代碼。

#include
#include 
const int EMG = 2;    //Emergency stop button :) 
const int L1 = 7;
const int L2 = 8;
const int P1 = 9;
const int R1 = 14;
const int R2 = 16;
const int P2 = 10;
const int D1 = 4;
const int D2 = 5;
const int D3 = 6;
const int D4 = 3;  
const int SWITCH = 15; // digital pin 2 connected to SW output of JoyStick
const int X_AX = A1; // analog pin 0 connected to X output of JoyStick
const int Y_AX = A0; // analog pin 1 connected to Y output of JoyStick
int range = 10;               // output range or speed of X or Y movement
int responseDelay = 5;        // response delay of the mouse, in ms
int threshold = range / 4;    // resting threshold
int center = range / 2;
int EMGState = HIGH;
int L1S = LOW;
int L2S = LOW;
int P1S = LOW;
int R1S = LOW; 
int R2S = LOW; 
int P2S = LOW; 
int D1S = LOW;
int D2S = LOW;        //PREVIOUS STATES
int D3S = LOW; 
int D4S = LOW; 
void setup() 
{
  pinMode(EMG, INPUT);
  pinMode(L1, INPUT);
  pinMode(L2, INPUT);
  pinMode(P1, INPUT);
  pinMode(D1, INPUT);
  pinMode(D2, INPUT);
  pinMode(D3, INPUT);
  pinMode(D4, INPUT);
  pinMode(R1, INPUT);
  pinMode(R2, INPUT);
  pinMode(P2, INPUT);
  pinMode(SWITCH, INPUT_PULLUP); 
  Serial.begin(9600);
  Keyboard.begin();
  Mouse.begin();
}

void loop() 
{ 

  EMGState = digitalRead(EMG);
  if (EMGState == HIGH) 
  { 
    Serial.println("FAULT");
    Keyboard.releaseAll();
    Keyboard.end();
    Mouse.end();
  }
  else
  {
      //Serial.println("OK"); 
      int L1STATE = digitalRead(L1);
      int L2STATE = digitalRead(L2);
      int P1STATE = digitalRead(P1);
      int D1STATE = digitalRead(D1);
      int D2STATE = digitalRead(D2);
      int D3STATE = digitalRead(D3);
      int D4STATE = digitalRead(D4);
      int R1STATE = digitalRead(R1);
      int R2STATE = digitalRead(R2);
      int P2STATE = digitalRead(P2);
      
      if(L1STATE==HIGH && L1S == LOW)
      {
        Serial.println("L1 PRESSED");
        Keyboard.press('K');              //K
      }
      if(L1STATE==LOW && L1S == HIGH)
      {
        Serial.println("L1 RELEASED");
        Keyboard.release('K');              //K
      }


      if(L2STATE==HIGH && L2S == LOW)
      {
        Serial.println("L2 PRESSED");
        Keyboard.press('J');              //J
      }
      if(L2STATE==LOW && L2S == HIGH)
      {
        Serial.println("L2 RELEASED");
        Keyboard.release('J');              //J
      }


      if(P1STATE==HIGH && P1S == LOW)
      {
        Serial.println("P1 PRESSED");
        Keyboard.press('H');              //H
      }
      if(P1STATE==LOW && P1S == HIGH)
      {
        Serial.println("P1 RELEASED");
        Keyboard.release('H');              //H
      }
     
      if(R1STATE==HIGH && R1S == LOW)
      {
        Serial.println("R1 PRESSED");     //L
        Keyboard.press('L');
      }
      if(R1STATE==LOW && R1S == HIGH)
      {
        Serial.println("R1 RELEASED");     //L
        Keyboard.release('L');
      }

      if(R2STATE==HIGH && R2S == LOW)
      {
        Serial.println("R2 PRESSED");     //G
        Keyboard.press('G');
      }
      if(R2STATE==LOW && R2S == HIGH)
      {
        Serial.println("R2 RELEASED");     //G
        Keyboard.release('G');
      }

      if(P2STATE==HIGH && P2S == LOW)
      {
        Serial.println("P2 PRESSED");     //F
        Keyboard.press('F');
      }
      if(P2STATE==LOW && P2S == HIGH)
      {
        Serial.println("P2 RELEASED");     //F
        Keyboard.release('F');
      }

      
      if(D1STATE==HIGH && D1S == LOW)           
      {
        Serial.println("D1 PRESSED");     //W
        Keyboard.press('W');
      }
      if(D1STATE==LOW && D1S == HIGH)           
      {
        Serial.println("D1 RELEASED");     //W
        Keyboard.release('W');
      }

      
      if(D2STATE==HIGH && D2S==LOW)
      {
        Serial.println("D2 PRESSED");     //A
        Keyboard.press('A');
      }
      if(D2STATE==LOW && D2S==HIGH)
      {
        Serial.println("D2 RELEASED");     //A
        Keyboard.release('A');
      }

      
      if(D3STATE==HIGH && D3S==LOW)
      {
        Serial.println("D3 PRESSED");     //S
        Keyboard.press('S');
      }
      if(D3STATE==LOW && D3S==HIGH)
      {
        Serial.println("D3 RELEASED");     //S
        Keyboard.release('S');
      }


      if(D4STATE==HIGH && D4S==LOW)
      {
        Serial.println("D4 PRESSED");     //D
        Keyboard.press('D');
      }
      if(D4STATE==LOW && D4S==HIGH)
      {
        Serial.println("D4 RELEASED");     //D
        Keyboard.release('D');
      }
      
      L1S = L1STATE;
      L2S = L2STATE;
      P1S = P1STATE;
      R1S = R1STATE;
      R2S = R2STATE;
      P2S = P2STATE;
      D1S = D1STATE;
      D2S = D2STATE;
      D3S = D3STATE;
      D4S = D4STATE;
     

     int xReading = readAxis(A1);
     int yReading = readAxis(A0);
     Mouse.move(xReading, yReading, 0);
     if (digitalRead(SWITCH) == LOW) 
       {
         if (!Mouse.isPressed(MOUSE_LEFT)) 
         {
           Mouse.press(MOUSE_LEFT);
         }
       }
      else 
      {
      if (Mouse.isPressed(MOUSE_LEFT)) 
      {
        Mouse.release(MOUSE_LEFT);
      }
      }

        delay(responseDelay);
 }
} 
int readAxis(int thisAxis) 
{
  int reading = analogRead(thisAxis);
  reading = map(reading, 0, 1023, 0, range);
  int distance = reading - center;
  if (abs(distance) < threshold) 
  {
    distance = 0;
  }

  return distance;
}

第 3 步:切割、繪畫和焊接

首先根據游戲手柄的尺寸切割 PCB 并將按鈕和操縱桿模塊對齊。

然后用你選擇的顏色給游戲手柄上漆。

現在將按鈕和操縱桿焊接到通用 pcb 上。

然后借助一些強力膠將限位開關固定在它們的位置。

焊接其余組件并進行最終測試。

我附上了下面的圖片以供參考。

?
?
?
pYYBAGOhU1OAeS_uAAuxh_tHX7o461.jpg
?
1 / 6
?

這是最終項目的樣子。

pYYBAGOhU2-AbSJhAAa_aFvSp3A510.jpg
?

?


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
主站蜘蛛池模板: 扒开校花粉嫩小泬喷潮漫画| 小夫妻天天恶战| 她也色在线视频站| 十分钟视频影院免费| 亚洲精品国产精品精| 御姐被吸奶| 大屁股国产白浆一二区| 国产亚洲视频在线| 美女xx00| 污污又黄又爽免费的网站 | 校花的奶好大好浪| 亚洲久热无码中文字幕| chinese帅哥gv在线看| 国产精品青草久久福利不卡| 国语对白老女人8av| 欧美一区二区视频在线观看 | 伊人电院网| 动漫成年美女黄漫网站| 精品日韩视频| 日日踫夜夜爽无码久久| 一天不停的插BB十几次| 666永久视频在线| 国产免费毛片在线观看| 麻婆豆腐传媒视频免费| 亚洲 日韩 在线 国产 精品| 一色屋精品亚洲香蕉网站| YELLOW日本动漫高清免费| 久草网国产自偷拍| 色哟哟网站入口在线观看视频| 亚洲色图19p| 成人在线观看视频免费| 特级毛片AAAAAA| 色爱AV综合区| 羞羞一区二区三区四区片| 在线观看国产区| 办公室沙发口爆12P| 国产成人aaa在线视频免费观看| 国产一区二区三区影院| 轻点慢点1V2啊高H抽插| 野花社区WWW韩国日本| 日本美女阴道|