# Robot C 使用 C 語言來寫 LEGO 機器人 ## 下載 https://www.robotc.net/ 選擇 LEGO 後安裝軟體 ![圖片](https://hackmd.io/_uploads/BkejQ7Ekyx.png) 正確安裝完要有以下軟體 ![image](https://hackmd.io/_uploads/ByuySQNykx.png) 兩種形狀的差別:方形是拉方塊,圓形是寫程式,這裡用的是圓形 打開 **ROBOTC for LEGO Mindstorms 4.X** 如果看到類似以下視窗直接按是 ![image](https://hackmd.io/_uploads/BJSU8mV1ke.png) ## 基本設定 :::warning 1. Robot > Platform Type > LEGO Mindstorms EV3 2. Robot > Platform Type > Natural Language 3. Compiler Target > Physical Robot / Virtual Worlds 燒錄進實體機器時選擇 Physical Robot 在線上測試時選擇 Virtual Worlds ::: **New File** 開一個新檔案 ## 馬達跟感測器設定(Motor and Sensor Setup ) :::success - Standard Models (範例程式) 可使用預設機器人的設定 ![image](https://hackmd.io/_uploads/SyNFcXN11l.png) - Moters (馬達) ![image](https://hackmd.io/_uploads/rkMEoQNJkx.png) - Type : 設定馬達大小顆 (大馬達 / 中馬達) - Sensors (感測器) ![image](https://hackmd.io/_uploads/Hy093mVkye.png) - Sensor Type : 設定感測器種類 - Color (EV3) : 顏色感測器 - Ultrasonic (EV3) : 超音波感測器 - Gyro (EV3) : 陀螺儀 - Touch (EV3) : 觸碰感測器 - Sensor Mode : 設定感測器模式 ::: 設定好後程式碼區塊會長像這樣 這裡使用 B ,C 接大馬達,S3 接顏色感測器 ( A ,D 馬達沒用到可以把那兩行刪掉 ) ![image](https://hackmd.io/_uploads/rkHz6QNyyx.png) # 程式 主程式寫在 task main() 裡 ```c task main() { //code } ``` 如果要讓他一直重複執行時,加個 while ```c task main() { while(1){ //code } } ``` ## 執行程式或燒錄程式 選擇 Download to Robot ![image](https://hackmd.io/_uploads/HJk5WEVy1x.png) - 實體:直接燒進 EV3 裡 (需接線) - 虛擬:會跳出下列視窗 可直接選擇 Log in Locally > Log in Guest (免登入,也可直接註冊一個帳號登入) ![image](https://hackmd.io/_uploads/Hk8lMEVkyg.png) 之後可隨便選一個圖測試 START CHALLENGE ![圖片](https://hackmd.io/_uploads/HyPQ4N4kkl.png) ## 前進和後退 設定馬達的速度 (須介於 100 ~ -100 之間,正的前進,負的後退,0 表示停止) `setMotorSpeed(馬達,速度);` 需加 delay 去給他時間執行移動的動作 :::spoiler 範例:速度 90 ,前進一秒 ```c= task main(){ setMotorSpeed(motorB,90); setMotorSpeed(motorC,90); delay(1000); } ``` ::: :::spoiler 範例:速度 90 .一直前進 ```c= task main() { while(1){ setMotorSpeed(motorB,90); setMotorSpeed(motorC,90); delay(1000); } } ``` ::: ## 超音波感測器(sonarSensor) 獲得超音波感測器的距離(假設S1接感測器) `getUSDistance(S1);` ## 顏色 / 光源感測器 Sensor Setup : Sensor Type > Color (EV3) ### 黑白感測 (Reflect) :::info 須先把感測器模式換成黑白感測 Sensor Setup : Sensor Mode > Reflect ::: 取得反射值 (S1為顏色感測器) `getColorReflected(S1);` 反射值越大越白,越小越黑 :::spoiler 範例:取得反射值大於20時...,小於20時... ```c= if(getColorReflected(S1)>20){ //code } else { //code } ``` ::: ## 查詢程式碼可用函式 在視窗左邊有個可以直接查詢的地方 ![image](https://hackmd.io/_uploads/BysIvUrk1e.png) ![image](https://hackmd.io/_uploads/By6K28HkJl.png) --- ###### tags: `C/C++` `EV3`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up