innoBASIC Workshop2 軟體操作

Download Report

Transcript innoBASIC Workshop2 軟體操作

innoBASIC Workshop2
軟體操作
教師 陳奕齊
1
目錄

一、軟體簡介

二、介面

三、程式範例

四、機器人操作

五、參考網站
2
一、軟體簡介

開發公司:利基應用科技

軟體介紹:innoBASIC Workshop2是在
Windows環境之下為Basic Commander系統程式
開發所設計的工作平台 ,可快速簡易的協助使用
者執行InnoBASIC語言程式的編寫、除錯、編譯、
下載等功能。動作編輯器則是提供多軸機器人控制
模組的動作規劃及程式編輯。
3
二、介面
4
以檔案總管的方式,
可以直接開啟檔案
5
程式的語法和VB一樣,
也和科內目前使用的
BASIC Stamp Editor
軟體的語法很像。
6
錯誤訊息,
可以雙擊滑鼠左鍵,
直接跳到該行。
7
終端訊窗會顯示
BASIC Commander
回傳的訊息。
8

程式完成之後,要執行編譯,在「建立」->
「編譯」。若要將程式編譯並且載入晶片則要
選擇「建立」->「建立」。
9
三、程式範例

1.聲納

Peripheral mySonar As SonarA @ 3

Dim Status As Byte
'儲存取得的偵測結果狀態
Dim Distance As Word
'儲存取得的偵測結果
Sub MAIN()
Do
mySonar.SetFloorLevel(0)
'設定離地高度為大於5cm
mySonar.SetRangingTime(63) '設定等待接收時間為63ms
mySonar.SetBurstPower(10)
'設定發射強度等級為 10
Do
mySonar.Ranging()
'執行重復偵測
Pause 100
'等待100ms
Status= mySonar.GetDistance(1,Distance)
'取得偵測結果
Loop Until Status = 1
'迴圈停止條件(Status = 1)
Debug "Distance=",Distance,"cm",CR
'顯示偵測結果
Loop
End Sub














'設定模組編號為0
10

2.紅外線測距

Sub main()
'此程式利用PulseIn指令回傳感測器資訊(配合A2P Converter)
Dim temp as Word
Do
PulseIn 0,0,temp ‘將感測器的訊號讀回(請將Pulse Output接至Pin 0)
Debug "Input Signal = ", Temp,CR
'將感測器訊號顯示出來
Pause 100
'暫停100mS
Loop
'迴圈
End Sub







11

3. Compass(地磁定位套件)

Peripheral myCompass As CompassA @ 0

Dim g_bCalEndEvent As Byte
'儲存校正完成判斷參數
Dim g_iFX As Integer
'儲存X軸磁場強度的參數
Dim g_iFY As Integer
'儲存Y軸磁場強度的參數
Dim g_wAngle As Word
'儲存偵測角度的參數
Dim g_iDevAngle As Integer
'儲存偏向角的參數
Sub Main()
'主程式
g_bCalEndEvent = 0
清除校正判斷參數
Debug CLS
Debug "開始校正模組,請水平旋轉模組至少360度以上", CR
myCompass.Calibration(2) '設定校正時間為20秒












Do
Loop Until g_bCalEndEvent=1


Debug "校正結束", CR





myCompass.SetRefreshFreq(4)
myCompass.SaveAngle(0, 0)
myCompass.SetDevAngleLimit(45)
myCompass.SetDevAngleNum(0)
‘設定模組編號為0
'
'偵測到校正完成事件再離開
'設定每秒更新偵測值
'將0度儲存於第0個角度儲存區
'設定最大偏向角為45度
'將第0個儲存區的角度設為基準方位
12




















myCompass.EnableRefreshEvent()
'啟動更新偵測值事件
myCompass.EnableDevAngleLimitEvent()
'啟動超出最大偏向角事件
Do
'無窮迴圈
Loop
End Sub
Event myCompass.FieldRefreshEvent()
'更新偵測值事件
myCompass.GetXYField(g_iFX, g_iFY) '取得XY軸的磁場值
myCompass.GetAngle(g_wAngle)
'取得與正北的角度差異值
Debug CSRXY(1, 5), "目前方位: ", %DEC3 g_wAngle, CR
Debug CSRXY(1, 6), "X軸磁場強度: ", %DEC6 g_iFX, CR
Debug CSRXY(1, 7), "Y軸磁場強度: ", %DEC6 g_iFY, CR
End Event
Event myCompass.DevAngleLimitEvent()
myCompass.GetDevAngle(0, g_iDevAngle)
'超出最大偏向角事件
'取得偏向角的角度
Debug CSRXY(1, 10), "偏向角: ", %DEC4 g_iDevAngle, CR
End Event
Event myCompass.CalEndEvent()
g_bCalEndEvent = 1
End Event
'校正完成事件
13
四、機器人操作

認識伺服機馬達:
電壓
12V
12V(typ)
10V(min)
扭力
12 kgf-cm
10 kgf-cm
速度
0.15 sec/60
0.18 sec/60
運動範圍
180
材質
金屬齒輪和塑膠本體
祥儀伺服機 SYS-214050
14

伺服機馬達注意事項:

伺服機操作所需要的電流量較大,須先確認電源供應器是否能提供足
夠的電流給伺服機,也必須確認伺服機所能承受的電壓,是否與電源
提供的電壓值相同。

操作中請勿移除USB連接線,以免造成誤動作,如果伺服機動作不
正常,請先關閉伺服機電源,確認問題排除後再重新操作。

伺服機可能有約一百八十度的轉動,請不要讓伺服機轉動時碰到障礙
物影響轉動,也不要把手或物品置於轉動範圍內,以免受傷或造成物
品損毀。

不同伺服機有不同扭力限制,請不要讓伺服機承受過大的抗力,也不
要讓伺服機維持相同動作太久,以免伺服機受損。
15

伺服機馬達對應位置
16

小技巧:

一開始編輯動作,建議只做手部動作,等熟
悉操作之後,再來嘗試配合腳步動作。

編輯每一個動作時,不要太複雜,因為馬達
是直接轉到定位。
17

機器人動作編輯:在工作列的 工具->動作編輯器
18

選擇16軸全身兩足機器人
19
20
每個動作都用一個編號
21
調整伺服機馬達,
可以直接輸入數字,
範圍是800~2200
22
調整伺服機馬達,
也可以用拖曳拉條的方式,
馬達會同步運作。
23
調整speed,可以控制
馬達在這個frame
轉動的速度。
(設定時要按一下speed按鍵)
24
調整time,可以控制
馬達在這個frame
花多久時間完成轉動。
(單位是毫秒)
(設定時要按time按鈕)
25
設計完動作可以存在電腦裡,
或是從電腦讀取。
26
也可以存在機器人的晶片上,
或是從機器人晶片上讀取
27

測試動作程式碼:

Peripheral mySC16 As ServoRunnerA @ 0 ‘declare the peripheral
Sub main()
Dim I As Byte
Do
For I = 0 to 2
‘讀取3個frame,故有10個frame,則要把2改成9
mySC16.loadframe(I)
‘load the frame
mySC16.RunAllServo() ‘perform the frame
Pause 500
‘編輯動作時若把time設定500,這邊就要設定500
Next I
Loop
End Sub










28

機器人程式

'Robotinno 機器人 前進,後退範例程式 For Servo Commander 16
Peripheral Ser As ServoRunnerA @ 0
Dim I As Byte
Sub Main()
'-----設定初始微調值---------------Ser.SetPosOffset(0,0)
Ser.SetPosOffset(1,0)
Ser.SetPosOffset(2,0)
Ser.SetPosOffset(3,0)
Ser.SetPosOffset(4,0)
Ser.SetPosOffset(5,0)
Ser.SetPosOffset(6,0)
Ser.SetPosOffset(7,0)
'------------------------------------------Ser.SetPosOffset(8,0)
Ser.SetPosOffset(9,0)
Ser.SetPosOffset(10,0)
Ser.SetPosOffset(11,0)
Ser.SetPosOffset(12,0)
Ser.SetPosOffset(13,0)
Ser.SetPosOffset(14,0)
Ser.SetPosOffset(15,0)
'--------------------------------------------






















29
























RunFrameWithTime(0,800)
'執行動作0(站立)
'=============================
RunFrameWithTime(1,500)
'重心左移
For I = 0 To 2
'執行前進動作 3 次
RunFrameWithTime(2,500)
'抬起右腳
RunFrameWithTime(3,500)
'右腳向前放下
RunFrameWithTime(4,500)
'重心回正
RunFrameWithTime(5,500)
'重心右移
RunFrameWithTime(6,500)
'抬起左腳
RunFrameWithTime(7,500)
'左腳向前放下
RunFrameWithTime(8,500)
'重心回正
RunFrameWithTime(9,500)
'重心左移
Next
RunFrameWithTime(2,500)
RunFrameWithTime(1,500)
RunFrameWithTime(0,800)
End Sub
'抬起右腳
'移動重心
'執行動作0(站立)
'======執行 "ID" 指定動作,同時設定等待時間====
Sub RunFrameWithTime(bID As Byte,wTime As Word)
Ser.LoadFrame(bID)
'載入 "ID" 指定動作
Ser.runallservo()
'執行動作
Pause wTime
End Sub
'============================
30
五、參考網站

利基應用科技

http://www.innovati.com.tw/website/index.php
31