• Tidak ada hasil yang ditemukan

LAMPIRAN CODE PROGRAM ASSEMBLY. $mod51 servo1 equ p3.5 servo2 equ p3.3 servo3 equ p1.7 servo4 equ p1.5 servo5 equ p1.3 servo6 equ p1.

N/A
N/A
Protected

Academic year: 2021

Membagikan "LAMPIRAN CODE PROGRAM ASSEMBLY. $mod51 servo1 equ p3.5 servo2 equ p3.3 servo3 equ p1.7 servo4 equ p1.5 servo5 equ p1.3 servo6 equ p1."

Copied!
73
0
0

Teks penuh

(1)

LAMPIRAN CODE PROGRAM ASSEMBLY $mod51 servo1 equ p3.5 servo2 equ p3.3 servo3 equ p1.7 servo4 equ p1.5 servo5 equ p1.3 servo6 equ p1.1 led1 equ p3.4 led2 equ p3.2 led3 equ p3.7 led4 equ p3.6 led5 equ p1.2 led6 equ p1.0 sw equ p2.0 cw1 equ p2.3 ccw1 equ p2.4 cw2 equ p2.5 ccw2 equ p2.6 cw3 equ p2.7 ccw3 equ p0.7 cw4 equ p0.5 ccw4 equ p0.4 cw5 equ p0.3 ccw5 equ p0.2 cw6 equ p0.1 ccw6 equ p0.0 turun1 equ 30h turun2 equ 31h turun3 equ 32h turun4 equ 33h turun5 equ 34h turun6 equ 35h turun7 equ 36h turun8 equ 37h turun9 equ 38h turun10 equ 39h time_servo equ 50h time_servo1 equ 51h time_servo2 equ 52h time_servo3 equ 53h time_servo4 equ 54h time_servo5 equ 55h

(2)

time_servo6 equ 56h pakai1 equ 57h pakai2 equ 58h pakai3 equ 59h pakai4 equ 5ah pakai5 equ 5bh pakai6 equ 5ch org 0000h sjmp main org 0030h main: clr led1 clr led2 clr led3 clr led4 clr led5 clr led6 clr servo1 clr servo2 clr servo3 clr servo4 clr servo5 clr servo6 mov scon,#50h mov tmod,#20h mov th1,#-3 mov a,pcon clr 0e7h mov pcon,a setb tr1 ajmp tunggu_serial2 ;--- ;Tunggu terima data dari Serial Port ;--- tunggu_serial1: jb sw,tunggu_serial2a ajmp sw_prog tunggu_serial2: clr ri tunggu_serial2a: jnb ri,tunggu_serial1 mov 40h,sbuf clr ri jnb ri,$

(3)

mov 41h,sbuf clr ri jnb ri,$ mov 42h,sbuf clr ri jnb ri,$ mov 43h,sbuf clr ri jnb ri,$ mov 44h,sbuf clr ri jnb ri,$ mov 45h,sbuf clr ri jnb ri,$ mov 46h,sbuf clr ri jnb ri,$ mov 47h,sbuf clr ri jnb ri,$ mov 48h,sbuf clr ri jnb ri,$ mov 49h,sbuf clr ri jnb ri,$ mov 4ah,sbuf clr ri jnb ri,$ mov 4bh,sbuf clr ri jnb ri,$ mov 4ch,sbuf clr ri jnb ri,$ mov 4dh,sbuf clr ri jnb ri,$ mov 4eh,sbuf clr ri jnb ri,$

(4)

mov 4fh,sbuf clr ri jnb ri,$ mov 5dh,sbuf clr ri jnb ri,$ mov 5eh,sbuf mov r0,#40h mov r1,#42h acall cek_data mov r0,#43h mov r1,#45h acall cek_data mov r0,#46h mov r1,#48h acall cek_data mov r0,#49h mov r1,#4bh acall cek_data mov r0,#4ch mov r1,#4eh acall cek_data mov r0,#4fh mov r1,#5eh acall cek_data ;---

;Proses memutar Servo ;--- proses_servo: mov pakai1,#0 mov pakai2,#0 mov pakai3,#0 mov pakai4,#0 mov pakai5,#0 mov pakai6,#0 mov turun1,#200 mov turun2,#200 mov turun3,#200 mov turun4,#200 mov turun5,#200

(5)

mov turun6,#200 mov turun7,#200 mov turun8,#200 mov turun9,#200 mov turun10,#200 setb servo1

jeda1: inc pakai1

acall delay10us

djnz time_servo1,jeda1

clr servo1

setb servo2

jeda2: inc pakai2

acall delay10us

djnz time_servo2,jeda2

clr servo2

setb servo3

jeda3: inc pakai3

acall delay10us

djnz time_servo3,jeda3

clr servo3

setb servo4

jeda4: inc pakai4

acall delay10us

djnz time_servo4,jeda4

clr servo4

setb servo5

jeda5: inc pakai5

acall delay10us

djnz time_servo5,jeda5

clr servo5

setb servo6

jeda6: inc pakai6

acall delay10us djnz time_servo6,jeda6 clr servo6 clr c mov a,turun1 subb a,pakai1 mov turun1,a

(6)

clr c mov a,turun2 subb a,pakai2 mov turun2,a clr c mov a,turun3 subb a,pakai3 mov turun3,a clr c mov a,turun4 subb a,pakai4 mov turun4,a clr c mov a,turun5 subb a,pakai5 mov turun5,a clr c mov a,turun6 subb a,pakai6 mov turun6,a wait_turun1: acall delay10us djnz turun1,wait_turun1 wait_turun2: acall delay10us djnz turun2,wait_turun2 wait_turun3: acall delay10us djnz turun3,wait_turun3 wait_turun4: acall delay10us djnz turun4,wait_turun4 wait_turun5: acall delay10us djnz turun5,wait_turun5 wait_turun6: acall delay10us

(7)

djnz turun6,wait_turun6 wait_turun7: acall delay10us djnz turun7,wait_turun7 wait_turun8: acall delay10us djnz turun8,wait_turun8 wait_turun9: acall delay10us djnz turun9,wait_turun9 wait_turun10: acall delay10us djnz turun10,wait_turun10 ajmp tunggu_serial2 ;---

;Proses cek data yang diterima dari Serial Port ;--- cek_data: mov a,@r0 cek_servo1: cjne a,#'1',cek_servo2 lcall cek_arah mov time_servo1,time_servo ret cek_servo2: cjne a,#'2',cek_servo3 lcall cek_arah mov time_servo2,time_servo ret cek_servo3: cjne a,#'3',cek_servo4 lcall cek_arah mov time_servo3,time_servo ret cek_servo4: cjne a,#'4',cek_servo5 lcall cek_arah mov time_servo4,time_servo ret

(8)

cek_servo5: cjne a,#'5',cek_servo6 lcall cek_arah mov time_servo5,time_servo ret cek_servo6: cjne a,#'6',bukan_servo lcall cek_arah mov time_servo6,time_servo ret bukan_servo: ret ;--- ;Proses cek arah putaran servo ;--- cek_arah:

mov a,@r1

arah0: cjne a,#'0',arah1

mov time_servo,#175 ret

arah1: cjne a,#'1',arah2

mov time_servo,#165 ret

arah2: cjne a,#'2',arah3

mov time_servo,#155 ret

arah3: cjne a,#'3',arah4

mov time_servo,#145 ret

arah4: cjne a,#'4',arah5

mov time_servo,#135 ret

arah5: cjne a,#'5',arah6

mov time_servo,#125 ret

arah6: cjne a,#'6',arah7

(9)

ret

arah7: cjne a,#'7',arah8

mov time_servo,#105 ret

arah8: cjne a,#'8',arah9

mov time_servo,#95 ret

arah9: cjne a,#'9',araha

mov time_servo,#85 ret

araha: cjne a,#'a',arahb

mov time_servo,#75 ret

arahb: cjne a,#'b',arahc

mov time_servo,#65 ret

arahc: cjne a,#'c',bukan_arah mov time_servo,#55 ret

bukan_arah: ret

;---

;Program deteksi switch tanpa komputer PC ;--- sw_prog: mov 60h,#1 mov 61h,#6 mov 62h,#2 mov 63h,#6 mov 64h,#3 mov 65h,#6 mov 66h,#4 mov 67h,#6 mov 68h,#5 mov 69h,#6 mov 6ah,#6 mov 6bh,#6 sw_prog1: jnb sw,cek_cw1

(10)

ajmp tunggu_serial2 ;--- cek_cw1:jb cw1,cek_ccw1 setb led1 lcall delay jnb cw1,$ clr led1 mov a,61h cjne a,#12,cek_cw1a ajmp sw_prog2 cek_cw1a: inc 61h ajmp sw_prog2 cek_ccw1: jb ccw1,cek_cw2 setb led1 lcall delay jnb ccw1,$ clr led1 mov a,61h cjne a,#0,cek_ccw1a ajmp sw_prog2 cek_ccw1a: dec 61h ajmp sw_prog2 ;--- cek_cw2: jb cw2,cek_ccw2 setb led2 lcall delay jnb cw2,$ clr led2 mov a,63h cjne a,#12,cek_cw2a ajmp sw_prog2 cek_cw2a: inc 63h ajmp sw_prog2 cek_ccw2: jb ccw2,cek_cw3 setb led2 lcall delay

(11)

jnb ccw2,$ clr led2 mov a,63h cjne a,#0,cek_ccw2a ajmp sw_prog2 cek_ccw2a: dec 63h ajmp sw_prog2 ;--- cek_cw3: jb cw3,cek_ccw3 setb led3 lcall delay jnb cw3,$ clr led3 mov a,65h cjne a,#12,cek_cw3a ajmp sw_prog2 cek_cw3a: inc 65h ajmp sw_prog2 cek_ccw3: jb ccw3,cek_cw4 setb led3 lcall delay jnb ccw3,$ clr led3 mov a,65h cjne a,#0,cek_ccw3a ajmp sw_prog2 cek_ccw3a: dec 65h ajmp sw_prog2 ;--- cek_cw4: jb cw4,cek_ccw4 setb led4 lcall delay jnb cw4,$ clr led4 mov a,67h cjne a,#12,cek_cw4a ajmp sw_prog2

(12)

cek_cw4a: inc 67h ajmp sw_prog2 cek_ccw4: jb ccw4,cek_cw5 setb led4 lcall delay jnb ccw4,$ clr led4 mov a,67h cjne a,#0,cek_ccw4a ajmp sw_prog2 cek_ccw4a: dec 67h ajmp sw_prog2 ;--- cek_cw5: jb cw5,cek_ccw5 setb led5 lcall delay jnb cw5,$ clr led5 mov a,69h cjne a,#12,cek_cw5a ajmp sw_prog2 cek_cw5a: inc 69h ajmp sw_prog2 cek_ccw5: jb ccw5,cek_cw6 setb led5 lcall delay jnb ccw5,$ clr led5 mov a,69h cjne a,#0,cek_ccw5a ajmp sw_prog2 cek_ccw5a: dec 69h ajmp sw_prog2 ;---

(13)

cek_cw6: jb cw6,cek_ccw6 setb led6 lcall delay jnb cw6,$ clr led6 mov a,6bh cjne a,#12,cek_cw6a ajmp sw_prog2 cek_cw6a: inc 6bh ajmp sw_prog2 cek_ccw6: jb ccw6,sw_prog2 setb led6 lcall delay jnb ccw6,$ clr led6 mov a,6bh cjne a,#0,cek_ccw6a ajmp sw_prog2 cek_ccw6a: dec 6bh ajmp sw_prog2 ;--- sw_prog2: mov r0,#60h mov r1,#61h acall cek_dataX mov r0,#62h mov r1,#63h acall cek_dataX mov r0,#64h mov r1,#65h acall cek_dataX mov r0,#66h mov r1,#67h acall cek_dataX mov r0,#68h mov r1,#69h

(14)

acall cek_dataX

mov r0,#6ah

mov r1,#6bh

acall cek_dataX ;---

;Proses memutar Servo tanpa komputer PC ;--- proses_servoX: mov pakai1,#0 mov pakai2,#0 mov pakai3,#0 mov pakai4,#0 mov pakai5,#0 mov pakai6,#0 mov turun1,#200 mov turun2,#200 mov turun3,#200 mov turun4,#200 mov turun5,#200 mov turun6,#200 mov turun7,#200 mov turun8,#200 mov turun9,#200 mov turun10,#200 setb servo1

jeda1X: inc pakai1 acall delay10us

djnz time_servo1,jeda1X

clr servo1

setb servo2

jeda2X: inc pakai2

acall delay10us

djnz time_servo2,jeda2X

clr servo2

setb servo3

jeda3X: inc pakai3

acall delay10us

djnz time_servo3,jeda3X

clr servo3

setb servo4

(15)

acall delay10us djnz time_servo4,jeda4X

clr servo4

setb servo5

jeda5X: inc pakai5

acall delay10us

djnz time_servo5,jeda5X

clr servo5

setb servo6

jeda6X: inc pakai6

acall delay10us djnz time_servo6,jeda6X clr servo6 clr c mov a,turun1 subb a,pakai1 mov turun1,a clr c mov a,turun2 subb a,pakai2 mov turun2,a clr c mov a,turun3 subb a,pakai3 mov turun3,a clr c mov a,turun4 subb a,pakai4 mov turun4,a clr c mov a,turun5 subb a,pakai5 mov turun5,a clr c mov a,turun6 subb a,pakai6 mov turun6,a wait_turun1X:

(16)

acall delay10us djnz turun1,wait_turun1X wait_turun2X: acall delay10us djnz turun2,wait_turun2X wait_turun3X: acall delay10us djnz turun3,wait_turun3X wait_turun4X: acall delay10us djnz turun4,wait_turun4X wait_turun5X: acall delay10us djnz turun5,wait_turun5X wait_turun6X: acall delay10us djnz turun6,wait_turun6X wait_turun7X: acall delay10us djnz turun7,wait_turun7X wait_turun8X: acall delay10us djnz turun8,wait_turun8X wait_turun9X: acall delay10us djnz turun9,wait_turun9X wait_turun10X: acall delay10us djnz turun10,wait_turun10X ajmp sw_prog1 ;---

;Program cek servo tanpa menggunakan Komputer ;---

cek_datax:

mov a,@r0

cek_servo1x:

(17)

lcall cek_arahx mov time_servo1,time_servo ret cek_servo2x: cjne a,#2,cek_servo3x lcall cek_arahx mov time_servo2,time_servo ret cek_servo3x: cjne a,#3,cek_servo4x lcall cek_arahx mov time_servo3,time_servo ret cek_servo4x: cjne a,#4,cek_servo5x lcall cek_arahx mov time_servo4,time_servo ret cek_servo5x: cjne a,#5,cek_servo6x lcall cek_arahx mov time_servo5,time_servo ret cek_servo6x: cjne a,#6,bukan_servox lcall cek_arahx mov time_servo6,time_servo ret bukan_servox: ret ;---

;Proses cek arah putaran servo sesuai tombol ;--- cek_arahx: mov a,@r1 arah0x:cjne a,#0,arah1x mov time_servo,#175 ret

(18)

arah1x:cjne a,#1,arah2x mov time_servo,#165 ret arah2x:cjne a,#2,arah3x mov time_servo,#155 ret arah3x:cjne a,#3,arah4x mov time_servo,#145 ret arah4x:cjne a,#4,arah5x mov time_servo,#135 ret arah5x:cjne a,#5,arah6x mov time_servo,#125 ret arah6x:cjne a,#6,arah7x mov time_servo,#115 ret arah7x:cjne a,#7,arah8x mov time_servo,#105 ret arah8x:cjne a,#8,arah9x mov time_servo,#95 ret arah9x:cjne a,#9,arahax mov time_servo,#85 ret

arahax: cjne a,#10,arahbx

mov time_servo,#75 ret

arahbx:cjne a,#11,arahcx

mov time_servo,#65 ret

arahcx: cjne a,#12,bukan_arahx mov time_servo,#55 ret

(19)

bukan_arahx: ret ;--- ;Subrutin Delay ;--- delay20ms: push 70h push 71h mov 70h,#20 loop20a: mov 71h,#200 loop20b:nop nop nop djnz 71h,loop20b djnz 70h,loop20a pop 71h pop 70h ret delay10us: nop nop nop nop nop nop ret delay: push 70h push 71h mov 70h,#200 loop1: mov 71h,#200 loop: nop nop nop djnz 71h,loop djnz 70h,loop1 pop 71h pop 70h ret end

(20)

LAMPIRAN LISTING PROGRAM VISUAL BASIC 1. Listing Program Module

Public Declare Function GetPrivateProfileString Lib "kernel32" Alias _ "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal _

lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, _

ByVal nSize As Long, ByVal lpFileName As String) As Long

Public Declare Function WritePrivateProfileString Lib "kernel32" Alias _ "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal _ lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

Public nSa1 As String Public nSa2 As String Public nSa3 As String Public nSa4 As String Public nSa5 As String Public nSa6 As String Public nSb1 As String Public nSb2 As String Public nSb3 As String Public nSb4 As String Public nSb5 As String Public nSb6 As String

Public INIFileName As String Public pathload As String Public Sub getisistr() Dim iSa1 As String * 20 Dim iSa2 As String * 20 Dim iSa3 As String * 20 Dim iSa4 As String * 20 Dim iSa5 As String * 20 Dim iSa6 As String * 20 Dim iSb1 As String * 20 Dim iSb2 As String * 20 Dim iSb3 As String * 20 Dim iSb4 As String * 20 Dim iSb5 As String * 20 Dim iSb6 As String * 20

(21)

'INIFileName = App.Path & "\Template.txt"

'--- Result1 = GetPrivateProfileString("ATAS", "Servo1", "", iSa1, Len(iSa1), INIFileName)

Result2 = GetPrivateProfileString("ATAS", "Servo2", "", iSa2, Len(iSa2), INIFileName)

Result3 = GetPrivateProfileString("ATAS", "Servo3", "", iSa3, Len(iSa3), INIFileName)

Result4 = GetPrivateProfileString("ATAS", "Servo4", "", iSa4, Len(iSa4), INIFileName)

Result5 = GetPrivateProfileString("ATAS", "Servo5", "", iSa5, Len(iSa5), INIFileName)

Result6 = GetPrivateProfileString("ATAS", "Servo6", "", iSa6, Len(iSa6), INIFileName)

Result7 = GetPrivateProfileString("BAWAH", "Servo1", "", iSb1, Len(iSb1), INIFileName)

Result8 = GetPrivateProfileString("BAWAH", "Servo2", "", iSb2, Len(iSb2), INIFileName)

Result9 = GetPrivateProfileString("BAWAH", "Servo3", "", iSb3, Len(iSb3), INIFileName)

Result10 = GetPrivateProfileString("BAWAH", "Servo4", "", iSb4, Len(iSb4), INIFileName)

Result11 = GetPrivateProfileString("BAWAH", "Servo5", "", iSb5, Len(iSb5), INIFileName)

Result12 = GetPrivateProfileString("BAWAH", "Servo6", "", iSb6, Len(iSb6), INIFileName) '--- nSa1 = LCase(tanpaspace(iSa1)) nSa2 = LCase(tanpaspace(iSa2)) nSa3 = LCase(tanpaspace(iSa3)) nSa4 = LCase(tanpaspace(iSa4)) nSa5 = LCase(tanpaspace(iSa5)) nSa6 = LCase(tanpaspace(iSa6)) nSb1 = LCase(tanpaspace(iSb1)) nSb2 = LCase(tanpaspace(iSb2)) nSb3 = LCase(tanpaspace(iSb3)) nSb4 = LCase(tanpaspace(iSb4)) nSb5 = LCase(tanpaspace(iSb5)) nSb6 = LCase(tanpaspace(iSb6)) End Sub

(22)

Public Function tanpaspace(ByVal strString As String) As String

Dim i As Integer, nInstr As Integer

Const strVar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_ ,./<>*-" Const strEnc = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_ ,./<>*-" 'PZMQLXKATSFCWUNEMRYHDOBVIJ2098716345' 'PQLAMZXNSKOWIEJDBCVHFURYTG6574839201' If Trim(strString) = "" Then tanpaspace = "" Exit Function End If strString = UCase(strString) tanpaspace = "" For i = 1 To Len(strString)

nInstr = InStr(1, strEnc, Mid(strString, i, 1), vbTextCompare) If nInstr = 0 Then

tanpaspace = tanpaspace + "" Else

tanpaspace = tanpaspace + Mid(strVar, nInstr, 1) End If

Next

End Function

2. Listing Porgram Form 1 Dim urut As Integer

Dim abisload As Boolean Dim jumlahfile As Integer Dim hitfile As Integer

Private Sub Command1_Click()

MSComm1.CommPort = Combo1.Text MSComm1.PortOpen = True urut = 1 Timer1.Enabled = True Command1.Enabled = False Combo1.Enabled = False

(23)

End Sub

Private Sub Command108_Click(Index As Integer) Label8(6).Caption = Command108(Index).Caption If Index = 0 Then

Label14(6).Caption = "6,0" ElseIf Index = 1 Then

Label14(6).Caption = "6,1" ElseIf Index = 2 Then

Label14(6).Caption = "6,2" ElseIf Index = 3 Then

Label14(6).Caption = "6,3" ElseIf Index = 4 Then

Label14(6).Caption = "6,4" ElseIf Index = 5 Then

Label14(6).Caption = "6,5" ElseIf Index = 6 Then

Label14(6).Caption = "6,6" ElseIf Index = 7 Then

Label14(6).Caption = "6,7" ElseIf Index = 8 Then

Label14(6).Caption = "6,8" ElseIf Index = 9 Then

Label14(6).Caption = "6,9" ElseIf Index = 10 Then Label14(6).Caption = "6,a" ElseIf Index = 11 Then Label14(6).Caption = "6,b" ElseIf Index = 12 Then Label14(6).Caption = "6,c" End If

End Sub

Private Sub Command18_Click(Index As Integer) Label8(1).Caption = Command18(Index).Caption 'Label14(1).Caption

If Index = 0 Then

Label14(1).Caption = "1,0" ElseIf Index = 1 Then

Label14(1).Caption = "1,1" ElseIf Index = 2 Then

(24)

ElseIf Index = 3 Then

Label14(1).Caption = "1,3" ElseIf Index = 4 Then

Label14(1).Caption = "1,4" ElseIf Index = 5 Then

Label14(1).Caption = "1,5" ElseIf Index = 6 Then

Label14(1).Caption = "1,6" ElseIf Index = 7 Then

Label14(1).Caption = "1,7" ElseIf Index = 8 Then

Label14(1).Caption = "1,8" ElseIf Index = 9 Then

Label14(1).Caption = "1,9" ElseIf Index = 10 Then Label14(1).Caption = "1,a" ElseIf Index = 11 Then Label14(1).Caption = "1,b" ElseIf Index = 12 Then Label14(1).Caption = "1,c" End If

End Sub

Private Sub Command2_Click() Dim filetujuan As String

CommonDialog1.Filter = "Text Files (*.txt)|*.txt" CommonDialog1.InitDir = "C:\"

CommonDialog1.ShowSave

If Trim(CommonDialog1.FileName) = "" Then Exit Sub 'Label9.Caption = Trim(CommonDialog1.FileName) INIFileName = App.Path & "\Template.txt"

filetujuan = Trim(CommonDialog1.FileName)

Result1 = WritePrivateProfileString("ATAS", "Servo1", Label8(1).Caption, INIFileName)

Result2 = WritePrivateProfileString("ATAS", "Servo2", Label8(2).Caption, INIFileName)

Result3 = WritePrivateProfileString("ATAS", "Servo3", Label8(3).Caption, INIFileName)

Result4 = WritePrivateProfileString("ATAS", "Servo4", Label8(4).Caption, INIFileName)

(25)

Result5 = WritePrivateProfileString("ATAS", "Servo5", Label8(5).Caption, INIFileName)

Result6 = WritePrivateProfileString("ATAS", "Servo6", Label8(6).Caption, INIFileName)

Result7 = WritePrivateProfileString("BAWAH", "Servo1", Label14(1).Caption, INIFileName)

Result8 = WritePrivateProfileString("BAWAH", "Servo2", Label14(2).Caption, INIFileName)

Result9 = WritePrivateProfileString("BAWAH", "Servo3", Label14(3).Caption, INIFileName)

Result10 = WritePrivateProfileString("BAWAH", "Servo4", Label14(4).Caption, INIFileName)

Result11 = WritePrivateProfileString("BAWAH", "Servo5", Label14(5).Caption, INIFileName)

Result12 = WritePrivateProfileString("BAWAH", "Servo6", Label14(6).Caption, INIFileName)

FileCopy INIFileName, filetujuan End Sub

Private Sub Command3_Click()

CommonDialog1.Filter = "Text Files (*.txt)|*.txt" CommonDialog1.InitDir = "C:\"

CommonDialog1.ShowOpen

If Trim(CommonDialog1.FileName) = "" Then Exit Sub Label10.Caption = Trim(CommonDialog1.FileName) INIFileName = Trim(CommonDialog1.FileName) getisistr abisload = True Label8(7).Caption = nSa1 Label8(8).Caption = nSa2 Label8(9).Caption = nSa3 Label8(10).Caption = nSa4 Label8(11).Caption = nSa5 Label8(12).Caption = nSa6 End Sub

(26)

Private Sub Command36_Click(Index As Integer) Label8(2).Caption = Command36(Index).Caption If Index = 0 Then

Label14(2).Caption = "2,0" ElseIf Index = 1 Then

Label14(2).Caption = "2,1" ElseIf Index = 2 Then

Label14(2).Caption = "2,2" ElseIf Index = 3 Then

Label14(2).Caption = "2,3" ElseIf Index = 4 Then

Label14(2).Caption = "2,4" ElseIf Index = 5 Then

Label14(2).Caption = "2,5" ElseIf Index = 6 Then

Label14(2).Caption = "2,7" ElseIf Index = 7 Then

Label14(2).Caption = "2,8" ElseIf Index = 8 Then

Label14(2).Caption = "2,8" ElseIf Index = 9 Then

Label14(2).Caption = "2,9" ElseIf Index = 10 Then Label14(2).Caption = "2,a" ElseIf Index = 11 Then Label14(2).Caption = "2,b" ElseIf Index = 12 Then Label14(2).Caption = "2,c" End If

End Sub

Private Sub Command4_Click() abisload = True

If abisload = True Then ' urut = 1 ' Timer2.Enabled = True Label8(1).Caption = nSa1 Label8(2).Caption = nSa2 Label8(3).Caption = nSa3 Label8(4).Caption = nSa4

(27)

Label8(5).Caption = nSa5 Label8(6).Caption = nSa6 Label14(1).Caption = nSb1 Label14(2).Caption = nSb2 Label14(3).Caption = nSb3 Label14(4).Caption = nSb4 Label14(5).Caption = nSb5 Label14(6).Caption = nSb6 DoEvents Label10.Caption = "" Label8(7).Caption = "" Label8(8).Caption = "" Label8(9).Caption = "" Label8(10).Caption = "" Label8(11).Caption = "" Label8(12).Caption = "" abisload = False End If End Sub

Private Sub Command5_Click() Form2.Show 1

End Sub

Private Sub Command54_Click(Index As Integer) Label8(3).Caption = Command54(Index).Caption If Index = 0 Then

Label14(3).Caption = "3,0" ElseIf Index = 1 Then

Label14(3).Caption = "3,1" ElseIf Index = 2 Then

Label14(3).Caption = "3,2" ElseIf Index = 3 Then

Label14(3).Caption = "3,3" ElseIf Index = 4 Then

Label14(3).Caption = "3,4" ElseIf Index = 5 Then

(28)

ElseIf Index = 6 Then

Label14(3).Caption = "3,6" ElseIf Index = 7 Then

Label14(3).Caption = "3,7" ElseIf Index = 8 Then

Label14(3).Caption = "3,8" ElseIf Index = 9 Then

Label14(3).Caption = "3,9" ElseIf Index = 10 Then Label14(3).Caption = "3,a" ElseIf Index = 11 Then Label14(3).Caption = "3,b" ElseIf Index = 12 Then Label14(3).Caption = "3,c" End If

End Sub

Private Sub Command6_Click() jumlahfile = List1.ListCount hitfile = 1

INIFileName = pathload & List1.List(0) getisistr Label8(7).Caption = nSa1 Label8(8).Caption = nSa2 Label8(9).Caption = nSa3 Label8(10).Caption = nSa4 Label8(11).Caption = nSa5 Label8(12).Caption = nSa6 Label8(1).Caption = nSa1 Label8(2).Caption = nSa2 Label8(3).Caption = nSa3 Label8(4).Caption = nSa4 Label8(5).Caption = nSa5 Label8(6).Caption = nSa6 Label14(1).Caption = nSb1 Label14(2).Caption = nSb2 Label14(3).Caption = nSb3 Label14(4).Caption = nSb4 Label14(5).Caption = nSb5 Label14(6).Caption = nSb6

(29)

Label8(7).Caption = "" Label8(8).Caption = "" Label8(9).Caption = "" Label8(10).Caption = "" Label8(11).Caption = "" Label8(12).Caption = "" DoEvents Timer3.Enabled = True End Sub

Private Sub Timer3_Timer() If hitfile <= (jumlahfile - 1) Then

INIFileName = pathload & List1.List(hitfile) getisistr Label8(7).Caption = nSa1 Label8(8).Caption = nSa2 Label8(9).Caption = nSa3 Label8(10).Caption = nSa4 Label8(11).Caption = nSa5 Label8(12).Caption = nSa6 Label8(1).Caption = nSa1 Label8(2).Caption = nSa2 Label8(3).Caption = nSa3 Label8(4).Caption = nSa4 Label8(5).Caption = nSa5 Label8(6).Caption = nSa6 Label14(1).Caption = nSb1 Label14(2).Caption = nSb2 Label14(3).Caption = nSb3 Label14(4).Caption = nSb4 Label14(5).Caption = nSb5 Label14(6).Caption = nSb6 Label8(7).Caption = "" Label8(8).Caption = "" Label8(9).Caption = "" Label8(10).Caption = "" Label8(11).Caption = "" Label8(12).Caption = ""

(30)

DoEvents

hitfile = hitfile + 1

ElseIf hitfile > (jumlahfile - 1) Then List1.Clear

Timer3.Enabled = False

End If End Sub

Private Sub Command72_Click(Index As Integer) Label8(4).Caption = Command72(Index).Caption If Index = 0 Then

Label14(4).Caption = "4,c" ElseIf Index = 1 Then

Label14(4).Caption = "4,b" ElseIf Index = 2 Then

Label14(4).Caption = "4,a" ElseIf Index = 3 Then

Label14(4).Caption = "4,9" ElseIf Index = 4 Then

Label14(4).Caption = "4,8" ElseIf Index = 5 Then

Label14(4).Caption = "4,8" ElseIf Index = 6 Then

Label14(4).Caption = "4,7" ElseIf Index = 7 Then

Label14(4).Caption = "4,5" ElseIf Index = 8 Then

Label14(4).Caption = "4,4" ElseIf Index = 9 Then

Label14(4).Caption = "4,3" ElseIf Index = 10 Then Label14(4).Caption = "4,2" ElseIf Index = 11 Then Label14(4).Caption = "4,1" ElseIf Index = 12 Then Label14(4).Caption = "4,0" End If

End Sub

(31)

Label8(5).Caption = Command90(Index).Caption If Index = 0 Then

Label14(5).Caption = "5,0" ElseIf Index = 1 Then

Label14(5).Caption = "5,1" ElseIf Index = 2 Then

Label14(5).Caption = "5,2" ElseIf Index = 3 Then

Label14(5).Caption = "5,3" ElseIf Index = 4 Then

Label14(5).Caption = "5,4" ElseIf Index = 5 Then

Label14(5).Caption = "5,5" ElseIf Index = 6 Then

Label14(5).Caption = "5,6" ElseIf Index = 7 Then

Label14(5).Caption = "5,7" ElseIf Index = 8 Then

Label14(5).Caption = "5,8" ElseIf Index = 9 Then

Label14(5).Caption = "5,9" ElseIf Index = 10 Then Label14(5).Caption = "5,a" ElseIf Index = 11 Then Label14(5).Caption = "5,b" ElseIf Index = 12 Then Label14(5).Caption = "5,c" End If

End Sub

Private Sub Form_Load() For i = 1 To 6

Label8(i).Caption = 0

Label14(i).Caption = CStr(i) & ",7" Next i

Combo1.ListIndex = 0 End Sub

Private Sub Timer1_Timer() 'If urut = 1 Then

MSComm1.Output = Label14(1).Caption ' urut = urut + 1

(32)

'ElseIf urut = 2 Then

MSComm1.Output = Label14(2).Caption ' urut = urut + 1

'ElseIf urut = 3 Then

MSComm1.Output = Label14(3).Caption ' urut = urut + 1

'ElseIf urut = 4 Then

MSComm1.Output = Label14(4).Caption ' urut = urut + 1

'ElseIf urut = 5 Then

MSComm1.Output = Label14(5).Caption ' urut = urut + 1

'ElseIf urut = 6 Then

MSComm1.Output = Label14(6).Caption ' urut = 1

'End If End Sub

Private Sub Timer2_Timer() If urut = 1 Then

Label8(1).Caption = LCase(nSa1) Label14(1).Caption = LCase(nSb1) Label8(7).Caption = ""

urut = urut + 1 ElseIf urut = 2 Then

Label8(2).Caption = LCase(nSa2) Label14(2).Caption = LCase(nSb2) Label8(8).Caption = ""

urut = urut + 1 ElseIf urut = 3 Then

Label8(3).Caption = LCase(nSa3) Label14(3).Caption = LCase(nSb3) Label8(9).Caption = ""

urut = urut + 1 ElseIf urut = 4 Then

Label8(4).Caption = LCase(nSa4) Label14(4).Caption = LCase(nSb4) Label8(10).Caption = ""

urut = urut + 1 ElseIf urut = 5 Then

Label8(5).Caption = LCase(nSa5) Label14(5).Caption = LCase(nSb5) Label8(11).Caption = ""

urut = urut + 1 ElseIf urut = 6 Then

(33)

Label8(6).Caption = LCase(nSa6) Label14(6).Caption = LCase(nSb6) Label8(12).Caption = "" urut = 1 Timer2.Enabled = False End If DoEvents End Sub

3. Listing Porgram Form 2 Private Sub Command1_Click() Form1.List1.Clear If File1.ListCount > 0 Then For i = 0 To File1.ListCount - 1 'File1.ListIndex = i Form1.List1.AddItem File1.List(i) Next i End If pathload = Dir1.Path If Right(pathload, 1) <> "\" Then pathload = pathload & "\" End If

'Form1.Command6.Value = True Unload Me

End Sub

Private Sub Dir1_Change() File1.Path = Dir1.Path pathload = Dir1.Path

If Right(pathload, 1) <> "\" Then pathload = pathload & "\" End If

Label1.Caption = pathload End Sub

Private Sub Drive1_Change()

(34)

End Sub

Private Sub Form_Load() Drive1.Drive = "C"

Dir1.Path = Left(Drive1.Drive, 2) & "\" File1.FileName = "*.txt" File1.Path = Dir1.Path If File1.ListCount > 0 Then For i = 0 To File1.ListCount - 1 'File1.ListIndex = i List1.AddItem File1.List(i) Next i End If End Sub

(35)

LAMPIRAN PROGRAM CODE MATLAB Lampiran Listing Program

Menu1.m function varargout = Menu1(varargin)

% MENU1 Application M-file for Menu1.fig % FIG = MENU1 launch Menu1 GUI.

% MENU1('callback_name', ...) invoke the named callback.

% Last Modified by GUIDE v2.0 08-Oct-2002 07:22:37 % Latest Modified by FA2 v3.0 20-Nov-2008

if nargin == 0 % LAUNCH GUI

fig = openfig(mfilename,'reuse');

% Generate a structure of handles to pass to callbacks, and store it. handles = guihandles(fig); guidata(fig, handles); if nargout > 0 varargout{1} = fig; end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

try

if (nargout)

[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard else

feval(varargin{:}); % FEVAL switchyard end catch disp(lasterr); end end

%Function untuk tombol masuk ke menu Direct Kinematics

function varargout = Pilih_Direct_Callback(h, eventdata, handles, varargin) Menu21 %buka window menu input direct Kinematics

delete(handles.Menu1) % hapus menu pilihan simulasi (direct atau inverse)

%Function untuk tombol masuk ke menu Inverse Kinematics

function varargout = Pilih_Inverse_Callback(h, eventdata, handles, varargin) Menu31 % buka window menu input inverse Kinematics

(36)

Petunjuk % buka window menu petunjuk didepan window input inverse Kinematics delete(handles.Menu1) % hapus menu pilihan simulasi (direct atau inverse)

Menu21.m function varargout = Menu21(varargin)

% MENU1 Application M-file for Menu21.fig % FIG = MENU1 launch Menu21 GUI.

% MENU1('callback_name', ...) invoke the named callback.

% Last Modified by GUIDE v2.5 30-Nov-2008 18:14:31 % Latest Modified by FA2 v3.0 20-Nov-2008

if nargin == 0 % LAUNCH GUI

fig = openfig(mfilename,'reuse');

% Generate a structure of handles to pass to callbacks, and store it. handles = guihandles(fig); guidata(fig, handles); if nargout > 0 varargout{1} = fig; end

elseif ischar(varargin{1}) % INVOKE NAMED SUBFUNCTION OR CALLBACK

try

if (nargout)

[varargout{1:nargout}] = feval(varargin{:}); % FEVAL switchyard else

feval(varargin{:}); % FEVAL switchyard end catch disp(lasterr); end end

%function untuk memilih salah satu arah pada setiap joint function mutual_exclude(off)

set(off,'value',0)

% jika pilih radio button arah positif untuk joint 1

function varargout = Positif_J1_Callback(h, eventdata, handles, varargin) off = [handles.Negatif_J1];

mutual_exclude(off)

(37)

% jika pilih radio button arah negatif untuk joint 1

function varargout = Negatif_J1_Callback(h, eventdata, handles, varargin) off = [handles.Positif_J1];

mutual_exclude(off)

% jika pilih radio button arah positif untuk joint 2

function varargout = Positif_J2_Callback(h, eventdata, handles, varargin) off = [handles.Negatif_J2];

mutual_exclude(off)

% jika pilih radio button arah negatif untuk joint 2

function varargout = Negatif_J2_Callback(h, eventdata, handles, varargin) off = [handles.Positif_J2];

mutual_exclude(off)

% jika pilih radio button arah positif untuk joint 3

function varargout = Positif_J3_Callback(h, eventdata, handles, varargin) off = [handles.Negatif_J3];

mutual_exclude(off)

% jika pilih radio button arah negatif untuk joint 3

function varargout = Negatif_J3_Callback(h, eventdata, handles, varargin) off = [handles.Positif_J3];

mutual_exclude(off)

% jika pilih radio button arah positif untuk joint 4

function varargout = Positif_J4_Callback(h, eventdata, handles, varargin) off = [handles.Negatif_J4];

mutual_exclude(off)

% jika pilih radio button arah negatif untuk joint 4

function varargout = Negatif_J4_Callback(h, eventdata, handles, varargin) off = [handles.Positif_J4];

mutual_exclude(off)

% jika pilih radio button arah positif untuk joint 5

function varargout = Positif_J5_Callback(h, eventdata, handles, varargin) off = [handles.Negatif_J5];

mutual_exclude(off)

% jika pilih radio button arah negatif untuk joint 5

function varargout = Negatif_J5_Callback(h, eventdata, handles, varargin) off = [handles.Positif_J5];

mutual_exclude(off)

% function untuk mem-validasi dan memasukkan sudut dari joint 1 function varargout = Input_J1_Callback(h, eventdata, handles, varargin)

(38)

global user_entry_J1

user_entry_J1 = str2double(get(h,'string')); if isnan(user_entry_J1)

errordlg('Masukkan Angka!','Harus Angka','modal') set(h,'string','');

else

if (user_entry_J1 > 90) | (user_entry_J1 < 0)

errordlg('Input Joint 1 tidak boleh lebih dari 90 derajat atau Kurang dari 0 derajat','Batas derajat','modal')

set(h,'string',''); else

if (get(handles.Negatif_J1,'value') == get(handles.Positif_J1,'value')) errordlg('Tentukan dulu arahnya','Arah','modal');

set(h,'string',''); end;

end; end

% function untuk mem-validasi dan memasukkan sudut dari joint 2 function varargout = Input_J2_Callback(h, eventdata, handles, varargin) global user_entry_J2

user_entry_J2 = str2double(get(h,'string')); if isnan(user_entry_J2)

errordlg('Masukkan Angka!','Harus Angka','modal') set(h,'string','');

else

if (user_entry_J2 > 90) | (user_entry_J2 < 0)

errordlg('Input Joint 2 tidak boleh lebih dari 90 derajat atau Kurang dari 0 derajat','Batas derajat','modal')

set(h,'string',''); else

if (get(handles.Negatif_J2,'value') == get(handles.Positif_J2,'value')) errordlg('Tentukan dulu arahnya','Arah','modal');

set(h,'string',''); end;

end; end

% function untuk mem-validasi dan memasukkan sudut dari joint 3 function varargout = Input_J3_Callback(h, eventdata, handles, varargin) global user_entry_J3

user_entry_J3 = str2double(get(h,'string')); if isnan(user_entry_J3)

errordlg('Masukkan Angka!','Harus Angka','modal') set(h,'string','');

else

(39)

errordlg('Input Joint 3 tidak boleh lebih dari 90 derajat atau Kurang dari 0 derajat','Batas derajat','modal')

set(h,'string',''); else

if (get(handles.Negatif_J3,'value') == get(handles.Positif_J3,'value')) errordlg('Tentukan dulu arahnya','Arah','modal');

set(h,'string',''); end;

end; end

% function untuk mem-validasi dan memasukkan sudut dari joint 4 function varargout = Input_J4_Callback(h, eventdata, handles, varargin) global user_entry_J4

user_entry_J4 = str2double(get(h,'string')); if isnan(user_entry_J4)

errordlg('Masukkan Angka!','Harus Angka','modal') set(h,'string','');

else

if (user_entry_J4 > 90) | (user_entry_J4 < 0)

errordlg('Input Joint 4 tidak boleh lebih dari 90 derajat atau Kurang dari 0 derajat','Batas derajat','modal')

set(h,'string',''); else

if (get(handles.Negatif_J4,'value') == get(handles.Positif_J4,'value')) errordlg('Tentukan dulu arahnya','Arah','modal');

set(h,'string',''); end;

end; end

% function untuk mem-validasi dan memasukkan sudut dari joint 5 function varargout = Input_J5_Callback(h, eventdata, handles, varargin) global user_entry_J5

user_entry_J5 = str2double(get(h,'string')); if isnan(user_entry_J5)

errordlg('Masukkan Angka!','Harus Angka','modal') set(h,'string','');

else

if (user_entry_J5 > 0) | (user_entry_J5 < 0)

errordlg('Input Joint 5 tidak boleh lebih atau kurang dari 0 derajat','Batas derajat','modal')

set(h,'string',''); else

if (get(handles.Negatif_J5,'value') == get(handles.Positif_J5,'value')) errordlg('Tentukan dulu arahnya','Arah','modal');

(40)

end; end; end

% Function bagi tombol reset yang akan menghapus semua input baik arah maupun sudut-sudut joint

function varargout = Reset_Callback(h, eventdata, handles, varargin) set(handles.Negatif_J1,'value',0); set(handles.Positif_J1,'value',0); set(handles.Negatif_J2,'value',0); set(handles.Positif_J2,'value',0); set(handles.Negatif_J3,'value',0); set(handles.Positif_J3,'value',0); set(handles.Negatif_J4,'value',0); set(handles.Positif_J4,'value',0); set(handles.Negatif_J5,'value',0); set(handles.Positif_J5,'value',0); set(handles.Input_J1,'string',''); set(handles.Input_J2,'string',''); set(handles.Input_J3,'string',''); set(handles.Input_J4,'string',''); set(handles.Input_J5,'string','');

% Funtion untuk mengambil input, memproses melalui perhitungan direct Kinematics, lalu hasilnya ditampilkan

function varargout = Kalkulasi_Direct_Callback(h, eventdata, handles, varargin) global user_entry_J1 user_entry_J2 user_entry_J3 user_entry_J4 user_entry_J5 Theta1 Theta2 Theta3 Theta4 Theta5

if isempty(get(handles.Input_J1,'string')) | isempty(get(handles.Input_J2,'string')) | isempty(get(handles.Input_J3,'string')) | isempty(get(handles.Input_J4,'string')) | isempty(get(handles.Input_J5,'string')),

errordlg('Masih ada input yang kurang nih!','Kurang lengkap','modal') else

%Mengambil input untuk Theta1, Theta2, Theta3, Theta4 dan Theta5 if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'min'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'min'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'min'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'min'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'min')) Theta1 = str2double(get(handles.Input_J1,'string'))*-1;

Theta2 = str2double(get(handles.Input_J2,'string'))*-1; Theta3 = str2double(get(handles.Input_J3,'string'))*-1; Theta4 = str2double(get(handles.Input_J4,'string'))*-1; Theta5 = str2double(get(handles.Input_J5,'string'))*-1;

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

(41)

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'max'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'max'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'max'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'max'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'max')) Theta1 = str2double(get(handles.Input_J1,'string'));

Theta2 = str2double(get(handles.Input_J2,'string')); Theta3 = str2double(get(handles.Input_J3,'string')); Theta4 = str2double(get(handles.Input_J4,'string')); Theta5 = str2double(get(handles.Input_J5,'string'));

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'min'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'max'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'max'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'max'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'max')) Theta1 = str2double(get(handles.Input_J1,'string'))*-1;

Theta2 = str2double(get(handles.Input_J2,'string')); Theta3 = str2double(get(handles.Input_J3,'string')); Theta4 = str2double(get(handles.Input_J4,'string')); Theta5 = str2double(get(handles.Input_J5,'string'));

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'max'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'min'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'max'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'max'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'max')) Theta1 = str2double(get(handles.Input_J1,'string'));

Theta2 = str2double(get(handles.Input_J2,'string'))*-1; Theta3 = str2double(get(handles.Input_J3,'string')); Theta4 = str2double(get(handles.Input_J4,'string')); Theta5 = str2double(get(handles.Input_J5,'string'));

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'max'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'max'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'min'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'max'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'max')) Theta1 = str2double(get(handles.Input_J1,'string'));

Theta2 = str2double(get(handles.Input_J2,'string')); Theta3 = str2double(get(handles.Input_J3,'string'))*-1;

(42)

Theta4 = str2double(get(handles.Input_J4,'string')); Theta5 = str2double(get(handles.Input_J5,'string'));

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'max'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'max'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'max'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'min'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'max')) Theta1 = str2double(get(handles.Input_J1,'string'));

Theta2 = str2double(get(handles.Input_J2,'string')); Theta3 = str2double(get(handles.Input_J3,'string')); Theta4 = str2double(get(handles.Input_J4,'string'))*-1; Theta5 = str2double(get(handles.Input_J5,'string'));

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'max'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'max'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'max'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'max'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'min')) Theta1 = str2double(get(handles.Input_J1,'string'));

Theta2 = str2double(get(handles.Input_J2,'string')); Theta3 = str2double(get(handles.Input_J3,'string')); Theta4 = str2double(get(handles.Input_J4,'string')); Theta5 = str2double(get(handles.Input_J5,'string'))*-1;

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'min'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'min'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'max'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'max'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'max')) Theta1 = str2double(get(handles.Input_J1,'string'))*-1;

Theta2 = str2double(get(handles.Input_J2,'string'))*-1; Theta3 = str2double(get(handles.Input_J3,'string')); Theta4 = str2double(get(handles.Input_J4,'string')); Theta5 = str2double(get(handles.Input_J5,'string'));

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'min'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'max'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'min'))...

(43)

& (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'max'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'max')) Theta1 = str2double(get(handles.Input_J1,'string'))*-1;

Theta2 = str2double(get(handles.Input_J2,'string')); Theta3 = str2double(get(handles.Input_J3,'string'))*-1; Theta4 = str2double(get(handles.Input_J4,'string')); Theta5 = str2double(get(handles.Input_J5,'string'));

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'min'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'max'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'max'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'min'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'max')) Theta1 = str2double(get(handles.Input_J1,'string'))*-1;

Theta2 = str2double(get(handles.Input_J2,'string')); Theta3 = str2double(get(handles.Input_J3,'string')); Theta4 = str2double(get(handles.Input_J4,'string'))*-1; Theta5 = str2double(get(handles.Input_J5,'string'));

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'min'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'max'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'max'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'max'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'min')) Theta1 = str2double(get(handles.Input_J1,'string'))*-1;

Theta2 = str2double(get(handles.Input_J2,'string')); Theta3 = str2double(get(handles.Input_J3,'string')); Theta4 = str2double(get(handles.Input_J4,'string')); Theta5 = str2double(get(handles.Input_J5,'string'))*-1;

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'max'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'min'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'min'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'max'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'max')) Theta1 = str2double(get(handles.Input_J1,'string'));

Theta2 = str2double(get(handles.Input_J2,'string'))*-1; Theta3 = str2double(get(handles.Input_J3,'string'))*-1; Theta4 = str2double(get(handles.Input_J4,'string')); Theta5 = str2double(get(handles.Input_J5,'string'));

(44)

Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'max'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'min'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'max'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'min'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'max')) Theta1 = str2double(get(handles.Input_J1,'string'));

Theta2 = str2double(get(handles.Input_J2,'string'))*-1; Theta3 = str2double(get(handles.Input_J3,'string')); Theta4 = str2double(get(handles.Input_J4,'string'))*-1; Theta5 = str2double(get(handles.Input_J5,'string'));

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'max'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'min'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'max'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'max'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'min')) Theta1 = str2double(get(handles.Input_J1,'string'));

Theta2 = str2double(get(handles.Input_J2,'string'))*-1; Theta3 = str2double(get(handles.Input_J3,'string')); Theta4 = str2double(get(handles.Input_J4,'string')); Theta5 = str2double(get(handles.Input_J5,'string'))*-1;

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'max'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'max'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'min'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'min'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'max')) Theta1 = str2double(get(handles.Input_J1,'string'));

Theta2 = str2double(get(handles.Input_J2,'string')); Theta3 = str2double(get(handles.Input_J3,'string'))*-1; Theta4 = str2double(get(handles.Input_J4,'string'))*-1; Theta5 = str2double(get(handles.Input_J5,'string'));

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'max'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'max'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'min'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'max'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'min')) Theta1 = str2double(get(handles.Input_J1,'string'));

(45)

Theta2 = str2double(get(handles.Input_J2,'string')); Theta3 = str2double(get(handles.Input_J3,'string'))*-1; Theta4 = str2double(get(handles.Input_J4,'string')); Theta5 = str2double(get(handles.Input_J5,'string'))*-1;

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'max'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'max'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'max'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'min'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'min')) Theta1 = str2double(get(handles.Input_J1,'string'));

Theta2 = str2double(get(handles.Input_J2,'string')); Theta3 = str2double(get(handles.Input_J3,'string')); Theta4 = str2double(get(handles.Input_J4,'string'))*-1; Theta5 = str2double(get(handles.Input_J5,'string'))*-1;

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'min'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'min'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'min'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'max'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'max')) Theta1 = str2double(get(handles.Input_J1,'string'))*-1;

Theta2 = str2double(get(handles.Input_J2,'string'))*-1; Theta3 = str2double(get(handles.Input_J3,'string'))*-1; Theta4 = str2double(get(handles.Input_J4,'string')); Theta5 = str2double(get(handles.Input_J5,'string'));

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'min'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'min'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'max'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'min'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'max')) Theta1 = str2double(get(handles.Input_J1,'string'))*-1;

Theta2 = str2double(get(handles.Input_J2,'string'))*-1; Theta3 = str2double(get(handles.Input_J3,'string')); Theta4 = str2double(get(handles.Input_J4,'string'))*-1; Theta5 = str2double(get(handles.Input_J5,'string'));

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

(46)

& (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'min'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'max'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'max'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'min')) Theta1 = str2double(get(handles.Input_J1,'string'))*-1;

Theta2 = str2double(get(handles.Input_J2,'string'))*-1; Theta3 = str2double(get(handles.Input_J3,'string')); Theta4 = str2double(get(handles.Input_J4,'string')); Theta5 = str2double(get(handles.Input_J5,'string'))*-1;

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'min'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'max'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'min'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'max'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'min')) Theta1 = str2double(get(handles.Input_J1,'string'))*-1;

Theta2 = str2double(get(handles.Input_J2,'string')); Theta3 = str2double(get(handles.Input_J3,'string'))*-1; Theta4 = str2double(get(handles.Input_J4,'string')); Theta5 = str2double(get(handles.Input_J5,'string'))*-1;

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'min'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'max'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'max'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'min'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'min')) Theta1 = str2double(get(handles.Input_J1,'string'))*-1;

Theta2 = str2double(get(handles.Input_J2,'string')); Theta3 = str2double(get(handles.Input_J3,'string')); Theta4 = str2double(get(handles.Input_J4,'string'))*-1; Theta5 = str2double(get(handles.Input_J5,'string'))*-1;

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'max'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'min'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'max'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'min'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'min')) Theta1 = str2double(get(handles.Input_J1,'string'));

Theta2 = str2double(get(handles.Input_J2,'string'))*-1; Theta3 = str2double(get(handles.Input_J3,'string')); Theta4 = str2double(get(handles.Input_J4,'string'))*-1;

(47)

Theta5 = str2double(get(handles.Input_J5,'string'))*-1;

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'max'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'max'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'min'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'min'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'min')) Theta1 = str2double(get(handles.Input_J1,'string'));

Theta2 = str2double(get(handles.Input_J2,'string')); Theta3 = str2double(get(handles.Input_J3,'string'))*-1; Theta4 = str2double(get(handles.Input_J4,'string'))*-1; Theta5 = str2double(get(handles.Input_J5,'string'))*-1;

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'min'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'min'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'min'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'min'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'max')) Theta1 = str2double(get(handles.Input_J1,'string'))*-1;

Theta2 = str2double(get(handles.Input_J2,'string'))*-1; Theta3 = str2double(get(handles.Input_J3,'string'))*-1; Theta4 = str2double(get(handles.Input_J4,'string'))*-1; Theta5 = str2double(get(handles.Input_J5,'string'));

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'min'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'min'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'min'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'max'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'min')) Theta1 = str2double(get(handles.Input_J1,'string'))*-1;

Theta2 = str2double(get(handles.Input_J2,'string'))*-1; Theta3 = str2double(get(handles.Input_J3,'string'))*-1; Theta4 = str2double(get(handles.Input_J4,'string')); Theta5 = str2double(get(handles.Input_J5,'string'))*-1;

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'min'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'min'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'max'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'min'))...

(48)

& (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'min')) Theta1 = str2double(get(handles.Input_J1,'string'))*-1; Theta2 = str2double(get(handles.Input_J2,'string'))*-1; Theta3 = str2double(get(handles.Input_J3,'string')); Theta4 = str2double(get(handles.Input_J4,'string'))*-1; Theta5 = str2double(get(handles.Input_J5,'string'))*-1;

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'min'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'max'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'min'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'min'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'min')) Theta1 = str2double(get(handles.Input_J1,'string'))*-1;

Theta2 = str2double(get(handles.Input_J2,'string')); Theta3 = str2double(get(handles.Input_J3,'string'))*-1; Theta4 = str2double(get(handles.Input_J4,'string'))*-1; Theta5 = str2double(get(handles.Input_J5,'string'))*-1;

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics else

if (get(handles.Positif_J1,'value') == get(handles.Positif_J1,'max'))... & (get(handles.Positif_J2,'value') == get(handles.Positif_J2,'min'))... & (get(handles.Positif_J3,'value') == get(handles.Positif_J3,'min'))... & (get(handles.Positif_J4,'value') == get(handles.Positif_J4,'min'))... & (get(handles.Positif_J5,'value') == get(handles.Positif_J5,'min')) Theta1 = str2double(get(handles.Input_J1,'string'));

Theta2 = str2double(get(handles.Input_J2,'string'))*-1; Theta3 = str2double(get(handles.Input_J3,'string'))*-1; Theta4 = str2double(get(handles.Input_J4,'string'))*-1; Theta5 = str2double(get(handles.Input_J5,'string'))*-1;

HitDirect %Function untuk menghitung input direct Kinematics Menu22 %buka menu tampilan hasil perhitungan Direct Kinematics end; end; end; end; end; end; end; end; end; end; end; end; end;

(49)

end; end; end; end; end; end; end; end; end; end; end; end; end; end; end; end; end

% Kembali ke menu utama (1) dengan mereset Theta 1 sampai 5 jadi kosong lagi function varargout = Ke_Menu_Utama_Callback(h, eventdata, handles, varargin) Theta1 = [];

Theta2 = []; Theta3 = []; Theta4 = []; Theta5 = [];

Menu1 % buka window menu1

delete(handles.Menu21) % tutup window menu input direct Kinematics HitDirect.m

% HitDirect.m script file untuk menyelesaikan perhitungan Direct Kinematics robot RV-M1

% Deklarasi dari variabel-variabel global

global Theta1 Theta2 Theta3 Theta4 Theta5 t11 t21 t31 t12 t22 t32 t13 t23 t33 t14 t24 t34 t41 t42 t43 t44

% menentukan parameter-parameter berdasarkan konvensi Denavit Hartenberg Alpha1 = 0; Alpha2 = 90; Alpha3 = 0; Alpha4 = 90; Alpha5 = 180; a1 = 100; a2 = 90; a3 = 60; a4 = 60; a5 = 60; d1 = 120; d2 = 40;

(50)

d3 = 0; d4 = 0; d5 = 0; Theta1 = Theta1; Theta2 = Theta2; Theta3 = Theta3; Theta4 = Theta4; Theta5 = Theta5;

t14=[];t24=[];t34=[]; % t14 t24 dan t34 diset jadi matriks kosong

% Parameter dimasukkan ke dalam Matriks transformasi homogenous A01 = [cos(Theta1*pi/180) -cos(Alpha1*pi/180)*sin(Theta1*pi/180) sin(Alpha1*pi/180)*sin(Theta1*pi/180) a1*cos(Theta1*pi/180); ... sin(Theta1*pi/180) cos(Alpha1*pi/180)*cos(Theta1*pi/180) -sin(Alpha1*pi/180)*cos(Theta1*pi/180) a1*sin(Theta1*pi/180); ... 0 sin(Alpha1*pi/180) cos(Alpha1*pi/180) d1; ... 0 0 0 1;];

A12 = [cos(Theta2*pi/180) -cos(Alpha2*pi/180)*sin(Theta2*pi/180) sin(Alpha2*pi/180)*sin(Theta2*pi/180) a2*cos(Theta2*pi/180); ... sin(Theta2*pi/180) cos(Alpha2*pi/180)*cos(Theta2*pi/180) -sin(Alpha2*pi/180)*cos(Theta2*pi/180) a2*sin(Theta2*pi/180); ... 0 sin(Alpha2*pi/180) cos(Alpha2*pi/180) d2; ... 0 0 0 1;];

A23 = [cos(Theta3*pi/180) -cos(Alpha3*pi/180)*sin(Theta3*pi/180) sin(Alpha3*pi/180)*sin(Theta3*pi/180) a3*cos(Theta3*pi/180); ... sin(Theta3*pi/180) cos(Alpha3*pi/180)*cos(Theta3*pi/180) -sin(Alpha3*pi/180)*cos(Theta3*pi/180) a3*sin(Theta3*pi/180); ... 0 sin(Alpha3*pi/180) cos(Alpha3*pi/180) d3; ... 0 0 0 1;];

A34 = [cos(Theta4*pi/180) -cos(Alpha4*pi/180)*sin(Theta4*pi/180) sin(Alpha4*pi/180)*sin(Theta4*pi/180) a4*cos(Theta4*pi/180); ... sin(Theta4*pi/180) cos(Alpha4*pi/180)*cos(Theta4*pi/180) -sin(Alpha4*pi/180)*cos(Theta4*pi/180) a4*sin(Theta4*pi/180); ... 0 sin(Alpha4*pi/180) cos(Alpha4*pi/180) d4; ... 0 0 0 1;];

A45 = [cos(Theta5*pi/180) -cos(Alpha5*pi/180)*sin(Theta5*pi/180) sin(Alpha5*pi/180)*sin(Theta5*pi/180) a5*cos(Theta5*pi/180); ... sin(Theta5*pi/180) cos(Alpha5*pi/180)*cos(Theta5*pi/180) -sin(Alpha5*pi/180)*cos(Theta5*pi/180) a5*sin(Theta5*pi/180); ... 0 sin(Alpha5*pi/180) cos(Alpha5*pi/180) d5; ... 0 0 0 1;];

(51)

T05 = (A01*A12*A23*A34*A45); % perkalian matriks transformasi homogenous 4x4 untuk 5 joint

% komponen T05 disimpan pada variabel t(ij)

% Matriks rotasi 3x3 ditampilkan jika lebih besar atau sama dengan |0.001| --> (1e-3) % Jika lebih kecil dari |0.001| maka komponen matriks rotasi dianggap nol.

if abs(T05(1,1)) < 1e-3 t11 = 0; else t11 = (T05(1,1)); end if abs(T05(2,1)) < 1e-3 t21 = 0; else t21 = (T05(2,1)); end if abs(T05(3,1)) < 1e-3 t31 = 0; else t31 = (T05(3,1)); end if abs(T05(1,2)) < 1e-3 t12 = 0; else t12 = (T05(1,2)); end if abs(T05(2,2)) < 1e-3 t22 = 0; else t22 = (T05(2,2)); end if abs(T05(3,2)) < 1e-3 t32 = 0; else t32 = (T05(3,2)); end if abs(T05(1,3)) < 1e-3 t13 = 0; else t13 = (T05(1,3)); end

(52)

if abs(T05(2,3)) < 1e-3 t23 = 0; else t23 = (T05(2,3)); end if abs(T05(3,3)) < 1e-3 t33 = 0; else t33 = (T05(3,3)); end

% matriks posisi 3x1 dibulatkan kebawah 'fix' (bilangan dibelakang koma dihilangkan) t14 = fix(T05(1,4)); t24 = fix(T05(2,4)); t34 = fix(T05(3,4)); % matriks perspektif 1x3 t41 = (T05(4,1)); t42 = (T05(4,2)); t43 = (T05(4,3)); % matriks penskalaan 1x1 t44 = (T05(4,4)); MENU22.M function varargout = Menu22(varargin)

% MENU22 Application M-file for Menu22.fig % FIG = MENU22 launch Menu22 GUI.

% MENU22('callback_name', ...) invoke the named callback.

% Last Modified by GUIDE v2.0 27-Dec-2002 09:50:56 % Latest Modified by FA2 v3.0 20-Nov-2008

if nargin == 0 % LAUNCH GUI

fig = openfig(mfilename,'reuse');

% Generate a structure of handles to pass to callbacks, and store it. handles = guihandles(fig);

guidata(fig, handles);

global t11 t21 t31 t12 t22 t32 t13 t23 t33 t14 t24 t34 t41 t42 t43 t44 %Hasil berupa matriks rotasi 3 x 3 (untuk posisi dan orientasi) set(handles.t11,'string',t11) set(handles.t21,'string',t21) set(handles.t31,'string',t31) set(handles.t12,'string',t12) set(handles.t22,'string',t22) set(handles.t32,'string',t32)

Referensi

Dokumen terkait

Pola ~lahan tanaman Tabu di  Jawe. Perban~ produkl;ivitas beberapa pabrik

Dari tabel 6 diatas dapat dilihat bahwa kabupaten Mandailing Natal memiliki sektor- sektor yang memiliki nilai negatif yaitu sektor peranian, pertambangan dan

Jenis tanah ini berasal dari bahan induk organik seperti dari hutan rawa atau rumput rawa, dengan ciri dan sifat: tidak terjadi deferensiasi horizon secara jelas, ketebalan lebih

Pendekatan kualitatif dalam penelitian ini dilakukan dalam bentuk r eview audit dengan menggunakan metode t r iangulat ion t est atas audit manajemen fungsi

Kegiatan penelitian mendukung pengembangan ilmu serta terapannya. Dalarn ha1 ini, Lembaga Penelitian Universitas Negeri Padang berusaha mendorong dosen untuk melakukan

Sultan Alauddin Riyat Syah adalah sultan Aceh ketiga. Sultan Alauddin Riyat Syah meletakan dasardasar kebesaran Kesultanan Aceh. Untuk menghadapi ancaman Portugis,

Ikatan kovalen terjadi karena adanya penggunaan elektron secara bersama dari atom yang satu ke atom yang lainnya. Ikatan logam, interaksi terjadi karena adanya

9 Harga shampoo pantene yang saya ketahui selalu setabil tidak berubah-ubah 10 Produk Pantene memiliki banyak pilihan jenis yang dapat saya pilih sesuai dengan