国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

FTC軟件系統學習筆記 3.第一個OpMode

2019-11-09 16:13:59
字體:
來源:轉載
供稿:網友

“API文檔是個好東西,Youtube也是個好東西”


最近我在墻外漫游的時候,發現了很多個版本的FTC操作模式寫法,這里為大家介紹一種在2017標準下最好寫也是最常見的寫法。

搭建基本框架

首先,讓我們在TeamCode->java->org.firstinspires.ftc.teamcode文件夾底下創建一個java class,按照自己的喜好取名,推薦單詞首字母大寫,如:TutorialOpMode(不要有空格)

這里寫圖片描述

創建之后,你會看到文件中只有一行類的聲明,啥也沒有。接下來就需要繼承一個官方提供的操作類來進行下面編寫。只需要在public class TutorialOpMode 后面加上extends LinearOpMode即可,此時你會看見這一行有出現了紅色的下劃線,不要著急,再接著按alt + enter選擇implement后確定即可。

這里寫圖片描述

出現這種情況是因為在繼承LinearOpMode類時同時繼承了它所有的接口和抽象方法,而接口和抽象方法是必須要在子類中實現(定義)的。

理論上,此時你的代碼已經可以編譯運行并安裝在安卓手機上了,但你的Driver Station上并不會出現任何可選的操作模式。

接下來,在代碼的全局區域加上一句,name是操作模式在Driver Station上面的名字,group則是分類。

@TeleOp(name = "TutorialOpMode", group = "Tutorial")

注意沒有分號。在出現自動補齊選項的時候盡量使用自動補齊,這樣可以避免很多重復的代碼和手動導入包。這里以“@”開頭的語句稱為Annotation,TeleOp就是FTC包中定義的一個Annotation,所以需要導入包。

這里寫圖片描述

此時你可以安裝到手機上,并查看Driver Station了,在TeleOp一欄下拉即可看到這個操作模式。

接下來,寫上如下的代碼:

這里寫圖片描述

我們來逐行解釋代碼:

DcMotor motor1 = null;

聲明一個馬達,以便在接下來的程序中操作。注意不要將聲明放到任何函數中。當然你也可以聲明和定義一步到位,但從代碼重用的角度考慮,不建議這樣做。

motor1 = hardwareMap.dcMotor.get("motor1"); motor1.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER);

hardwareMap即從硬件列表中匹配該馬達,get()中的字符串即你在RobotController上定義的馬達名字。除馬達外,其他設備也基本上按照該方法獲取,這與FRC通過串口編號進行獲取有所不同。setMode()將馬達設置為停轉模式,并重置馬達。

waitForStart();

這一句從字面意思來理解也就是等待操作開始,也就是說,在你按下手機屏幕上的start按鈕之前,程序只會執行到這里,按下按鈕后,這句話以下的語句才會執行。你可以將這句語句理解為分水嶺,上面的為初始化,下面的為操作。

motor1.setMode(DcMotor.RunMode.RUN_USING_ENCODER); while(opModeIsActive()) { motor1.setPower(0.5); idle(); }

將馬達設置為使用編碼器工作,opModeIsActive()即檢驗是否處于操作階段,在操作階段期間,這個while循環內的語句會重復執行。 setPower函數可設置馬達的速度,傳入值為[-1.0,1.0]之間的一個浮點數,負數表示倒轉。 idle()等同于Thread.yield(),即使當前線程進入可執行狀態,以同步其他線程。

接下來你就可以將App安裝到手機上,并配置好一切硬件和兩臺手機,并欣賞馬達的轉動了。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 梁山县| 英吉沙县| 西畴县| 镇赉县| 汨罗市| 六盘水市| 福贡县| 北川| 怀化市| 通州区| 灵丘县| 沭阳县| 龙江县| 天长市| 武宣县| 凉山| 信丰县| 枞阳县| 天祝| 神农架林区| 武功县| 潮安县| 台南市| 大渡口区| 铜陵市| 云南省| 渭南市| 咸阳市| 秦皇岛市| 漠河县| 依兰县| 稷山县| 石泉县| 陆良县| 沅陵县| 措美县| 北安市| 北安市| 河津市| 巴彦淖尔市| 汉源县|