跳到主要內容

V-USB Joystick for Arduino

上次做好沒存檔

這次再翻出來從弄一次...QAQ
花了我一天阿阿阿阿

D+ 接腳2
D-  接腳3
詳情請看usbconfig.h

想改搖桿配置可以用
HID Descriptor Tool
改完記得回usbconfig.h填
USB_CFG_HID_REPORT_DESCRIPTOR_LENGTH
長度




程式碼:https://www.dropbox.com/s/n0rgkb370wto2lv/UsbJOY.rar?dl=0

留言

  1. Hi, Sir ! your library is amazing ! amazing ! the best library on entire world ! 8 buttons ! fantastic ! congratulations ! you're a genius ! just one question: how the axis X and Y works ? because i'm trying to play a game, like a test , and the character go up even if i'm not press any button. How can I manage the axis ? i want to make a simple gamepad with up,. down, left , right and the 8 buttons. Can you help me, please ?

    Thank you !

    *Ps: Again, amazing library !

    Greetings !

    回覆刪除
    回覆
    1. 使用
      analogRead(PinX); analogRead(PinY);
      去讀取數值並設置
      UsbJoystick.setX(ValueX);UsbJoystick.setY(ValueY);

      use
      analogRead (PinX); analogRead (PinY);
      To read and set values
      UsbJoystick.setX (ValueX); UsbJoystick.setY (ValueY);

      -----------------------------------------------------------
      const int PinX = A0;
      const int PinY = A1;

      ValueX= analogRead(PinX);
      ValueY= analogRead(PinY);
      UsbJoystick.setX(ValueX >> 3); //X,Y 範圍 0~127
      UsbJoystick.setY(ValueY >> 3);

      //我沒測試過
      //需要自己在修改
      // I have not tested
      // Need to modify them again

      刪除
    2. Sorry, Sir ! I'm late to thank you! I got it ! I used the map function! thank you for this magnificent work! thank you so much ! with a bluetooth module HC-06 and a android device, I created a simple application. With this application, you can simulate a Bluetooth gamepad, although there is no "multitouching".

      The application is made in the "App Inventor 2". Therefore, there is no way to enable multitouching. But it works! I do not know how to thank you. Also, you have that V-USB MIDI library. I'm trying to make a MIDI adapter for an old Yamaha keyboard. You are very talented ! Westerners need to learn from you.

      You come to also modify the V-USB Keyboard and Mouse libraries? If yes, please, if you can make them available, I would greatly appreciate it. Their V-USB libraries are much more efficient and objective than those made in the Western Continent.

      If you want the code that did and the application of "BTGamepad" based on your project, please just ask me when you want.

      Thank you very much !

      刪除
    3. V-USB Keyboard and Mouse libraries can be found here

      http://coopermaa2nd.blogspot.tw/2011/10/v-usb-examples-for-arduino.html

      http://coopermaa2nd.blogspot.com/2011/10/v-usb-for-arduino-usbkeyboard.html

      :)

      刪除

張貼留言

這個網誌中的熱門文章

小蟻智慧攝影機支援RTSP

來源: http://en.miui.com/thread-196713-1-1.html 小蟻智慧攝影機版本: 1.8.5.1l_201511061661(台灣版) 下載檔案 https://drive.google.com/file/d/0ByjBix7wpeJJY0ZWZXlvWl9Za1E/view?usp=sharing 把攝影機SD卡拿讀卡機讀取 把壓縮檔內的test資料夾放進SD根目錄 插回SD卡至攝影機 重開 攝影機會呈現橘燈並執行更新 等恢復至藍燈或是用app確認攝影機開啟 用VLC或相關程式讀取串流 Main stream:rtsp:// <CameraIP> :554/ch0_0.h264 Minor stream:rtsp:// <CameraIP> :554/ch0_1.h264 Audio stream:rtsp:// <CameraIP> :554/ch0_3.h264 Telnet與FTP開啟加上 # Telnet if [ ! -f "/etc/init.d/S88telnet" ]; then     echo "#!/bin/sh" > /etc/init.d/S88telnet     echo "telnetd &" >> /etc/init.d/S88telnet     chmod 755 /etc/init.d/S88telnet fi # FTP echo "#!/bin/sh" > /etc/init.d/S89ftp echo "tcpsvd -vE 0.0.0.0 21 ftpd -w / &" >> /etc/init.d/S89ftp chmod 755 /etc/init.d/S89ftp User:  root Password:  1234qwer 使用passwd改密碼 參考: http://en.miui.com/thread-224653-1-1.html

Arduino Web Server DECodeURI

1. 架設一個簡單Web Server,以GET方式傳值發現傳入中文字收到的東西變得很不正常 原因是以GET傳值會進行ENCodeURI, 如 : http://192.168.137.177/?test= 送出 ENCodeURI : http://192.168.137.177/?test=%E9%80%81%E5%87%BA 2. 而 unicode utf-8是一種針對Unicode的可變長度字元編碼 在中文文字使用 3byte 表示 以 ” 送 ” 的 16 進位表示為 ” E9 80 81” 以 ” 出 ” 的 16 進位表示為 ” E5 87 BA” URL 編碼會把一個字元以 16 進制表示轉成兩個字元,然後在其前面放置轉義字元 ("%") ,編碼完後 ” 送 ” 為 ” %E9%80%81” 、 " 出 ” 為 %E5%87%BA 。 3. 把 ’%’ 去除並 把兩個 ASCII 字元為一組如 ”E9”, 轉換成一個以 16 進位 表示 E9一個 字元。 ASCII 的 ’A’ 為 65 , 16 進位 A 為 10 , ASCII 的 ’0’ 為 48 , 16 進位 0 為 0 , 當讀到大寫英文字母進行數字計算以 ’A’ 為首減掉 ’A’ 的 65 加 10 ,讀到數字以 ’0’ 為首減掉 ’0’ 的 48 即可轉換成 16 進位表示。 因為兩個字元為一組把先讀到的字元轉成 16 進位做左移 4BIT 即乘於 16 ,與下一個字元轉成 16 進位相加,組合出一個 byte 存入字串內。 String newstring; for(int i=0;i<outputString.length();i++) { if(outputString[i]=='%') { int temp; char tempchar=0; int test=16; for(int j=1;j<3;j++) { if(outputString[i+j]>='A') { temp=(int)(outputString...