開發 fly shield 過程記錄

        暫時命名為fly shield,我才慢慢理解sdield,因為一開始我的目的是希望
能夠創照出一塊面包版的概念,上面只要插上模組就可以讓ARDUINO可以飛行
這塊面包板已經將各模組之間的拉線拉好,省去重量與一堆飛線,這樣使用者就可以一目了然的知道每個區塊分工是什麼,如果有錯誤也可以很快地查到問題與解決問題,並且可以改進。這與寫軟體的感覺很像,所以這大概就是人家說的軟體IC的概念吧。
       在設計的時候腳位的定義宗是讓我頭痛,因為沒有一份正式的文件來說明,哪隻腳是什麼,最後必須去看程式碼才能知道,後來看到一些有趣的關鍵字,原來一開始我的設定是錯的我設定我的機器為MicroWii可以在四軸正常動作,但是我的電池怎麼樣就是無法偵測,後來看到一些程式碼有恍然大悟



看到如下
#if defined(PROMICRO)
  #if defined(MICROWII)
    #define A32U4ALLPINS      

如果我是MICROWII的選項,那我就會把A32U4ALLPINS給打開,
A32U4ALLPINS代表使用32U4上所有的接腳,但是PRO MICRO 並沒有把所有腳位都拉出來
所以就會變成一些功能無法執行。
所以不可以選MICROWII,要選擇PROMICRO,但是並沒有PROMICRO的選項可以選擇
在def.h中看到
#if defined(__AVR_ATmega32U4__) || defined(TEENSY20)
  #define PROMICRO
#endif

__AVR_ATmega32U4__這關鍵字我怎麼也找不到,我猜會不會當我在IDE界面選定燒錄是arduino micro時候這個就被定義了。
所以又找到這個,猜測不用定義,它會自動由我的CPU來決定他自己是PROMICR





  #define THROTTLEPIN                  3
  #if defined(A32U4ALLPINS)
    #define ROLLPIN                    6
    #define PITCHPIN                   2
    #define YAWPIN                     4
    #define AUX1PIN                    5
  #else
    #define ROLLPIN                    4
    #define PITCHPIN                   5
    #define YAWPIN                     2
    #define AUX1PIN                    6
  #endif
  #define AUX2PIN                      7

這裡的程式碼可以知道
 THROTTLEPIN                  A3
 ROLLPIN                   A 4
PITCHPIN                   A5
YAWPIN                    A 2
AUX1PIN                    A6
AUX2PIN                      A7 



//由以下程式碼可以知道
 #if !defined(A32U4ALLPINS) && !defined(TEENSY20)
    #define V_BATPIN                  A3    // Analog PIN 3
  #elif defined(A32U4ALLPINS)
    #define V_BATPIN                  A4    // Analog PIN 4
  #else
    #define V_BATPIN                  A2    // Analog PIN 3
  #endif
  #if !defined(TEENSY20)
    #define PSENSORPIN                A2    // Analog PIN 2
  #else
    #define PSENSORPIN                A2    // Analog PIN 2
  #endif
#endif

電池監控是A3。




於Config.h中看到
  /* activate all 6 hardware PWM outputs Motor 5 = D11 and 6 = D13.
          提示:不可用于sparkfun promicro(针脚11 & 13未被引出)
         if activated:
         Motor 1-6 = 10-bit hardware PWM
         Motor 7-8 = 8-bit Software PWM
         Servos    = 8-bit Software PWM
         if deactivated:
         Motor 1-4 = 10-bit hardware PWM
         Motor 5-8 = 10-bit Software PWM
         Servos    = 10-bit Software PWM */

      //#define HWPWM6

PRO MICRO兩種模式選擇
六硬體PWM  或是 軟體PWM輔助,可以看到如果打開硬體PWM,可以讓六軸都使用硬體PWM,剩下兩軸與SERVO都是8Bit,如果只是想飛這個很好,如果要八軸或是空拍就不要解開HWPWM6。

不得不說使用VISUAL STUDIO來開發ARDUINO 真是太爽了一件事情
#if defined(PROMICRO)
  #if !defined(HWPWM6)
    #if defined(TEENSY20)
      uint8_t PWM_PIN[8] = {14,15,9,12,22,18,16,17};   //for a quad+: rear,right,left,front
    #elif defined(A32U4_4_HW_PWM_SERVOS)
      uint8_t PWM_PIN[8] = {6,9,10,11,5,13,SW_PWM_P3,SW_PWM_P4};   //
    #else
    uint8_t PWM_PIN[8] = {9,10,5,6,4,A2,SW_PWM_P3,SW_PWM_P4};   //for a quad+: rear,right,left,front
    #endif

  #else

以上程式碼可以看出我們的四軸或是六軸的腳為9 10 5 6 4 A2 SW_PWM_P3SW_PWM_P4


留言

  1. 請問您MPU6050是否要接INT至arduino nano?

    回覆刪除
    回覆
    1. 不需要喔,因為他使用輪巡的方式不依靠INT 所以不需要

      刪除
  2. 作者已經移除這則留言。

    回覆刪除
  3. 請問這系列的文章只到這一篇了嗎?

    回覆刪除

張貼留言

這個網誌中的熱門文章

使用藍牙BLE 讓iphone android 連接樹莓派3 raspberry pi 3

四軸飛行器:飛控板DIY

小四軸飛行器:驅動馬達