衡阳派盒市场营销有限公司

電子發(fā)燒友App

硬聲App

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

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

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>機器人系統(tǒng)研討會:TI RSLK MAX上的Arduino編程

機器人系統(tǒng)研討會:TI RSLK MAX上的Arduino編程

2022-11-16 | zip | 49.65 MB | 次下載 | 免費

資料介紹

描述

此頁面上提供了研討會體驗所需的一切。

本次研討會的參與者將獲得構(gòu)建 TI-RSLK MAX 機器人平臺、測試、定制和與之競爭的經(jīng)驗。它是一款輪式機器人車輛,使用 TI SimpleLink MSP432 LaunchPad,使其高度模塊化。使用 Energia,TI 相當(dāng)于簡單的 Arduino 風(fēng)格的腳本代碼,您將獲得完整的實驗室設(shè)置和教學(xué)材料。這是一種以可訪問和有趣的方式引入電子嵌入式系統(tǒng)的興奮的低成本方式。由于 TI LaunchPad 是開源和模塊化硬件,我們還可以添加 BoosterPack 模塊來擴充我們的電路。本次研討會將重點介紹使用基本 TI-RSLK MAX 套件隨附的板載傳感。IR 反射、凹凸開關(guān)和編碼器

Arduino 編程適用于編程經(jīng)驗很少或沒有編程經(jīng)驗的學(xué)生,適合 K-12 學(xué)生或大學(xué)一年級學(xué)生使用電子產(chǎn)品進行探索和原型制作。對于高級功能,鼓勵學(xué)生使用 Code Composer Studio 和 C 編程為 TI-RSLK MAX 系統(tǒng)編寫固件代碼。

如需了解更多機器人學(xué)知識,請查看 TI-RSLK MAX,這是一個全面的開源課程和硬件包,通過機電一體化的應(yīng)用教授嵌入式系統(tǒng)的基礎(chǔ)知識。TI-RSLK 為機器人系統(tǒng)知識提供了先進的墊腳石,但初學(xué)者仍然可以通過完整的講座和實驗室活動獲得。

實驗室 0 - 準(zhǔn)備工作

準(zhǔn)備好電腦和螺絲刀。建議使用 Chrome 瀏覽器來使用本次研討會的一些在線元素。

在我們開始之前,請確保您:

1.下載并安裝最新版本的Arduino IDE(1.8.13)。

2.將 URL 添加到您的 File > Preferences > Additional Board Manager URLs。如果您愿意,還可以選中顯示行號框,如果您希望它更大,請調(diào)整字體大小。

3.轉(zhuǎn)到 Tools > Boards > Boards Manager 并使用 Energia MSP432 滾動到列表底部并安裝 5.29.1

注意:此步驟需要幾分鐘,安裝時間在 10-20 分鐘之間。

4.安裝完成后,需要在Arduino IDE中選擇板子和COM口。轉(zhuǎn)到 Tool > Boards,現(xiàn)在您應(yīng)該會看到“Energia MSP432 Red Boards”>“Red LaunchPad MSP432P401R EMT”,并確保選中它。

5.您還應(yīng)該選擇正確的 COM 端口在通過 USB 將 LaunchPad 插入計算機并安裝 LaunchPad 驅(qū)動程序(在后面的步驟中使用 RSLK 調(diào)試工具 GUI 完成)之后,可以完成此步驟。轉(zhuǎn)到工具 > COM 端口以從可用選項中進行選擇。LaunchPad 填充了兩個 COM 端口。MacOS 用戶將看到端口 001 和 004 已填充,請使用端口 1。Windows 用戶可以通過轉(zhuǎn)到設(shè)備管理器并找到 XDS110 UART 來驗證他們的 COM 端口。

6.在本頁底部的代碼部分添加可下載的 RSLK 機器人庫。轉(zhuǎn)到 Sketch > 包含庫 > 添加 .ZIP 庫。選擇下載的zip庫的文件路徑,點擊ok。它應(yīng)該說添加了庫,您可以通過轉(zhuǎn)到文件 > 示例 > TI-Robot-Lib 來檢查這一點,并查看庫中提供的示例代碼。

7.當(dāng)我們開始編程時,應(yīng)該加載并準(zhǔn)備好示例,但不要擔(dān)心運行任何代碼。接下來,您將要組裝您的機器人并使用調(diào)試工具對其進行功能測試。

實驗 1 - 構(gòu)建 TI-RSLK MAX 機器人

所需硬件

  • TI-RSLK MAX 套件
  • 6 節(jié) AA 電池
  • 小十字螺絲刀(可選)

在這個實驗室中,我們將組裝我們的機器人。

您還需要一個電源,我們可以為機器人配備電源,使其真正移動。TI-RSLK 需要 6 節(jié)標(biāo)準(zhǔn) AA 電池。如果您愿意,它也可以配備可充電的鎳氫電池,但可更換的堿性電池可以很好地供個人使用,并且可以持續(xù)很長時間。

按照這些說明組裝您的機器人

TI-RSLK MAX 只是快速組合在一起的幾個組件

1) 開始前先觀看組裝視頻并查看施工指南

- 一個。請注意,機箱板應(yīng)預(yù)先安裝,因此即使視頻涵蓋了它,您也無需將其放在上面

- 乙。請注意,視頻中沒有介紹面包板,但您可以使用下圖查看它們的安裝位置。您無需解開粘合墊,只需將螺釘穿過粘合劑即可將其擰入支架。要固定支架,您需要卸下電池蓋并將固定螺母安裝到電池倉內(nèi)側(cè)的指定位置,以便將支架擰入。

2) 驗證所有 LaunchPad 上的 5V 跳線是否已移除,它們應(yīng)該在工廠完成,但只需驗證,否則會導(dǎo)致災(zāi)難性故障。

pYYBAGNzcSGABnXdAAA2TtQyUfM035.png
?
pYYBAGNzcSSAMQluAAEUQ6waNt0121.png
?

3) 確保將電機安裝座完全固定好,使其與底盤齊平。如果你不這樣做,那么你很容易彎曲和折斷固定片,這會阻止你完全插入電機,直到那些破損的片被移除,并且可能會在以后導(dǎo)致一些失速問題

pYYBAGNzcSaAHvnuAAB4E6t_Xh4311.png
?

4) 面包板支架放置在藍色圓圈處

poYBAGNzcSiADh7-AACGqoGh7qA440.jpg
?
pYYBAGNzcSuAVhDNAAC6wznzkQA172.jpg
?

5) 做一個快速的功能檢查。確認碰撞開關(guān)是否發(fā)出咔噠聲,電源按鈕在 ON/OFF 開關(guān)處于 OFF 位置時工作,四個大電容器在機箱板上就位且沒有損壞,用手轉(zhuǎn)動車輪時沒有摩擦.

6) 組裝后立即使用在線調(diào)試工具:

- 一個。這使您可以驗證一切是否正常。如果您想確保您的機器人沒有損壞,它也會在以后為您提供幫助。

- 乙。使用 Chrome 或 Firefox 瀏覽器并安裝瀏覽器擴展 + TI Cloud Agent 本地驅(qū)動程序。這些對于讓 LaunchPad 正常工作至關(guān)重要,因此如果安裝不正確,GUI 將無法工作。當(dāng)我們稍后運行 Arduino 時,安裝 TI Cloud Agent 也很重要。

- C。如果儀表板有任何問題(未連接硬件等),請嘗試刷新頁面并重試。如果您完全無法讓 GUI 工作,您也可以嘗試下載本地副本嘗試。

?

Mac 操作系統(tǒng)

Linux 64 位

- d。每次都會下載測試固件,因此在加載頁面時請確保 LaunchPad 已通過 USB 數(shù)據(jù)線連接到 PC

- e。在您確認機箱板的電源打開之前,電機或光傳感器將無法工作。使用機箱板上的電源按鈕,您應(yīng)該看到藍色電源 LED 指示它已打開。開/關(guān)開關(guān)可能會令人困惑,但最好將其留在關(guān)閉位置。如果您將其打開,它將工作,但無法將其關(guān)閉,直到您將其關(guān)閉并按下電源按鈕。

- F。要將其關(guān)閉,請確保將開/關(guān)開關(guān)撥到 OFF 并按下電源按鈕,您應(yīng)該會看到藍色 LED 熄滅

- G。如果您發(fā)現(xiàn)電機不工作或聽到一些摩擦聲,請確保磁鐵沒有太緊并防止電機齒輪移動。您可以用指甲松開電機軸上的磁鐵。

- H。如果您發(fā)現(xiàn)碰撞開關(guān)有任何問題,請確保連接正確對齊。對于線路傳感器的任何問題,請確保其方向正確并且所有連接都對齊。

您的機器人已組裝并驗證功能正常。希望它感覺相當(dāng)穩(wěn)定并準(zhǔn)備好滾動。

實驗 2 - Arduino 編程介紹

所需硬件

  • 組裝好的 TI-RSLK MAX(安裝電池并進行功能測試)

所需軟件

  • Arduino IDE
  • TI-RSLK MAX 機器人庫

Arduino IDE 允許您通過 TI LaunchPad 使用 Arduino 風(fēng)格編程開始快速原型設(shè)計。這使得在項目開始時測試不同的社區(qū)硬件解決方案并將它們集成到自定義應(yīng)用程序中非常棒。

在本實驗中,我們將設(shè)置我們的開發(fā)環(huán)境。我們可以做的第一件事是讓 LED 閃爍,以確保我們可以用計算機對微控制器進行編程。

1.打開 Arduino IDE。

2.首先,確保您選擇了您的開發(fā)板,方法是轉(zhuǎn)到工具 > 開發(fā)板并在菜單上查找“LaunchPad with MSP432”(如果您還沒有的話)。如果您的 LaunchPad 板不存在,請轉(zhuǎn)到 Boards Manager 并安裝您的 LaunchPad 板包。MSP432 板應(yīng)該是列表中的最后一個選項。注意:MSP432 EMT 表示多任務(wù)處理并具有 RTOS 功能,但我們現(xiàn)在不需要。

3.如果您正確安裝了驅(qū)動程序,那么您應(yīng)該會在工具 > 端口下看到 COM 端口。如果有多個選項,請選擇具有 UART 功能的端口。您可以在計算機的設(shè)備管理器中驗證 COM 端口。

現(xiàn)在我們將第一次運行我們的代碼示例。

庫中的前兩個示例是相同的代碼 01_Bump_Switch_Motor_Bare 和 02_Bump_Switch_Motor_Simplified,它們將向前移動機器人,直到碰撞開關(guān)碰到什么東西。非常簡單,可以跳過。裸代碼使用對庫的直接調(diào)用,簡化代碼使用庫中定義的函數(shù)。

4.轉(zhuǎn)到文件 > 示例 > 自定義機器人庫 > TI-Robot-Lib > 03_Bump_Switch_LED_Bare。單擊上傳按鈕,完成后您可以點擊碰撞開關(guān)以測試不同的 LED 并驗證新代碼是否可以閃爍到 RSLK MAX。

5.接下來,您可以運行跳舞機器人示例。這將為您的機器人編程提供一個有趣的開始。轉(zhuǎn)到文件 > 示例 > 自定義機器人庫 > TI-Robot-Lib > 05_Dancing_Robot_Simplified。程序上傳后,綠色 LED 將閃爍,表示正在等待按鈕按下。按 S1(左側(cè))按鈕或 S2(右側(cè))按鈕告訴機器人開始舞蹈序列。您也可以嘗試 06_Dancing_Robot_2_Simplified,這是一個略有不同的動作。

或者,通過轉(zhuǎn)到文件 > 新建打開一個新草圖。粘貼下面的示例代碼并運行它。

#include "Energia.h"  
#include "SimpleRSLK.h"  
  
bool hit_obstacle = false;  
void waitBtnPressed() {  
 while(digitalRead(LP_S2_PIN) == 1){  
   digitalWrite(LP_RGB_LED_GREEN_PIN, HIGH);  
   delay(500);  
   digitalWrite(LP_RGB_LED_GREEN_PIN, LOW);  
   delay(500);  
 }  
}  
void checkCollision() {  
 for(int x = 0;x<6;x++)  
 {  
   /* Check if bump switch was pressed  
    *  Parameter:  
    *    bump switch number -> 0-5  
    *    Returns:  
    *      true -> if specific switch was pressed  
    *      false -> if specific switch was not pressed  
    */  
   if(isBumpSwitchPressed(x) == true) {  
     hit_obstacle = true;  
     Serial.println("Collision detected");  
     disableMotor(BOTH_MOTORS);  
     break;  
   }  
 }  
}  
void setup() {  
 /* Set serial communication to 115200 baud rate for MSP432 */  
 Serial.begin(115200);  
 delay(500);  
 /* Run setup code */  
 setupRSLK();  
 /* Initialize LED pins as outputs */  
 pinMode(LED_FR_PIN, OUTPUT);   
 pinMode(LED_FL_PIN, OUTPUT);   
 pinMode(LED_BR_PIN, OUTPUT);   
 pinMode(LED_BL_PIN, OUTPUT);  
 pinMode(LP_RED_LED_PIN, OUTPUT);  
 pinMode(LP_RGB_LED_RED_PIN, OUTPUT);  
 pinMode(LP_RGB_LED_BLUE_PIN, OUTPUT);   
 pinMode(LP_RGB_LED_GREEN_PIN, OUTPUT);  
 /* Initialize LaunchPad buttons as inputs */  
 pinMode(LP_S1_PIN, INPUT_PULLUP);  
 pinMode(LP_S2_PIN, INPUT_PULLUP);  
}  
void loop() {  
 Serial.println("Waiting until left button is pushed");  
 /* Wait until button is pressed to start robot */  
 waitBtnPressed();  
 /* Wait two seconds before starting */  
 delay(2000);  
 digitalWrite(LP_RGB_LED_BLUE_PIN, HIGH);  
/* Enables specified motor.  
 *  Parameter:  
 *   Motor your referencing -> LEFT_MOTOR  RIGHT_MOTOR  BOTH_MOTORS  
 */  
 enableMotor(BOTH_MOTORS);  
/* Set direction of motor rotation.  
 *  Parameter:  
 *   Motor your referencing -> LEFT_MOTOR  RIGHT_MOTOR  BOTH_MOTORS  
 *   Direction -> MOTOR_DIR_FORWARD  MOTOR_DIR_BACKWARD  
 */  
 setMotorDirection(LEFT_MOTOR,MOTOR_DIR_FORWARD);  
 setMotorDirection(RIGHT_MOTOR,MOTOR_DIR_FORWARD);  
/* Set speed of motor.  
 *  Parameter:  
 *   Motor your referencing -> LEFT_MOTOR  RIGHT_MOTOR  BOTH_MOTORS  
 *   Speed -> 0 - 100  
 */  
 setMotorSpeed(BOTH_MOTORS,10);  
 while(!hit_obstacle) {  
   /* Move robot in place */  
   /* Right turn in place */  
   setMotorDirection(LEFT_MOTOR, MOTOR_DIR_BACKWARD);  
   setMotorDirection(RIGHT_MOTOR, MOTOR_DIR_FORWARD);  
   delay(1000);  
   /* Left turn in place */  
   setMotorDirection(LEFT_MOTOR, MOTOR_DIR_FORWARD);  
   setMotorDirection(RIGHT_MOTOR, MOTOR_DIR_BACKWARD);  
   delay(1000);  
   /* 360 spin right */  
   setMotorDirection(LEFT_MOTOR, MOTOR_DIR_FORWARD);  
   setMotorDirection(RIGHT_MOTOR, MOTOR_DIR_BACKWARD);  
   setMotorSpeed(BOTH_MOTORS,50);  
   delay(800);  
   setMotorSpeed(BOTH_MOTORS,10);  
   /* 360 spin left */  
   setMotorDirection(LEFT_MOTOR, MOTOR_DIR_BACKWARD);  
   setMotorDirection(RIGHT_MOTOR, MOTOR_DIR_FORWARD);  
   setMotorSpeed(BOTH_MOTORS,50);  
   delay(800);  
   setMotorSpeed(BOTH_MOTORS,10);  
   /* Left turn in place */  
   setMotorDirection(LEFT_MOTOR, MOTOR_DIR_BACKWARD);  
   setMotorDirection(RIGHT_MOTOR, MOTOR_DIR_FORWARD);  
   delay(500);  
   /* Right turn in place */  
   setMotorDirection(LEFT_MOTOR, MOTOR_DIR_FORWARD);  
   setMotorDirection(RIGHT_MOTOR, MOTOR_DIR_BACKWARD);  
   delay(1000);  
   /* Left turn in place */  
   setMotorDirection(LEFT_MOTOR, MOTOR_DIR_BACKWARD);  
   setMotorDirection(RIGHT_MOTOR, MOTOR_DIR_FORWARD);  
   delay(1000);  
   /* 360 spin right */  
   setMotorDirection(LEFT_MOTOR, MOTOR_DIR_FORWARD);  
   setMotorDirection(RIGHT_MOTOR, MOTOR_DIR_BACKWARD);  
   setMotorSpeed(BOTH_MOTORS,50);  
   delay(800);  
   setMotorSpeed(BOTH_MOTORS,10);  
   /* 360 spin left */  
   setMotorDirection(LEFT_MOTOR, MOTOR_DIR_BACKWARD);  
   setMotorDirection(RIGHT_MOTOR, MOTOR_DIR_FORWARD);  
   setMotorSpeed(BOTH_MOTORS,50);  
   delay(800);  
   setMotorSpeed(BOTH_MOTORS,10);  
 }   
}

這段代碼讓您的機器人在原地旋轉(zhuǎn)以顯示我們擁有的簡單電機控制。您可能需要對其進行修改,因為機器人所在的表面會影響其轉(zhuǎn)動速度。不要太掛在這部分上,因為我們將在下一個實驗室中添加更多的自治層。這再次證明了我們的電機確實可以工作,并讓我們對電機邏輯有所了解。

6.一些可選的練習(xí)可以用編碼器和線跟隨例子來完成。轉(zhuǎn)到文件 > 示例 > 自定義機器人庫 > TI-Robot-Lib > 04_Encoder_Simplified。此編碼器示例將通過串行監(jiān)視器向您顯示值,這有利于調(diào)試。

如果您想嘗試以下線路,結(jié)果將根據(jù)您可用的線路類型而有所不同。您可以通過在白紙上使用記號筆或使用電工膠帶繪制高對比度線條。您還可以從在線示例打印線軌。機器人跟隨路線的能力將根據(jù)軌道的條件而變化。

現(xiàn)在我們準(zhǔn)備測試線路跟蹤能力。通過打印出軌跡或使用黑色電工膠帶制作軌跡,在白色表面上設(shè)置黑線。設(shè)置好線路后,在以下示例中加載線路。轉(zhuǎn)到文件 > 示例 > 自定義機器人庫 > TI-Robot-Lib > 07_Line_Following_Simplified。它首先通過前進和后退對線路進行校準(zhǔn)。然后您可以通過再次單擊該按鈕來開始線檢測。機器人將嘗試保持在線。如果您將機器人設(shè)置為較慢的速度,它可能會更好地工作。注意:根據(jù)您的線路設(shè)置,此示例可能有點棘手,因此請隨意跳過。

故障排除

代碼不上傳?

  • 檢查 Arduino 調(diào)試窗口中的錯誤。編譯器會告訴你發(fā)生了什么。錯誤以紅色文本顯示。
  • 有時,您的 LaunchPad 會卡住或掛斷之前的代碼。拔下 LaunchPad 并將其重新插入以執(zhí)行完全重置。這稱為上電復(fù)位。有時使用 RESET 按鈕可以工作,但通常最好將電源斷開并讓微控制器完全復(fù)位。
  • 如果您上傳失敗,則可能是您的驅(qū)動程序未正確安裝。Arduino IDE 有時會給出錯誤“未找到未使用的 FET”,這意味著它找不到連接到您的計算機的 LaunchPad。通過運行 TI Cloud Agent 或在本地安裝 RSLK 調(diào)試工具,確保為您的操作系統(tǒng)下載 USB 驅(qū)動程序。還要確保您的 USB 電纜不僅僅是電源。使用包裝盒中的一種以獲得最佳效果。
  • 如果您對 GUI 或第一個 LED 示例沒有任何問題,那么您的 Energia 應(yīng)該已正確設(shè)置。如果遇到任何問題,請重新啟動 LaunchPad 并重新啟動 Arduino IDE。確保在工具菜單下選擇正確的串口和板卡類型。

LED 不亮?

  • 確保您正確上傳了代碼并正確命名了 LED 引腳的變量。您的 LED 損壞的可能性很小,但我們可以通過使用相同代碼閃爍不同的 LED 來驗證。
  • 點擊重置按鈕,有時 LaunchPad 需要這樣做才能運行新上傳的程序。
?

實驗室 3 - 基本自主機器人

所需硬件

  • 組裝好的 TI-RSLK MAX

它會導(dǎo)航嗎?

我們將繼續(xù)使用一些更復(fù)雜的示例代碼來測試我們的機器人。我們可以使用庫中的狀態(tài)機示例。轉(zhuǎn)到文件 > 示例 > 自定義機器人庫 > TI-Robot-Lib > 09_State_Machine_Simplified。或者,通過轉(zhuǎn)到文件 > 新建打開一個新草圖。粘貼下面的示例代碼并運行它。

#include "Energia.h"  
#include "SimpleRSLK.h"  
  
/* Defines struct for state machine states */  
typedef enum  
{  
   START = 0,  
   WAIT,  
   GO,  
   GO2,  
   BUMPED1a,  
   BUMPED1b,  
   DRIVE,  
   STOP  
} my_state_t;  
/* Initialize state machine in START state */  
my_state_t state = START;  
/* Variable that will take the state machine to the STOP state */  
bool done;  
/* Initialize objects */   
void setup() {  
   /* Set serial communication to 115200 baud rate for MSP432 */  
   Serial.begin(115200);  
   delay(500);  
   Serial.println("Initializing.....");  
   setupRSLK();  
   /* Initialize LED pins as outputs */  
   pinMode(LED_FR_PIN, OUTPUT);   
   pinMode(LED_FL_PIN, OUTPUT);   
   pinMode(LED_BR_PIN, OUTPUT);   
   pinMode(LED_BL_PIN, OUTPUT);  
   pinMode(LP_RED_LED_PIN, OUTPUT);  
   pinMode(LP_RGB_LED_RED_PIN, OUTPUT);  
   pinMode(LP_RGB_LED_BLUE_PIN, OUTPUT);   
   pinMode(LP_RGB_LED_GREEN_PIN, OUTPUT);  
   /* Initialize LaunchPad buttons as inputs */  
   pinMode(LP_S1_PIN, INPUT_PULLUP);  
   pinMode(LP_S2_PIN, INPUT_PULLUP);  
   Serial.println("Initializing System Complete.");  
}  
void loop() {  
 // Emergency stop switch S2  
 // Switch to state "STOP" if pressed  
 if (digitalRead(LP_S2_PIN) == 0) state = STOP;  
 //-----------------------------------  
 //        Main State Machine  
 //-----------------------------------  
 switch (state) {  
   case START:  
           Serial.println("Enter START state");  
           state = WAIT;  
   break;  
   case WAIT:  
       Serial.println("Enter WAIT state");  
       digitalWrite(LP_RGB_LED_GREEN_PIN, HIGH);  
       delay(200);  
       digitalWrite(LP_RGB_LED_GREEN_PIN, LOW);  
       delay(200);  
       if (digitalRead(LP_S1_PIN) == 0) {  
           state = GO;  
       }  
   break;  
   case GO:  
       Serial.println("Enter GO state");  
       /* Start running the motors */  
       /* Enables specified motor.  
        *  Parameter:  
        *   Motor your referencing -> LEFT_MOTOR  RIGHT_MOTOR  BOTH_MOTORS  
        */  
       enableMotor(BOTH_MOTORS);  
       setMotorDirection(BOTH_MOTORS, MOTOR_DIR_FORWARD);  
       setMotorSpeed(BOTH_MOTORS, 25);  
       state = GO2;  
   break;  
   case GO2:  
       Serial.println("Enter GO2 state");  
       /* Detect a bump and then switch to bump correction state */  
       for(int x = 0;x<6;x++)  
       {  
           if(isBumpSwitchPressed(x) == true) state = BUMPED1a;  
       }  
       /* Continue to rotate until done condition is met */  
       /* Certain distance traveled or other conditions can be set */  
       if (getEncoderLeftCnt() > 50000) {  
         done = 1;   
       }  
       if (done) state = STOP;  
   break;  
   case BUMPED1a:  
       Serial.println("Enter BUMPED1a state");  
       /* Stop the motors */  
       setMotorSpeed(BOTH_MOTORS,0);  
       /* Reverse the robot */  
       setMotorDirection(BOTH_MOTORS, MOTOR_DIR_BACKWARD);  
       setMotorSpeed(BOTH_MOTORS,25);  
       delay(500);  
       state = BUMPED1b;  
   break;  
   case BUMPED1b:  
       Serial.println("Enter BUMPED1b state");  
       /* Turn robot to avoid obstacle */  
       setMotorSpeed(LEFT_MOTOR,0);  
       setMotorSpeed(RIGHT_MOTOR,25);  
       delay(100);  
       state = DRIVE;  
   break;  
   case DRIVE:  
       Serial.println("Enter DRIVE state");  
       /* Put motors back to forward direction */  
       setMotorDirection(BOTH_MOTORS, MOTOR_DIR_FORWARD);  
       setMotorSpeed(BOTH_MOTORS, 25);  
       state = GO2;  
   break;  
   case STOP:  
       Serial.println("Enter STOP state");  
       Serial.println("Press Reset to begin again");  
       /* Stop all motors */  
       disableMotor(BOTH_MOTORS);  
   break;  
 }  
 delay(10);  
}

此代碼將使用基本狀態(tài)機向機器人展示如何撞到墻壁和物體并避免它們。這稱為航位推算導(dǎo)航。

嘗試其他一些庫示例。您可以看到它們基于名為 SimpleRSLK.h 的文件。如果您想在自己的代碼中使用這些函數(shù),或者只是知道它在做什么,請進入您的 Arduino Libraries 文件夾,您可以查看庫源文件。

希望您喜歡 TI-RSLK MAX 的體驗!

結(jié)論

學(xué)習(xí)不止于此。通過探索課程,深入了解 TI-RSLK MAX 的高級主題。與 Jonathan Valvano 博士一起獲得有關(guān)嵌入式系統(tǒng)的指導(dǎo)學(xué)習(xí)體驗。在 20 多個學(xué)習(xí)模塊中查看講座視頻和更多內(nèi)容。

您可以學(xué)習(xí)如何使用模塊 1 中的代碼項目設(shè)置 Code Composer Studio。還有使用 DriverLib 進行編程。這是這種風(fēng)格編程的示例

您還可以從 edX 了解有關(guān)機電一體化主題的更多信息,并將您的知識應(yīng)用于任何系統(tǒng)。

?

?


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

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  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元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

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

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  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十天學(xué)會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
做生意适合摆放龙龟吗| 百家乐秘| 大发888娱乐城存款| 百家乐官网扑克牌耙| 伟博百家乐官网娱乐城| 博彩百家乐五2013124预测 | 合乐8百家乐官网娱乐城| 百家乐英皇娱乐场开户注册 | 瓮安县| 嘉年华百家乐官网的玩法技巧和规则 | 百家乐官网视频百家乐官网| 大发888体育官网| 百家乐投法| 百家乐娱乐城网站| 百家乐官网实战路| 邯郸百家乐官网园真钱区| 国际豪门娱乐| 大发888客户端的软件| 有钱人百家乐的玩法技巧和规则 | 同乐城百家乐娱乐城| 钱百家乐取胜三步曲| 百家乐官网棋牌官网| 蒙城县| 足球注册网站| 大发888代理佣金| 金冠百家乐的玩法技巧和规则 | 百家乐官网的最佳玩| 百家乐官网方法技巧| 高邮市| 蒙特卡罗娱乐网| 大发888迅雷下载免费| 百家乐官网赌博破解方法| 全讯网| 百盛百家乐官网的玩法技巧和规则 | 德晋百家乐的玩法技巧和规则 | 挖掘百家乐官网赢钱秘籍| 新澳门百家乐的玩法技巧和规则 | 威尼斯人娱乐城真人赌博| 百家乐官网龙虎扑克牌游戏技巧打| 大发888投注网| 24山是那二十四山|