暫時命名為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 真是太爽了一件事情
能夠創照出一塊面包版的概念,上面只要插上模組就可以讓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
請問您MPU6050是否要接INT至arduino nano?
回覆刪除不需要喔,因為他使用輪巡的方式不依靠INT 所以不需要
刪除作者已經移除這則留言。
回覆刪除請問這系列的文章只到這一篇了嗎?
回覆刪除