99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

電子發(fā)燒友App

硬聲App

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

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

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

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

2022-11-16 | zip | 49.65 MB | 次下載 | 免費(fèi)

資料介紹

描述

此頁(yè)面上提供了研討會(huì)體驗(yàn)所需的一切。

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

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

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

實(shí)驗(yàn)室 0 - 準(zhǔn)備工作

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

在我們開(kāi)始之前,請(qǐng)確保您:

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

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

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

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

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

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

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

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

實(shí)驗(yàn) 1 - 構(gòu)建 TI-RSLK MAX 機(jī)器人

所需硬件

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

在這個(gè)實(shí)驗(yàn)室中,我們將組裝我們的機(jī)器人。

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

按照這些說(shuō)明組裝您的機(jī)器人

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

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

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

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

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

pYYBAGNzcSGABnXdAAA2TtQyUfM035.png
?
pYYBAGNzcSSAMQluAAEUQ6waNt0121.png
?

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

pYYBAGNzcSaAHvnuAAB4E6t_Xh4311.png
?

4) 面包板支架放置在藍(lán)色圓圈處

poYBAGNzcSiADh7-AACGqoGh7qA440.jpg
?
pYYBAGNzcSuAVhDNAAC6wznzkQA172.jpg
?

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

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

- 一個(gè)。這使您可以驗(yàn)證一切是否正常。如果您想確保您的機(jī)器人沒(méi)有損壞,它也會(huì)在以后為您提供幫助。

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

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

?

Mac 操作系統(tǒng)

Linux 64 位

- d。每次都會(huì)下載測(cè)試固件,因此在加載頁(yè)面時(shí)請(qǐng)確保 LaunchPad 已通過(guò) USB 數(shù)據(jù)線連接到 PC

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

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

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

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

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

實(shí)驗(yàn) 2 - Arduino 編程介紹

所需硬件

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

所需軟件

  • Arduino IDE
  • TI-RSLK MAX 機(jī)器人庫(kù)

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

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

1.打開(kāi) Arduino IDE。

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

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

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

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

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

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

或者,通過(guò)轉(zhuǎn)到文件 > 新建打開(kāi)一個(gè)新草圖。粘貼下面的示例代碼并運(yù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);  
 }   
}

這段代碼讓您的機(jī)器人在原地旋轉(zhuǎn)以顯示我們擁有的簡(jiǎn)單電機(jī)控制。您可能需要對(duì)其進(jìn)行修改,因?yàn)闄C(jī)器人所在的表面會(huì)影響其轉(zhuǎn)動(dòng)速度。不要太掛在這部分上,因?yàn)槲覀儗⒃谙乱粋€(gè)實(shí)驗(yàn)室中添加更多的自治層。這再次證明了我們的電機(jī)確實(shí)可以工作,并讓我們對(duì)電機(jī)邏輯有所了解。

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

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

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

故障排除

代碼不上傳?

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

LED 不亮?

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

實(shí)驗(yàn)室 3 - 基本自主機(jī)器人

所需硬件

  • 組裝好的 TI-RSLK MAX

它會(huì)導(dǎo)航嗎?

我們將繼續(xù)使用一些更復(fù)雜的示例代碼來(lái)測(cè)試我們的機(jī)器人。我們可以使用庫(kù)中的狀態(tài)機(jī)示例。轉(zhuǎn)到文件 > 示例 > 自定義機(jī)器人庫(kù) > TI-Robot-Lib > 09_State_Machine_Simplified。或者,通過(guò)轉(zhuǎn)到文件 > 新建打開(kāi)一個(gè)新草圖。粘貼下面的示例代碼并運(yù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)機(jī)向機(jī)器人展示如何撞到墻壁和物體并避免它們。這稱為航位推算導(dǎo)航。

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

希望您喜歡 TI-RSLK MAX 的體驗(yàn)!

結(jié)論

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

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

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

?

?


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

評(píng)論

查看更多

下載排行

本周

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

本月

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

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費(fèi)
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費(fèi)
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費(fèi)
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費(fèi)
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費(fèi)
  11. 6電路仿真軟件multisim 10.0免費(fèi)下載
  12. 340992  |  191187次下載  |  免費(fèi)
  13. 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  14. 158M  |  183279次下載  |  免費(fèi)
  15. 8proe5.0野火版下載(中文版免費(fèi)下載)
  16. 未知  |  138040次下載  |  免費(fèi)