775 - Membuat Sendiri Robot Humanoid PDF
775 - Membuat Sendiri Robot Humanoid PDF
HI
Aplikasi-aplikasi
Pendukung
Datasheet
Assembler
Basic Stamp Editor
o Bascom AUR
o Code Vision
C AUR
Membuat Sendiri
RGbGt
Humdnoid
Ciptakan sendiri robot mirip manusia
berbiaya murah
I
AKAAN
PAN
.TIMUR
Widodo Budiharto
Paulus Andi Nalwan
fut#ltLat
ploueunH loqou
u!puos l.Pnquaru
L Borongsiopo dengon sengoio melonggor don lonpo hok melokukon perbuoton sebogoimono
dimoksud dolom Posol 2 Ayot (1)otou Posol 49 Ayot (1)don Ayoi (2) dipidono dengon pidono
penioro mosing-mosing poling singkot 1 (soiu) bulon don/otou dendo poling sedikit Rp
.l.000.000,00
(sotu iulo rupioh), otou pidono penioro poling lomo 7 (tuiuh) tohun don/oiou
dendo.poling bonyok Rp 5.000.000.000,00 (limo milyor rupioh).
2. Borongsiopo dengon sengoio menyiorkon, memomerkon, mengedorkon, otou meniuol kepodo
umum suotu ciptoon otou borong hosil pelonggoron hok cipto otou hok terkoit sebogoi dimoksud
podo Ayot (1) dipidono dengon pidono penioro poling lomo 5 (limo) tohun don/qtou dendo
poling bonyok Rp 500.000.000,00 (limo rotus iuto rupioh).
id
l'?#trP{Yt
$tr/rf}t'{}X
ffi
ouBL.l!png opoplM
ploueunH loqou
u!puos IPnqu0ru
qr."
/tr
,i'.
"
it';;iriL j i.
Membuat Sendiri Robot Humanoid
Widodo Budiharto
t'
'34o.4stlsr'rc
::'
lrlW
121091564
978-979-27 -5625-8
leEpl
Dilarang keras menerjemahkan, memfotokopi, atau memperbanyak sebagian atau seluruh isi buku ini tanpa
izin tertulis dari penerbit.
&c
'de16ua1ad
q3 eped qalorad epuy ledep Durluad u:er6ord epes '6uqued tseuuro;ut
upp ueleru ue6uap qnued uep pqo) Bpuy snrpq 6uBr{ dB.re1 ders rse4lde
rclue6ue4 epy
Jika Anda ingin mengikuti training secara inhouse atau private, atau
ingin mengadakan seminar atau workshop dapat menghubungi penulis
di:
CV Pusat e-Technology
Perumahan Mutiara Gading Timur I , Jalan cendana
Bekasi Timur - Jawa barat 17510
HP :08 5 698 87 384, Yahoo Messg : prof_widodo
Email :Widodo@widodo.com
5,BlokD3l2 RT
6124
VT
!l^
22............
6t "'.."..".
8I """"""
LI """"""
Lt """"""
t """"""
2L """"""
I I """"""
6 """""""
6 """""""
6 """"""'
9 """""""
E """"""'
..............
I """""""
I """""""
I """""""
""""""'
[
ueqtlP,I
"""
""'upnlnqppued
ueqllel
ProuPrunH ]oqod rnllelrsrv
...............prouprunH
loqod
loqod qerefag
loqod 1eua6ue14
""'uenlnqepued
"qroNwrDH rosou'rvNlrDNaw
II4""""""
I sv8
ISI UVJ^:IYQ
A""""""'
UVTNVDNedYrYy
lq )eueo
Bae
..........
Latihan.....
Bne 4 Lencex Ronor 5 Sumeq Generen
Pendahuluan ............
....25
.....25
.................-25
..................25
.........26
.....30
.....48
.....53
.....53
AplikasiPenggerakLenganRobotMenggunakanPC..... ................59
Aplikasi Penggerak Lengan Robot Menggunakan Mikrokontroler ..................67
.................68
Program Penggerak Lengan Robot Otomatis
.....76
Latihan.....
5 Sexson-SENSoR Ronor.....
Pendahuluan............
Rotary Encoder
Sensor Jarak Ultrasonik
Modul Suara D-Voice 04............
Proses D-Voice secara Manual
...............77
.....77
.............77
................81
...................87
...................89
Proses D-Voice secara UART/Serial dengan Mikrokontroler.......................91
Pengalamatan Memori D-Voice 04............
.................93
...................98
Sensor Penjejak Garis
Penjejak Garis dengan Sungut.....
...............98
..............99
Penjejak Garis Tunggal
.............102
Sensor Warna TCS230...
..........107
Proses Pengukuran Nilai Frekuensi
Latihan.....
...110
Bne
Bes
.............111
...111
.......112
............113
...........115
.................722
..........729
.......734
............135
viii
i
:1
,,&
-ii
XI
v12"""""
LLz"""""
LL7"""""
LLZ """""
ILZ""""'
902.........
V02"""""
002 """""
002 """""
002 """"'
.'""""
96I
E6I """"'
E6I """"'
96I """"'
g5I """"'
66I """""
t,L1"""""
0ZI """""
ggl """"'
Lg1"""""
g9I """""
E9I """""
g9I """"'
?gI """""
vg]- """""
291"""""
L91"""""
LqL """""
LgI""""'
99I """""
8?I """""
Vil """""
2v1"""""
1V1"""""
"""""
96l
""
up^eled loqou
lpunl ]pl6ueJed
""'uBnlnqpPuad
yDrND Norsrn
ugrDdwo) g 8vg
ueqrlpl
""relndrag uep nfe14 loqo6 up>leJeD
onros rolow
ue6uap up{BreD ue6unqng
lnpns
"" rJrpreg loqod uBIBreD
nleyl ueuey uppeg ue>lpreD
"""""""'n[BW trty uppeg up>leraD
snrn'I qe16ue1 up{preD
rnpunw qe16ue1 up{BreD
"n[ew qe16ue1 ue>lpreD
nqq-nqn1 upleJaD-up>leraD
"'lypy spnd-sen5 >lereD uernle6ue4
PqP'I-pqel toqod
""'upnlnqppued
"""""Iyvy
SVg
upr{r}P-l
"'olres rolow
reddalg rolow
"""')q rolow
""rolow uer6eg
trod gSD rnlelelu tuer6or6 ppoluly\oq
Lt"-
{
Face Recognition
Konsep Dasar
........274
..........214
...222
Latihan.....
DaRTRR ACUAN
,,,.,,,.,,,.,225
LAIVTPTRAN
......227
TENTANG
PexuLIs....
......229
elrf
epuy elrf ueluesoqrueu leprl uep lrreuau 6uer{ 1eq >lefueq epy
loqou qPrB[os
loqou lBuobuaw
'uoq)e
-Jalq loqoA ueunH ue6uep Ipuelrp 6uer{ ersnueur qredas n>leyrrdreq
upp rslerelurreq uBnduBrua{ rlrlrrueu ueldereqrp 'ue>1qeg 'eJsnueur
drrrtu JnlrJ r>lrlruaru 6uBr{ }oqor rpefuau uelsn{oJrp ue>1e uedep aI }oqor
uedereued BUoJBI 'ru1 lees uelDueqrualrp re)ue6 proueunq loqod
uenlnqepuod
/l
Bab 1: Mengenal Robot Humanoid
Kata robot sendiri diperkenalkan ke publik oleh Karel Capek pada saat
mementaskan RUR (Rossum's Universal Robots). Namun, awal munculnya Robot dapat diketahui dari bangsa Yunani kuno yang membuat
patung yang dapat dipindah-pindahkan. Sekitar 27O BC, Ctesibus,
seorang insinyur Yunani membuat organ dan jam air dengan komponen
yang dapat dipindahkan. Zaman Nabi Muhammad SAW pun, telah
dibuat mesin perang yang menggunakan roda dan dapat melontarkan
bom. Bahkan, Al -jajari (1136-1206) seorang ilmuwan Islam pada
dinasti Artuqid adalah yang dianggap pertama kali menciptakan robot
humanoid, hebat kan? Nah, Anda sendiri bagaimana? Di zaman sudah
maju begini, apa yang telah Anda buat berkenaan dengan robot?
r
\
I'I
requeD
'(fVSO) {6o1ou
a
a
Robot humanoid saat ini banyak dibuat untuk robot pelayan atau peniru
manusia, misalnya robot pemain ping pong TOPIO di bawah.
Gambar
1.2
Jika Anda tertarik untuk membuat robot humanoid, saya sarankan Anda
mencoba robot humanoid yang berfungsi sebagai robot pelayan (seruant
robot), seperti robot ENON ini yang sangat cerdas. Percayalah, Anda
dapat membuatnya.
uoIlIuBoceJ
ecroA
b'I requeD
n3ued6 .
.
.
re,ueg 1bg4bg.(1ni
loN'++J I?nsIA
do1du7 34
YE'utiu Lrz-6
Y YCmv3
(,tazdt)
psJe{ul Josuos
ilp
/ruolv crseg
durelg crseg
77
79ggg
e8sqygny
/LLA9I )rd
77ge?sulyany
:rolorlrro{oJ)lltr^tr
Iuelqs
plouBrunH loqou
Jnllollsrv
t*'
r
Bab 1: Mengenal RobotHumanoid
I
Ok, sampai kapan Anda hanya terpana dengan gambar di atas? Sudah
saatnya Anda sebagai generasi penerus bangsa terutama yang
menekuni bidang elektronika memikirkan dan berupaya agar mamPu
mengejar ketertinggalan kita dari negara lainnya. Jika Anda hanya
hobi tanpa memiliki bekal pengetahuan dasar di bidang elektronika,
tidak masalah. Yang penting Anda mau belajar dan mencoba sekarang
juga. Demikianlah pengantar robot humanoid yang dapat dijadikan
sumber pijakan utama bagi Anda yang ingin mengembangkan robot
humnoid yang Anda impikan.
Latihan
Yang membuat Anda mahir robotika tidak lain adalah pengalaman dalam
bereksperimen dan ketekunan. Untuk itu, Anda diharapkan menjawab
dan mengerjakan semua latihan ini.
a. Resistor
b. Kapasitor elektrolit dan kapasitor keramik
c. Transistor NPN dan transistor PNP
d. MOSFET dan FET
e. Relay 5 V
f. Dioda penyearah
g. IC regulator variabel
h. Kamera webcam
i. Motor DC dan servo
2.
i,
:tN
..ri
ondifl
.V
'er{uure1
kL.
uBnlnqBpuod
F.,
PB0_(XCK/r0)
PE1 _(T1 )
PE2_{ArN0itNT?)
PE3_(AlN1t13C0)
66i
PA0_(ADC0)
PAl _[ADC1 )
PA2_(ADC2)
PA3_(ADC3)
P86_(MrSO)
PA4_(ADC4)
FAs_(ADC5)
PA6_(ADC6)
PB7_(SCK)
PA7-(ADC/)
"FF
PBs_(MOSr)
PD0_(RXD)
PCLI-(SCL)
FBl
-(rXD)
PO2-(rNI0)
PC1
PO3_(NT1 )
PD4_(OCl Bl
FC3_(TME)
FDs_(OC1 A)
PD6_0CP)
_(SDA)
PC2_(TCK)
PC4_(rDO)
PC5_(TDr)
PC6_tTOSCl )
P07_(OC2)
RESET
ouii
AREF
XTALl
G amb
ar 2. 1 Mikroko ntroler AT me g a8 53 5/ 1 6
Pada gambar di atas terdapat 4 buah port, yaitu PA, PB, PC, dan PD
yang semuanya dapat diprogram sebagai input atau output. Jika dilihat
Iebih detail lagi, pada bagian pemroses mikrokontroler ini terdapat unit
CPU utama untuk memastikan eksekusi program. CPU juga dapat
mengakses memori, melakukan kalkulasi, pengontrolan, dan penanganan interupsi. Ini dilakukan menggunakan arsitektur harvard (bus untuk
memori, program, dan data terpisah) sehingga dihasilkan performa
yang tinggi. Hal ini dikarenakan instruksi pada memori program dieksekusi dengan single level pipelining. Dengan demikian, pada saat
sebuah instruksi dieksekusi, instruksi berikutnya dapat diakses dari
memori program. Konsep ini memungkinkan instruksi dieksekusi pada
setiap siklus clock.
Pin I/O pada mikrokontroler AVR dapat dikonfigurasi sebagai input atau
output dengan cara mengubah isi I/O dari Data Direction Register.
Misalnya, jika ingin port B dikonfigurasikan sebagai output, maka Data
Direction Register port B(DDRB) harus di-set sebagai OxFFH (sama
dengan 255). Jika diinginkan sebagai input, DDRB harus di-set ke
0x00H (sama dengan 0).
t_
II
UAV
:qoluo)
llq'xuld rs6un; ue>1eun6rp ledep urd"red rslelapuetu Inlun uelDuepas
'xNId rs6un; ueleun6rp pod nles qples eped lndul rslelepueru InluD
JIDIe dn-11nd leuralur// :0=gldod
lndur re6eqas rsern6r;uollp g Uod // :g=gdqq
r{o}uo)
HoO=gtUOd UPP Hoo=gUqQ PIeu 'ueIJrt{PrP e,{u-dn-11nd
IeuJelur uep lnduJ re6eqas rse.rn6guollp g uo4 'er(u1esq4 'rolslsal dn pnd
leuralu rlrlrueu UAV relorluolor{ru O/l utd derlag '('"1)Vtugz rpseqes
snJP UPP AZ'' JelDIas er{ureseq 6up{,,1,, e16o1 uelrenleEueu e! p>{l}el
ralorluo{oD{lru O/l urd eped uBFueDe} qelepe (aOe1yoa qfiq TnQno ) 'oA
lndur re6eqas rsern6r;uollp e Uod //:00x0=edqq
1nd1no re6eqes rsern6rsuolr.p
gUo4//
:9EZ=SUCC
qoluo)
/l
Bab 2: Pemrograman Robot Dasar
1.
ll
li ilad>rSr Cdlrd
I!
2.
Klik Next sehingga tampil gambar di bawah ini. Pilih direktori instalasi Anda, lalu klik Next hingga mencapai Finish.
.Z
t'i
-E n E
r*ttt:r
4 [I
:*.*
!jI*tJ!:J :4d* r
.I
r
Bab 2: Pemrograman Robot Dasar
3.
Simpan file tersebut, lalu buka lagi melalui menu File I Open.
Pilih tipe file berekstension .c. Konfigurasikan juga proyek
Anda, antara lain dengan menambahkan file source .c ini ke
proyek Anda. Ketik program seperti gambar di bawah ini:
rdl
:s
:..U
ts
Proiect:
ffi
l0
Notes
0thg
Fdes
t I 6l c
[
'l
|l
itll
f ilE EegE]6
//sengqu8ks delari
r'liBii libla4,alys hsrus diE*6ks
rs;
"I
i-.i^rC9
output
3$
inodp,
iiEi
deleks
mid DEin{rcid) \
DDRS=zsS;
lprq,$e tJzea
p0!.18=255; ,'r'geuua
p*tt
ttnyeluerlie
Ee&us !B! bEtl
//IDgiks I sehingqs
74
\"
9L
4aftord
.r
ill
-.::;'
-:
.- .., I ,
,,. *;*r*,r+i"L;+-:i"frti
,
:- : :ryryqn"uqs!ry11ryf.'ffi J
,,fffi,{flffifi
q$4"sid@8il6,A+B
ei,,
iqtgvgspuqqr
ffi
qPm lurl'
,#:::
I
I :,:;,iiXl
ririi$d&
l:_
ne
, 11qTnl'"*.'# : ii;Eqt+q::i
. ..f"stl.Teptry oI
::"
i ,, , . ..: .isr:iai,+:i:i,f
-.=.?:;:1 aeEg4aepoS.l
is!.ff ,s,#ffi F;t
li;il+i#itif
,l^::'.-r. .;a: J;":1",...... Jl
.l "
*,*r.-"*i
*FSq=ffi
$S:
!li:
ffitir
,"li_" rdovl
:i,11:ii*,
I
r
:]i
.
purxeyl!
l:ry::
r ; .F#iittoEilrdG
F
i;
l@i
r :t a
dzrsi
:::: il
l:#}Ep{8e:l :
,l
*-"$
!Se].
ssztr
'v
10=0'A;UOd
} (T) AIIqI^
sn-re1 EuETn-raq ue{e weabojfd / /
T?eu
oET Enuas Tpe[ 'I e)ir6oT ueI-renTe6ueu E 1.rod pnu]as// rgEZ=S,luOd
jEgz=auoc
Lsd- gad n?re^ 'lndfno re6eqas rse.rn6r;uo{Ip A laod//
pro^ elep adrl.raq EurEan ulet6o-rd// ) (pToA)uTeu pro^
E6ou aTTl:
^eTap
^-re-rqTT
0T0Z
lalual
1e6au:> apnTcur#
e?drJ XeH / /
E^6oTour{JeJ,_a
1.rod rp 6unqnq-ra1 agl / /
g lrod eped /ieTep uep fndlno ueeqoc.rad //
IL\V uorsr^apoJ ure-r6o-rd lenqual^I pqocuetr{ //
:
c'ror
5.
ATmegal E
type: ApplicBtion
model: Small
lor: Si2E
slprintl lealures int, Nidth
feitures: int, width
char to int: No
6 unsqned: Yes
bit enums: Yes
instruclionsr Dn
reqister dllo.Etion: 0n
tl9 linelsi compiled
etr0rs
warnings
lariablei size
b!te[s]
i*::i*---:;=**5
lil*" g."fl.
Gambar
6.
16
2.8
Terakhir, Anda dapat mengisikan program tersebut ke mikrokontroIer melalui menu Tools I Chip Programmer, lalu pilih Program All.
Jika telah selesai, lampu LED Anda akan berkelap kelip dengan
durasi 0.5 detik dan 1 detik. Pastikan programmer yang Anda
gunakan adalah STK 200/300 (AVR ISP Programmer) berbasiskan
port parallel. Jika Anda ingin mengisi melalui port serial/USB, Anda
dapat menggunakan DT HiQ Universal Programmer.
Fr
iLL
.
snjral oueTn-req upli Udea5oad / /
T?plu og.t.TpE!-; T e{T6oT ue{:enTe6uaur I lrod enures//
lEgz=s,tuod
/lndlno
rE6eqas rse-rn6r]uo{\p A 1aod.//
IE9Z=EEGC
-Ad- OAd n?re^
eurEln urelbo-rd/ /
) (pro^)ureu pro^
ue)ieunorp sn-rpq p^u^-rp-rqrl rpe! ,u(e1ap ue{eun66uaur/ / <q.^elap> apnTcur#
aTrl
ue1e1:e.{uau/ /<Ll. gTe6eur> apnTcuT#
^-re-rqr1
E 1.rod Tp Eunqnqraa Ag.I / /
91e6aur
g lrod pped
^elap
c.qlrodlno
leng
'z
e{uqe16uel-qe{6up-l
'
0=N1030
0=N35V1l
0=1.J0)il
0=lAvSll
D= LZST
n=r'l7q
OD8
lnnH
0=.LSU100S
0=tlAl'1008
_l
0=Nl00E
t_t=
rir{ ;i;
L1t'tS
0=0-LnS
0=Ell5)l
0=IllSYl
0=[ll5Il
ls)f
: : ; : ..!'il$fli,r$
91r.fr
i,i:r::iir
: :,j : :: :.:-::.:
,* 8
F,t*'
;#r
ai
Pi:lt5_!.ll*I
;: i;:iiiir iF :: ::rl
ry:*l$i,i
ii*,-;:**ffi
IsSgdf*i,l
i ar::. : :..... :;
::,,..
::,.::,,
UE
jit;i+{t"T:m
0=1;
3.
Kompilasi dan jalankan. Pada alat akan tampil lampu LED yang
berkedip secara bergantian sesuai dengan delay yang telah
ditentukan. Beri komentar mengapa diperoleh hasil tersebut.
1.
2.
InputPortCkePortB. c:
=0;
3.
18
I
Amati apa yang terjadi jika satu atau beberaPa push button di Port
C ditekan. Dapatkah Anda menjelaskan fungsi PINx?
6t
raploae Toqor lueroelp 4o1g ol.z requeD
gggg
e8elqly
UAV
relorluo{oDIrI
eI
zlcTdD
{?Jef Josues
relsel Pel .
qenq Z {e^ueqes gxz )CI .
,{pog .
loqor
Ppor uep
)Q rolotu la{pd .
rosuas .
,{e11or1 epog .
)q )dS .
rolow
'er(usrue[es nele
g1e6etu1y srseqraq s)rloqou xr yupurs relorluoloJ>llur gy
uelderg .t
3.
Gambar 2.11 Paket Nlotor DC GTz dan Roda (kiri) dan GDZO Nlini Metal
Gear Motor 100:1 lengkap dengan rod.a besar (kanan)
4.
5.
RobotAvoider.c:
/
//
//
//
//
/
#include <mega8535.h>
#include <stdi,o.h>
#include <de1ay.h>
#def ine ADC_\,'REF_TYPE 0x6 0
flash unsigned char stringl[]={"data
adc: td; "};
/ / Baca 8 bit terpenting
unsigned char read_adc(unsigned char adc_input) {
ADMUX=AdC_iNPUI I (ADC-\REF-TYPE & OXff);
of the ADC input voltage
/ / Delay needed for the stabilization
delay_us (10);
/
/ M'alai konversi
ADC
aocsnal=0x40;
// Tunggu konversi ADC sefesai
whife ((ADCSRA & 0x10)==Q;;
ADCSRA
return
=ox1o;
ADCH;
void main(void) {
// Inisialisasi Port B dan D sebagai output
PORTB=0xFF;
DDRB=oxFF;
PORTD=OxFF;
DDRD=oxFF,'
20
LZ
{
.1
j (09) sur)^eTap
uEue{ {oTaE// jT=ELI)UOd
asTe
{
r.letq. /
Teurur-ral-rad
0'vd
rp ue{IrdueJ, //
Tp .zosuas
igT=E&nOd
(00T>oJlroar
) lT
! (C,IUOd'T5ur-rts)J1ur.rd
elep ecea //
j(0)Jpp-pee.r=oJuod
(I)
I
j
j
aT-Ir{l1^
dTx0=aEoIds
L\rx0=vESccv
lfx0 T sd&t-dEE^-Jqv=x0fiov
i 6Txo=-IUUAn
i
0x0=HUEAn
I 98x0=JESJn
I 8TxO=gUSCO
.^1r-rEd oN
00x0=\tdsJo
jadi
Latihan
1.
Gambarkan arsitektur
8535.
2.
3.
22
Port B sebagai input yang terhubung ke 8 buah sakelar, internal pull up mati, eksternal pull-up aktif.
EZ
'nlueuel
rsle
uplnlplel.U
'n)uedo up>lpun66uetu
Inlun
6uBr{ ue:6ord qelleng
'6
UBP
ruu-nruurylu
'9
g qPE
gledauly ralor?uo4orqltil
,v
ldee
]h
I,3
oN$
ldEt
J]UV
JJl\tr
]]A
zHli'l
t'tvlx
i
tn
z'lvLx
13S]H
(zrsorf/]d
(
r3sor)-sf,d
(ef,o)-lod
(dlr)-sod
(B
(oorI rf,d
(vrlo)-sod
(roifscd
(st,lrI Eld
r.sofrod
{ r.lNrJ Eod
(oxrI
(vosI [f,d
('r)sI
(orNr)_zod
(yf,rfzid
o3d
(l.f,ov] lHd
(stcvfBYd
(!f,ovfrvd
(Ef,ov)-EVd
(rf,ovfzvd
roovf rvd
rod
(oxH)-ood
(Hf,sf1sd
(osrFl] sEd
(Eov'rfsEd
ss)-tsd
(orryItrtvfeea
(EJ,NtioNtv] zEd
(r-r)-
(of,ovfovd
r.Ed
(oxvJxfoEd
9Z
'qPPnu lp6uBs
eEnf er(uuBurer6onued'nll ureles'er{uure1 JoloJ}uolorlrtu uelEupupqrp
pserq :eny uendrupural rlrlrtueru r-uolV )rspg relorluoloD{lw '(JOCI)
uopaa{ ;o aer6ep llllJureur eJ 'oruas 9 ueleunEDuetu euarey '7"rod
-sueq 6u4e1n47tv )Uoqoy ppaqg rrep uele>l6urs lygg 'ruolV )rspg
srseqJaq relorluoloJlru qalo up>{rlppuallp upp onJes 9 ueleun66ueu
uellere6rp 6uer{ rlelreq proupunq }oqor ueledmau IVdg }oqod
seray lel6uerad
qeJppe
uenlnqBpuod
Bab
1.
26
LZ
l-rels
0106
leadef
000T asned
[009t\0Er'0008\09T'0092\0ET]'6 punos
'deaq rxunq uEXTrser{FuaI^Il
or.^
3
l::t:
srq.11n1o:d1g
e
I
.lnqesJel
ord r.uolv )rspg Jolrduo) pped ppe 6up{ resep rs6un; OZ e(u
-{ppqes e6nf r.refeled 'lul qefi\pq rp u:e.r6ord rselrduo>1 uPp {r}ay '
'3CI ord ruolY )rseg ruB.r6ord Ilelsul 'Z
II preog
pg uy z' requeD
ipA0'$
'EE 0Aras
ip^0'6
'EE flEol
Gambar berikut adalah tampilan editor dari Basic Atom Pro IDE
#i;F,*ffs#
fi*l#Ei { r*it* I
n**
,&ssenrtrsr }
,r-*u.*
kd
Fk -
r-fennSw.l---*-*--.--'-'-r :-t*4sdt&
i{i
:
utn
li
'Flryd
}*am,'Fre
*dryffi*ed
Gambar
28
6Z
Luerdord ls!6uaw g' requreD
inqafl
'v
u
6
6ur11ag
:lnlrreq rpedas
'1erur1do 6uer( pseq {n}uD
5.
. ;.::i*
30
:lnlrJeq Jeqr.ue6
rpedas 'renses pJeoq eped rosues upp olJes ue6ueseued uelqse6
duescdnl
Uepns ZZ?
)alH
oaras qenq
nseH
0I' requeD
''.
a:.:a
:::i;Yii,
i, *i
i.:ii;;: iiAEr
rr:l1r;
:i
rir lillllrl
j. i;1w-
_-.. ; ir#;i::i
IIeI
*p:.
;'#
1ede1e1
:lnlrreq rgedas
ue6unques r.lBI}Bng
NF
k:,-r
i+3
Accelerorreter
Arelerom+ter
Y Axi* iF 14
X Axis P1F)
L+ft Hip
Biql-rt Ankie
Srrc
lsvc (FI
Fight Kr:ee:3avr: {F
Eisht Hip S+trc (P1-n]
32
iE
jl
!l
!l
jl
snE
asn 01
fasfJo
v ssa-rd
&oH
1l
ri
! loaA
1l
1l
rl
rl
rl
e^"rg seue1'
uallr-rl\,l
^q .rapuTJ leslfo on:a5
-------------+.1
+----------
,I'
lj
Ii
0 uof, 1.rPls-aT){uelJaT
0 uoc 1.ze1s-aau{?JaT
0 uoc 1-rp?s-dTqf+aT
uo) 1.re1s-aT{ue?r{5r.r
0 uor l.rels-eeu)i1q6-!ir
0 uoc 1re1s-dTqlq6r"r
?d uo) el)iuell:aT
gd uoJ aeu{11:eT
dTqlfeT
9d uoc
Ld uo3 aT)tuelqorJ
Bd
uoc
eeu{1q6r-z
dTqti{oTf,
OTd uor
seTqer-rEl1. urals^S i
: EEq. IsolBrg
requeD
Bst
i,I-lX
.:
Ilaf
seq'*s*18.,q
I--#X
+* *fffi 'uers
rhip var
rknee var
rankle
Lhip var
lknee var
lankle
rhip
sword
sword
var sword
offsel by
sword
sword
var sword
= ((righthip_start
5us
il
/ 24) + 1500\
l::"""
sound 9, 150\3800, 50\4200, 40\41001
main
prevA = buttorrA
prevB = bultonB
prevC = buttonc
buEtonA = iriL2
bultonB = inl-3
buttonc = in14
if (but.tonA = 0) AND (prevA = 1)
tshen
sound 9, [50\3800]
gosub decreaseOffset
goto main
endi
if
currentservo = currentservo +
if(currenLServo = 7) then
sound 9, [75\3200, 50\3300]
goto output_daEa
endif
goLo main
endi
if
34
t.
9.
.t:'
elep-lndfno
utnlaf,
asned
0Z
(Z * dTqf,) ,dtqlq6r: ?nosTnd
(Z + aau{-:) ,aau1lq6r.r lnosTnd
(Z + eTltue:) ,aT)iuelqbT-r lnosTnd
(Z * d'IqT) ,dTr{1f aT lnosTnd
(z + aau){T) /aau{?JaT lnoslnd
(Z + aT>{upT) ,aT{uelfaT lnosTnd
drr{r' aou{-r, aT)iuel I a^ouras Tnd
ulnla:
[00st\09T] '6 punos
esla
f Tpue
E-aT)iuPT=eTliupT
dTr{f
E -dTqr=drr{.r
) oNV (T = o^-rasluar.rnc) f
-F
?asJJoesea-rcap
u:n1e-r
f Tpua
[009t\0ST] /6 punos
asle
S+41{ueT=eT>{ueT
E+aau{l=eau{r
E+dtq:=drr{.r
uaql (009T r d-Ir{r) ONV (T = oA,ragluo.rrnc)JT
fasJJoaseairour
ureuf, 0106
f Tpua
uTeu 0106
las]JoasEa-rcu-! qnso5
[00r?\09]'6 punos
hb
24),131
con
24\,13)
wai t loop
buttonB = in13
if (buttonB = 0) AND (prevB = 1) then
currentservo = 1
sound 9, [200\3800]
qoto main
endi f
prevB = buttonB
qoto waitloop
Brata2.bas:
righthip
rigiht.knee
rightankle
lefthip
leftknee
leftankle
true con I
fafse con 0
36
BRAT
LE
uaa/vr1eq
ur daaql
'saTJelsqo
[0009\0E'00??\EZ'000E\0E]'6 punos
no1 6ut11eb s1 d:a11eqluaq1 (OLZ > lpq) fT
lEq / 9T
u-Jpe
rrpea-r qnsoo
fTpue
0 = rnoT^er{eq
uaril (9T = lnor^eqaq) JT
>l
uTeu
0 = 1ca1ap
00EZ asned
a^our qnsob
g = pueuuoc
0 = -rnor^er{aq
[00rr\0s] '6 punos
asnEd
0E
/6 punos
1096e\0El
0E asned
Ioorr\os]'6
punos
-re^
1Eq
af^q :e.1\ xx
ai^q .rp^ pueunuoc
000T asned
t0.0
,0.0
,0.0
,0.0
,0.0
,0.0
z x!ol!
T 1v\oT l
I luarra^our qnso6
,0.0
suoTS-tsod
lruI
OAEgSHS'IAVNS
1-Iu'J ldnffaluf
0 uo3 lfels-aTltuElJal
0 uoc l"re1s-aau{1JaT
0 uo) lrPts-dTr.{llaT
0 uoo l-rP1s-aT>{uelq6r-r
0 uoc 1.reas-aau>11q6t:
0 uoJ 1.rets-dtq3qbt:
9'99T uoJf aa-r6ap.zadsdels
'aa:6ap -red sdais ele-rqrTeJi
if detect then
low 14
command=2
gosub move
command=11
for xx=1 to
gosub move
next
detect = fafse
input 14
el-
se
Low L2
command=1
gosub move
input 12
f
endi
if
(behavi-our = 5) Lhen
low
13
command
gosub move
pause 2000
sound 9, [150\4400]
pause 50
sound 9, t50\44001
pause 50
sound 9, t150\39601
pause 50
sound 9, t50\39601
pause 50
sound 9, t250\34001
pause 2000
input 13
endif
goto main
move:
if(command = 1) then
Walk Forward
giosub movement
gosub movement
gosub movement
gosub movement
elseif(command = 2)
gosub movement [
gosub movemenL |
gosub movement [
pause 200
;gosub movemenL
gosub movement
sound 9, t50\44001
s00.01
500.01
500.01
s00.01
; Headbutt.
0.0, 0.0, 0.0, 500.0]
0.0,-50.0,-90.0, 500.01
0.0, 32.0,-58.0, 400.0]
0.0,-11.0, 7.0, 500.0]
0.0, 0.0, 0.0,500.01
pause 50
sound 9, [50\3960]
pause 50
sound 9, I50\39601
elseif(command = 11)
gosub
gosub
gosub
gosub
38
movement
movement
movement
movement
:.iiIO.L\1:e1s-aauI?JeT + (ee-r6apradsdals+sodaam{1}aT_
,paads>tT
JINIOJ,\ aau>[1]:eT
l
--l,paadsqr
[,NIOJ,\?]e1s-d1q1q6t: + (aa.r6ap-radsdals*soddTqlq6Tr)
trNIOJ\1jre1s-dIr{+}eT + (ae-r6ap-radsdals*soddTr{lleI_
J,NIOJ,\ dTr{1q5T,r
l
--^
l,poadsr{I
,INIOJ\dTqllaI I o^-lasq
,6 .e=p""o"31p
I6
.6=peadsl:
j 0. 0=peadsq-r
0=paadseT
I0.
.0=paadslT
r 0. 0=paadsT{I
paadse.z , Ipaads , a^ourlse6uoT , soda Txuelqbt:-1se 1 , sode
l{ue1qO., f p33}3r.o
qnsoo
paads>i1'Ipaeds,e^ourfsa6uof,sodaau{1]:aT-lseT,sodaarqlJaTlpaadsla6 qnso6
paadsqT'Ipaads,a^ourlsa6uoT,soddlqlg:a1-iseT,soddTr{1faT]peads?a6 qnso6
1 16. gTTpeads) / (aa-roap.radsdals*anourlsa6uof
a^ourl sa6uo T, I sode TIuElq6t:-1 se 1 _ soda IXuelr{6T:
| ' sodaau:i1q6T:-f spT - sodeaur1lr{6rr
| ' soddTqlr{6T-r-1sET - soddTr{1r{6Tr
| ' sodaTIuel l:a I-1 sEf - soda 11ue1 g:a1
| ' sodaarr:i1g:aT-lseT - sodaau{lJaT
) = paads
l'sodd1q13eT*1seT-soddTq?laIllse6uoTta6 qnso6
uaql(0.0<>paads)JT
Ipaads
'soddTqll:aI 'sodaau{?JaT ,sodaT)tuplJaT , soddrq?r{6r-r, sodaau{?r{6T,r, sodef{uejqOr:l
?uaura^ou
'sodaT)iue?q6r.r
lpeads
sodeau{1q6rr ,soddfr{1r{6Tf , sodaT{uE?Ja1 , sodaatnllg:a1 , soddrql;:a1 I
?uauo^our
1,\oTeq 6uTr{1^ue
jI
f Tpua
l fuouralour qnso6
to'oos'o'Er'o'E7'o'o'o'9r,o.gr,o.o
(6
to '00E '0'
to
uorlTsod ?sau
pueunuoc) ITasTa
luaura^our qnso6
?uaua^our qnso6
Bab
leftankle\TOINT (-leftanklepos*stepsperdegree) +
feftankfe-start\'IOINT laspeed.
rightankle\TOINT (rightankfepos*stepsperdegree) +
ri ghtankle-s tart \TOINT raspeedl
;hservowait tlefthip,righthip,leftknee,rightknee,feftankle,rightanklel
I
finished = true
endif
gethservo righEhip, junk, idle
if (NOT idle) then
finished=false
endi f
gethservo leftknee, junk, idle
if (NOT idle) then
finished=fa1se
endi f
rishtknee, junk, idle
:::n".t.ro
adin 0, ir
;if (ir > 210) then
; detect = true
; endi f
;
if
(NOT
last-lefthippos = lefthj,Ppos
fast-leftkneepos = leftkneePos
last-feftanklepos = leftanklepos
last-righthippos = righthippos
last-rj-ghtkneepos = rightkneepos
last-rightanklepos = rightanklepos
return
one var float
f
if(two<0.0)then
endi
two=-1.0*two
f
if(three<0.0)then
three=-1 . 0*three
endi f
if(four<0.0)then
four=-1.0*four
endif
endi
40
LV
Brata4.bas:
true con 1
false con 0
;caLibrate steps per degree.
Interrupt. init
;
ENABLEHSERVO
Init posit.ions
;Note, movement subroutine arguments are
Rightankle, Ri grhtknee, Ri ghthip, Lef tankle, Lef tknee, Lef thj-p, speed
gosub movement [ 0.0, 0.0, 0.0. 0.0. 0.0, 0.0, 0.0]
;
;1ow
;low
1
2
pause 1000
command var byte
xx var word
ir var word
lastir var word
AMx var word
AMy var word
prevAMx var word
prevAMy var word
bat var word
detect var bit
behaviour var byte
filter var byte
temp var word(10)
main
gosub readAMx
gosub readAMy
gosub readir
;
Accelerometer readings
42
ev
f rpua
e3uanbaslsef qnso6
uaql (g = .rnor^eqoq)
seurrl 1e :nor^eqaq
-re65r-21
fT
f Tpue
uo
GE.I
paf aql
a^ou qnso6
u-rn1
.'
T=pueuilroc
ZI
.lv\OT
asla
71 qndut
esTel: =
1ca1ap
lXaU
qnso6
a.^'oul
z o1 l=xx
-roJ
a^ou qnso6
z=pueuuoJ
,l
,T roT
uar{1 13a1ep fr
'salcPlsqo
[(0I * rT)\00T],6 punos
lTpue
onrl = ?co?ap
uaql (092 < fT) fT
f Tpua
IoooE\oE'oorr\92'ooo9\09] /6 punos
/1 oT 6ur??a6 sr
(OLZ > 1eq) f T
^-ral1Eqiuaql
f Tpua
f Tpua
a^ou qnso6
g = puEuluoc
(06t > 1{NV) ]TasTa
aaour qnsob
a"r , no^
L=
pueuuroC
eT = pueuuoc
tT =
pueuuroJ
44gpea: qnso6
xInIV)
uo (0t9 <
969 esned
^wv)
eu
goto main
move:
if(command = 1) then
Walk Forward
gosub
gosub
gosub
gosub
movement
movement
movement
movement
movement
movement
movement
movement
L -7.0,-20.0,-20.0,
500.0]
500.0]
500.0]
500.0]
elseif(command = 2)
Walk Backwards
gosub
gosub
gosub
gosub
elseif(command = 3)
0.0,
gosub movements [
sound 9, t50\44001
pause 50
sound 9, t50\44001
pause 50
sound 9, [50\4400]
elseif(command = 6)
Headbutt
gosub movemenE
gosub movement
gosub movement
pause 200
;gosub movement
gosub movement
0.0,
0.0,
sound 9, t50\44001
pause 50
sound 9, t50\39601
pause 50
sound 9, t50\39601
elseif(command = 11)
'Iurn LeIt
gosub
gosub
gosub
gosub
gosub
gosub
elseif(command = 15)
Surprise I
gosub movement [
gosub movement [
elseif(command =
return
0.0, 500.0]
0.0,-45.0,-45.0,
0.0, 0.0, 0.0,
0.0,-45.0,-45.0, 350.0]
0.0, 0.0, 0.0, 500.0]
9)
gosub movement [
endi
0.0,
movement
movement
movement
movement
movement
movement
Rest Position
0.0,
;Should never need to edit anything below this line. Add user subroutines
above this and below main.
44
9V
:
:
aTpT
eslel:=paqsruTli
dool-rosuas
.ze^ {un[
p.ro.({i
leT{ue?r{6T:'aT)iue1JeT'aau{1q6Tr'aou}{lJaT'dTq?r{6T.r'dTrilleTl 1Te/v\o^.rasql
Ipaedse] JNIOJ,\1Je1s-aT)iue1r{6T,r
o^rasq
f Tpuo
10. o=paadsp.r
l0 .0=paadsl_r
10. o=paadsq.r
,0. 0=paadspT
0'O=paadsqT._=
0.0=paads{I
qnso6
paadsqr ' Ipaads 'a^ourisa6uoT ' soddTqlq5Tr-1seT ' soddTq?q6r] I paads1a6 qnso6
paadsel ' I paads 'a^our?sa6uoT 'sodaT{ue1 JaT-1 seT 'sodaTlue?J aT ] paadslao
qnsob
qnso6
qnso6
paads{1'Ipaeds'e^ourlsa6uoT'sodaau{tJaT-1seT'sodaau){lfeI]paads1a6
paedsqT'Ipeads'a^oulsabuoT'soddTr{lfaT-?seT'soddTqlfaT]paads?a6
( (O' OZlpeads) / (aar6apradsdals+a^ourlsa6uoT)
a^ourf sa6uo T' I soda T{ue?i{5 Tr-? seT - soda T1uelr{bT "r
) = paads
ueql (0'O<>paeds) f -r
Ipaeds
.11
?uaruaAoru
'
sodaT{uefq6r.r ' sodaau{lt{6r-z ' soddTqlq6rr ' sodaT{ue1 l:eT ' sodaau>119:a1
'
lpaads
soddtqlfaT l
lUaUrA^Olu
.:re^
p""d::J
if
(NOT
endi
idle) then
finished=false
if
idle) tshen
finished=false
endif
gethservo right.knee, junk, idle
if (NOT idle) then
finished=fa1se
endi f
gethservo leftankle, junk, idle
if (NOT idle) then
finished=fa1se
endif
geLhservo leftankle, junk, idle
if (NOT idle) then
finished=faIse
endif
;add sensor handling code here
(NOT
;adin 0, ir
;if (j-r > 210) then
; deEect = true
; endi f
if
(NOT
last-lefthippos = lefthippos
last-leftkneepos = leftkneepos
last-leftanklepos = leftanklepos
Iast-righthippos = righthippos
last-rightkneepos = rightkneepos
last-rightanklepos = rightanklepos
return
one var floats
tvro var float
if(two<0.0)Ehen
tswo=-l-.0*two
endif
if (one<three)t.hen
one=three
f
if (one<four) then
one= four
endif
if (one<five) then
endi
one=five
f
if (one<six) then
endi
one=six
46
LV
1005e\0El
'5
punos
0g esnPd
Et asned
>
e^ou qnso6
ET = pueuuoc
-r-F?seI) )) f T
0T asned
-rT ,6T urpe
009 01 T = xx -roJ
T ?nduT
0E asned
1096t\091 '6 plmos
0g asnEd
0s esned
toor?\o9l'6
aTl1-lT,
punos
0E asned
[00?7\0ET] ,6 punos
l}(aU
r-F = f,TlseT
f Tpua
gt asnPd
[00r?\0L] '6 punos
ge asned
tooSt\oEl'6 punos
ge asned
uaql
(002-
>
ET = pueunuoc
(-rr - rTtseT) ) arcd (009- < (-zT - ,rrlseT))) lT
0T asned
-rr ,6T urpe
00E
01 T = xx
-zo]
) urnla.r
f Tpua
(1sa6uoT/ (sodpTo-sodaau) ) u-rn?a.r
uaql ( sodpTo<sodlrau) f T
IT
:el
sodirrau
auo u-rn1a.I
JTPUA
endif
lastir
next
ir
return
readir
for filter = 0 Eo 9
adin 19, temp(filter)
next
ir=0
for filter = 0 to
ir=ir+temp(filter)
next
ir=ir/10
;sound 9, tl-0\40001
iserout s-out, i38400, [dec ir ,13]
return
readAMx
for filter = 0 to 9
adin 18, temp(fifter)
next.
AMx=0
for filter = 0 to 9
AMx=AMx+temp(filter)
next
AI"Ix=AIvIx/10
;sound 9, [10\4000]
;serout s-out, i38400, ldec ir
return
, ],31
:::*'
Lihatlah gerakan yang ditunjukkan robot tersebut. Tampilan videonya
dapat dilihat pada CD pelengkap buku.
Latihan
Cobalah jalankan program demo Bot Board
Basic Atom Pro sebagai berikut:
48
II dengan
module
6V
,d
8d
0d
?d
trioT
.qoT
^toT
esTa
qETr{
Bd r{6Tr{
0d
qETT{
uaql(T=oJrg.uu)lT
z,trr8'uu = cpaT
TJIE'uu = SpeT
= meT
O,T,Ttr'UU
6d
r^oT
f lpua
NOJ,&nA
0=uu
(NtvtOC-NO,I&nS
6d
uarll (dn
= Jlnq) l-I
f rpua
1{oT
= slnq-^a.zd) aNV
(N/VIOO-NO,I&OS
6d toT
f Ipua
(N!}OO-NOJJOS
l-F
dural'9T uTp
:
uTeu
sCgT aT66rM,
u
0
0
0
0
n
uq
= Jlnq
= Ellnq
= V?nq
= JPaT
= sDeT
0=VpaT
r uo,
0 uoJ
do-No.L&na
NMOC_NOJ&OA
fe^
pf,o/vr
1Tq fe^
1Tq fE^
1Tq rp^
durel
Jlnq-Ae-rd
81nq-^a.zd
Vlnq-^a-rd
JpaT
EpeT
e1^q .re^ uu
endif
if(nn.BITl=1)Lhen
high plhigh p5
else
1ow p1
low p5
endif
if(nn.BIT2=1)then
hish p2
high p10
hish p6
else
Iow p2
1ow p10
low p5
endif
if(nn.BIT3=1)Ehen
hish p3
hish p7
high p11
else
1ow p3
Iow p7
endif
pause
1ow p11
50
prev-butA = butA
prev_but.B = but.B
prev-butc = buEC
gosub buttson-led-control
goto main
'subroutine to read Ehe buttons and control Ehe LEDS. Button states are
put in
'variables butA, butB, and butc. LED sEates are read from variables
ledA, 1edB,
'and 1edc.
button-1ed_conErol :
'Make P4-P6 inputs to read butsLons. This turns the LEDS off briefly
input p12
input p13
input p14
butA = IN12
butB = IN13
butC = IN14
'Outputs LOW to each LED Ehat should be on
ifledA=1then
Iow p12
endif
ifledB=1then
1ow p13
endi.f
ifLedC=1then
f
return
endi
50
1ow p14
L9
'rl.uelp
qrqet lnqasrel loqor uerrel ue{Ere6 re6e ue6up} uep qnqn} pppd
olres edereqeq uelqequeueu nlrad epuy 'laqp{ ueleun66uau
er{ueq eltf resaq qrqel ue{rreqrp 6uef uerelrued lurod eua'tpl )elJH
rJpp pJBns Josues ue1eun66uer.u BpuV ueldereqgq '6uodrep uerJel
ueln>lelel.U e,{ulesnu 'ur16untu tnql'Uales ue>1ere6 ueDuap er{uqn1r
-6uetu upp ue{ureurrp 6uer{ >lrsnur uerye6uepueu: ndtueu snJpr.{
rur loqod 'unqel derles ue{eperp rur seluoy '(lSUy) prseuopul rues
loqo5 seluoy Inlun loqor rpefueu 1uI IVdg loqor qeluelEuequley 'Z
lrdafueur reddrr6
loqou uB6uo'I
uBnlnqepuod
54
99
PJI
TU
6ur1ed 6uer{
ii#:'
&i,
m:
ffir
im
ir
#,
lfl
I
fi
[0
*ri
ili
*#r
ffi,
ffi
,*s1
f;
Gambar 4.5 Gerakan Nlemutar Gripper
$.
!;
II,
I
I
I._
56
ii;
i',
L9
'lerJas
i
$
80-uso
./' / ,r'
,,,
[;;]
7e
deta61
Bab
JPl
II
rh----
i 5-----.pe| .P+
CoNNECTOR
5P I
o ooo
3v3our 9 99; rc
'np
USBDM
RI$
usoP
cT$
DR'
RST@T*
NN
DS*
ocD*
., T^.
LED
Rt*
.o
",
220
*l!
PJO
58
I
69
ranortuo)
rErya}| fuE^
oarag
)d
ueqnsz-qlp 6ueft
lo:,Flord
Base $eruo.
Sarvo, :
$err*oPotitisn.
S+rv'o"SpeeU.
$- ?s5
J]
spGec:1'
PiE , ;f*"*
:'::- ...,6fl...,,: '
l1*1-Y::1-:+*i. .*:"1-tYl*r
Actuater: SErvCI
SEnre Pseitis*
$snro $peed
Sdtmq
I
- .-.---- - -t:,-- --.-.^-i
H*nd,$*nqo.,
$arur,F**itiolt
Senrs.Spe*d:
SentBata::
lData senl : ]E
l^.
1 01 00
0'l 04 01
lll
07 00
t
11
FlecvDdar
pcger/o.pas:
uni-t Unitl;
interface
uses
VrSlider;
type
TForml = class(TForm)
ComPorE.l: TcomPorti
ButEonsetting : TButton;
But.t.onconnect : TButton;
VrSliderBase : TVrSlider;
LaDe.L1 : ',I'LJabeI ;
Label2:
60
Tlabef;
,,,
T9
,pua
{ suorlP-rPTcep sTIqnd }
3TTqnd
{ suoTle.rETcap a1E^r-rd )
elp1\r.rd
(1ca
[qoJ
jTaqel& tlzlaqerl
uollngJ : Tuol?nE
jTaqeTJ
r
: EZTaqeT
lTpS[
f,1TpE
JTaqe-IJ tzzlaqel
11TpE,t : lrpgpeads
i
j
j
Teqerlfi : TeTaqeT
1TpS,I : unNo^.ras
1lTpEI : lapEpeadsdr-re)
i
1
jTeqeT[ : LTTaqel
lTpEJ : lrpgpeads.radr.re
iTaqeTJ:ETTaqpT
Taqerl& : rTTaqT
TeqeTJ : ETTaqEl
I
11TpE,t : lrpgpueHpaads
-raprTS-rAJr : pueH.raprTS-rA
zTTaqp.I
Taqerl& :0TTaqET
:
:
TaqelI
jTaqETJ
i
TTTaqeT
jTaqelJ:61aqeT
ouaw& : oural^I1uas
ileqeTJJ:gTaqET
t-FpEJ : I rpgpaadSf,olenlrV
1
TaqeTJ : LTaqerl
.rTaqelJ :gTeqerl
iTeqET& : gTaqeT
-rapr TS-rAJ :,ro1en? Jv-rapr IS-rA
i Ieqe.I& : ?Taqerl
riTpSJ :lrpEpaedSaseE
lTaqe.IJ : tTaqel
var
Forml: TForml;
posisi_servo: string;
header, Df , DN, Sf
Chk,Cksum: byte;
byte-count : word;
implemenLation
{Sn *.dfm}
procedure TForml.ButtonsettingClick(Sender:
TObject)
ComPort I . ShowsetupDialog
end;
if ComPortl.Connected then
begin
ComPortl . CIose;
end
else
begin
exit;
end;
end;
Buttonconnect. . Captj-on:
end;
if ComPortl.Connected
'Disconnect
'
E.hen
begin
ComPortl . abortAllAsl'nc ;
ComPortl . Cl-earBuf f er ( true, true ) ;
end;
end;
Shift: Tshiftstate;
var
X, Y: Integer);
Dc.hl,r^.
chk. =n .
header:=g1E;
Chk : =Chk+header;
nr.=(11.
Chk: =Chk+DI;
p11;
=901;
Chk: =Chk+DN;
51; =900;
Chk: =Chk+SI;
gry; =901,;
Chk: =Chk+SN;
tr; =$04;
Chk: =Chk+L;
P; =$01;
1111;
=901;
PS : =VrSliderBase . Pos
Chk: =Chk+P
Chk : =Chk+NU;
62
ition
e9
j
T+{r{J= : {qJ
ir0s=:rr
INS+{qC= : )iqc
rT0S=:NS
j IS+rtr{J=: }tr{J
j
00$=: rS
jNO+{r{J=: {qJ
1
T0$=:No
rc+{qJ= : Ir{J
l TIS=: fG
i -reppaq+{qJ= : Ir{J
lgT$=: _rapearl
r0=:IqJ
ur6aq
ip.Tott:
.l
pJolv\
lunoc
.l6uTr1s : 11s
l al^q: sd
.TE.1\
i(ra6a?uI :I /x le1e1s1]Tr{sI :lfTIIS iuol?ngesnow& :uo11n8
I 1ce
qOJ
tqoJ
jpua
J(
13e
?xa[' 1 Tpgpaeds]olen1cv
1uIoJ.r1S -
EE
Z= : V-SX
uT6aq
lpua
I ( ?xaJ,' 1 TpEpaadsdrre ) ?uIoJ-r1S- E E Z= : e-Sy
, ( lxail' 1 TpEpaadsradT.r9 ) lulod,.rf S - E S Z = : EO-SX
i ( txeJ,' 1 TpSpueHpaads ) 3uroJ,-r1 S - S E Z= : H-SX
lTpEpaeds-rolen1cv) luroJl.Ils - s E z= : v-sx
.i ( ?xa&'
S-S)I
j -reaT3 - ouraw^cau
j -reaTJ - oural{?uas
J ( 1ca
uT6eq
jpua
, ( 1xa&' ?Tpspeadseseg) luloJ-rls- EEZ= : 8-Sy
ur6aq
!qOJ, : ]apuas ) ebuer{J3 TpEpaedsaseg . Tur"roJd, a-rnpaco.rd
(
(Z,uns{c)xoHoJ,?uI+,,
jpue
(Z,g-SX)xaHoJ,lul
+ , , + ( z 'sd ) xaHoJ,luJ+
,+(z'rud)xaHo&lul+, ,+(z,d)xeHo&1ul+, ,+(2,1)xeHo&1uJ+, ,+(Z,NS)xaHoJlul+
,,+(z,Is)xaHoJlul+,,+(Z,NO)xaHo,t?uI+,
,+(z'Io)xaHo,l?ul+, ,+(z,"rapeaq)xaHoJluI+, : luos ?eo, )ppv.sarrrT.ouawluas
J ( T,d)
.i ( T,T)
e1T.rM.
TlroduioJ
j ( T,NS ) e1TrM. Tl.roduroc
i (T, IS) olTfM. rl.roduroS
.l ( T, IA)
.l ( T,repeoq)
a?Tfl,,t. T?rodtuoJ
j:tqc_ggZ=:uns{c
I
8-SX+{qJ= : {r{c
I
sd+)iq3= : >tq3
NU:
PS : =VrS1
iderActuator . Position
Chk : =Chk+P;
Chk: =Chk+NU;
Chk: =Chk+PS ;
Chk: =Chk+KS_A;
Cksum: =256-Chk;
(DN,
1) ;
1) ;
ComPortl.Write
(SN,
1) ;
comPortl.write
comPortl.write (sI, 1) ;
ComPortl.Write(L,1);
ComPortl-.Writse (P, 1)
comPortl.write
ComPortl-.Write
(NU, 1 ) ;
(PS, 1) ;
(KS_A, 1) ;
ComPortl.Write
ComPortl.Write (cksum, 1) ;
SentMemo.Lines.Add('Data sent:
'+Int.ToHex(header,2)+' '+fnEToHex(DI,2)+,
'
'
,.
end;
5 5
end;
TObj
ect ) ;
5 5
end;
);
eod;
);
VAI
PS
begin
byte;
Chk: =0;
1r..6qr;=g1E;
Chk : =Chk+header;
p1 ; =911;
Chk: =Chk+Dr;
pg; =901;
Chk: =Chk+DN;
51 3 =$00;
Chk: =Chk+SI;
911;=901;
Chk: =Chk+SN;
r,. =q0/..
Chk : =Chk+L;
p;=901;
NU: =g
04;
PS : =VrSliderHand.
64
Position
99
,,+(z/IS)xaHof,llul+,,+(e'Nc)xaHoJJ1ul+,
-izlIG)xaHo,l?ul+, ,+(z,f,epeaq)xaHoJlul+, : luas e1eo,)ppv.seuTT.oural^Ilues
J(T
/urns{J a1Tflvl.
)
T1-roduroc
j ( T,E0-SX) alTfM. Tl-lodluoJ
,Sd)
1
(T
alTfM.TfjroduroJ
a1T-rM. Tl-roduroJ
a1T-IM. T?.roduroc
i Sd+)iT{C= : {r{J
1ru{+{r{3= : )iqJ
j d+{qJ= : }tr{J
uoTlTsod ' .radT.r5-rapT TS-rA= : sd
I
90$=:ru{
.r
T0$= : d
I .I+{qC= : >ir{J
r ?og=: T
1NS+)tqJ=:)iqJ
I
jT0$=:NS
IS+{r{J= :IqJ
I
00$=: rS
jNG+{r{3=
: {rIJ
rI0S=:N(
IO+{qC= : }tr{J
jITS=:ro
,,*ET;]T:;;J:i
J
l0= : )tq3
uT6aq
e1^q : Sd
ite/1.
1ce
a1T.rM. TlroduroC
a1Tf,M. T1-roduroJ
,l ( T,urns{c)
i ( I,H-SX)
i
i
(
(T ,d) alr-rM.TljroduroJ
( T, T) a?T-rM. Tl.roduroJ
T,NS ) alTfM. TljroduroJ
l{qJ-992=:ums{J
I H-SX+{r{J= : Ir{J
j Sd+)iI{J= : }ttl3
ru{+)tl{3= : ltqC
j
d+{qJ= : {qC
'
+IntToHex
P5
,2)
"
lntToHex(KS_GR.2)
end;
+'' +IntToHex(cksum, 2) )
var
PS:
begin
byte;
Chk: =0;
header:=g1E;
Chk: -Chk+header
DI:=S11,
Chk: =Chk+DI;
p1g3=901;
Chk: =Chk+DN;
cr . =(nn.
Chk: =Chk+SI;
51'11=$01;
Chk: =Chk+SN;
T..=(nd.
Chk: =Chk+L;
p.=<n1.
NU:
=906;
PS : =VrSliderGri-p.
Position;
Chk : =Chk+P;
Chk: =Chk+NU;
Chk: =Chk+PS;
Chk: =Chk+KS_G;
Cksum:=256-Chk;
ComPortl.Write (header, 1)
ComPortl-.Write (DI,
ComPortl.Write
ComPortl . Write
L,1) ;
(P,1) ;
ComPortl.Wrj,te (SI,
ComPortl-.Write (SN, 1)
ComPortl.Write
ComPortl.Write
ComPortl.Write
ComPortl
.write
1) ;
;
1) ;
(DN, 1)
(NU, 1) ;
(PS, 1) ;
(KS_G, 1 )
ComPortl.Write (cksum, 1) ;
SentMemo.Lines.Add('Data sent : '+fntToHex(header,2)+' '+Int?oHex(DI,2)+'
'
+IntToHex (SI,
2)+
"
'+IntToHex(PS,2l+' '+
IntToHex (KS
21 + " +IntToHex (clisum, 2 ) )
-G,
end;
var
PS
KS
:
:
begin
byte;
byte;
chl.. =n.
neader:
=Sl-E:;
Chk: =Chk+header
p1 ;=911;
Chk: =Chk+DI;
p53 =901-;
Chk: =Chk+DN,'
cr. -Cnn.
-?vv,
rr.
Chk: =Chk+SI;
66
L9
'rensas 6ue^
JoloJluoIorM^l
ueleun66uey11 loqog ue6uo'I IBJo66uod lsBMdV
i (exaq+ , : 1\ca-r
! (Z' (l.I1.rts)
p?Eo ,
'pue
ipua
ppv' sauTrl - ourew sou
jpue
e1^q)xaHo[luI+,, +exaq=:exaq
urOaq
op (l1s)q16uaT 01 T=:r.ro]
( unoc,.r1s ) -r1SpEaU. TljoduroC
uTEaq
p,Tollr : T
J6ur-r1s: exeq,-r1s
f,PA
Z'rtl{) xaHo[1uf+
,+(z/Io)xaHo,tluI+,
,+
,+
i (T,T) alTrM.
T1-roduroJ
'
''u?;i:fi;Ti3
i Sd +{r{D= : }tq3
Jru{+{qC= : }tr{J
,l
,l
d+{t{J= : {r{J
Z= : SX
J ( 1xeJ,'
urnNo^-ras
lulo&:1s=
I
: Sd
:
nN
T0$=: d
JT+{qJ=:{qJ
r?og=:r
I
NS+){I{J= : {qC
. LU>-.t\>
Bab
Pada Gambar 4.72 digunakan Modul DST-51 sebagai sistem mikrokontrolernya karena modul ini telah memiliki antarmuka untuk PC keyboard
dan keypad sebagai input manual. Dengan menambahkan Modul IR8510, maka DST-51 juga dapat menerima input dari remote control
televisi.
68
I
tga;
lF
69
qEro
TlaU
610
Tfex
d*!t
1.rets
00
610
r{80
610
EgSJ
Tso
T
T
T
T
T
sq
sus--zalunoJ
sc :.raJl:n8
9Z
Ter-ras 1a{ed.r
: TET-reSelec6upfued
:Plequms]{ceqJ
sq
sG
sG
sO
sO
sq
:UnNaC-rnos
:
ad J,ac.rnos
:
urnN?a6-reJ,
ad.{J,1a6:eJ,
ssa-rppveJr^ac
TSEVIUYA-'IETIVIEVA
noE
TO
loqou-rouoN
oos
I{AT
6ro
H0t
x&s
noE .ro1oi^ITo.zluoyrle3ur.rad
q00
O0S
eJacr1\a(I
TO
EESO
T
up/,\TeN
EOONS
luge. oqo.ruErB
'relloJluo)
o^res )d eppd IJdLupl 6uef elep lo{o}ord 6 eilq rrpp r.{eloredrp 6uef
uplede)el rnlp6ued felap qelepe IEr.ursap gZI nelp qog elpq .rallorluo)
orues )d pppd lrdlupl 6uB{ p}pp Io>lo}ord g e},tq Irpp r{sloradrp
6uer{ lnpns da}s LIplBpe qgl e}Bq 'aspg >lpre66ued onres rolou nlrp^
'uelrlepualrp 6up,( o^res rolou ror.uou r{plppe pnpe>l 6up/{ t0 e}pq
'(gO-USq Inpou nles ppe e{ueq euare>1)
rur rsplrldp pppd I0 nleles 6uer{ rrrpues gg-dse }nrn ror.uou qplppe
etueged 6uef 1g Blpq 'q0g'r{0t 'I0 'I0 lpllu ledepral Zespgleqpl eped
'qoluo) 'rur tuerDo.rd ueleunEDueur unleqes nlnqpp qrqelJet olJes Ieqel
derlas lp rplru,relru up>{n}ueuetu {n}un rallor}uo) o^ras 36 ueleunE
er{ulreqas 'n}l puaJBI qalo 'olJes Jolou IJpp :e16uet DuesBtuatu
epuy lpps rsrsod eped Eunlue6raq le6ues Jul IpH .ueJ>lrurep nleles
r{pl{ppl} rur rue:6ord 1eqe1-1aqe1 eped p}pp lolotord ernqeq }e}B)rp nlJad
Org
13h
t(eta
Org
23}:
Rel]t
StarE:
Loop:
Lca11 Init_Serial
PCON, +0h
Mov
Mov
TH1, #OFAh
;Inisial
Mov
Lca1l
Lca11
Mov
Lcall
Lcall
Mov
Lcall
Lca11
Mov
Lcal1
DPTR,+TabelBasel
;Gerakan Base memutar ke kiri
SetPosisiservo
;
Delay_ldetik
;
DPTR,#TabelActuatorl- ;GerakanActuat.or Eurun
SetDualservo
;
DeLay_ldetik
;
DPTR,#TabelHandl
;Gerakan Hand/Tang:an turun
SetPosisiServo
;
Delay_ldeEik
;
DPTR,#TabelGripperl icerakan rotasi gripper
Set.Posisiservo
i
Mov
Lca11
Lcal1
Lcal1
DPTR.#TabelGripl
SetPosisiservo
Delay_ldetik
Delay-ldetik
Mov
DPTR,#TabelGrip2
Lcall SetPosisiservo
Lca11 Delay_ldetik
Mov
DPTR,#TabeIHand2
Lca11 SetPosisiservo
Lcall Delay-ldetik
Mov
Lcal1
Lca11
Llmp
DPTR,#TabelBase2
SetPosisiServo ;
Delay_Ldetik ;
t
;Gerakan gripper
membuka
gripper
menuEup
i
;
;
,.Gerakan
;
;
depan
; TABEL
TabelActuatorL:
DB
01,9,80h
TabelBaseL:
DB
01,01, l-5,80h
;
Centre
TabeIBase2
DB
70
S&+
01,01, 1 0, 80h
09
r
LL
E,IdCI
0u
u' 01Ia
g'v
J
!
!
vl+'u
,
V S
EIdO+Vo'V
00+'v
0u
e0+'0E0
o^_ras?os
!
!
!
o^fas
uelell){a>t
lasj
^eTep
CI]I
cur
l1or{
qqns
fTJ
/IoI{
AoI.I
JAoW
/\o'{
cur
/!oH
TTesT
HCIG dOA
dod
T<Iq
?e{eduT-rTx TTesT
JUI
EJCIG
3ur
0u
v,oua
./\oN
cAoI^I
u,Ldcl+va'v
00*'v
AoIitr
U,lcl0 3uI
cuI
0t{
V,oEA AoI^I
EIdO+VA'\1 cAoI^I
OO#,Y 1\ON
0u
z0* ,0u0
o^:as?as
'Ido
Hdq
:
cur
AoIitr
TTPcT
qsnal
qsnal
o.rltasTenglas
1a>{edurTrTx d*[t
/
..\oll
9E Z+raJ:lnE
..!ofi
L0+'T+faffn8
AoI.I
z0# ,.raf l:nE
loqoE.rouroN#'ssarppvacT^aq AoN
164'ump1a6:e; l1ol{
r{TT#
'ad J,1a6.reJ,
:
,.!or{
-ro1ol^Ido?surTf Tx
'T0
'T0
Eq
: zdTfcireop.T.
9T - E0 EuTddT.ze a6ueu j
Erq
:
g0 uorlelo-r -raddr-r6
aEUPUJ
Tdr.rCIaqetr,
9T -j
q08'80'90'T0
q08
EG
T-reddr.:reTaqeJ,
'8'?0'T0
Eo
:
a-r?uac 0T 'un-rn1 g0 i
qT - q0 ue6ue1 a6ue.rj
q08'90 'n0'r0
zpueHToqel
so
TpueHTaqPJ,
Mov
A, #00
Movc A, GA+DPTR
Mov
@R0,A
Inc
R0
Inc
DPTR
Lca11 KirimPaket
Set
Ret
SetPosisiServo:
Lcal1
SetServo
Mov
Movc
Mov
Inc
Inc
A, #00
A, SA+DPTR
Mov
Movc
Mov
Inc
Inc
A, #00
A, GA+DPTR
@R0,A
Mov
Movc
Mov
Inc
Inc
A, +00
A, GA+DPTR
GR0,A
R0
DPTR
R0
DPTR
;Sets
eRo,A
R0
DPTR
KirimPaket:
Push
Push
DPH
DPL
Lcafl KirimPaket.Dat.a
Lca1l AmbilDataSerial
Pop
Pop
DPL
DPH
Ret
SetServo:
Mov
TargetTl4)e, #1lh
/ DSR-o8)
(DSR-30
Mov
Movc
Mov
Inc
Mov
Mov
Mov
Inc
Mov
Inc
nomor DSR-08
A, #00
A, EA+DPTR
TargetNum,A
DPTR
DeviceAddress,#NomorRoboE
R0,
#Buffer
GRO, #04
R0
@R0,+PerintahKontrolMotor
nomor robot. = 01
R0
Ret
(ACK
Lca11 Serial_In
Cjne A,#lEh,AmbifDataserial
72
DSR-08)
CL
ad &ac-rnos 'V
?-re1s I
AoInI
Ao}i
v'elecums{ceqc
1no-Ter-res TIPc.l
Aoritr
x,ts#'v
:1e)iedTerw
3eE
sclnoTer"res TIesT
lloltr
'v
ssa-rppvacT^ao
sJlnoTerJes
cIaJr^aG+ 'v
TTec.I
..!ow
sJlnoTET.zas TIecl
urnNla6.ze&'V AoI.I
sJlnoTPTf,aS TIec.I
ad^J1a6.rJ,'V l\or,I
v'EleGums{JeqJ ..!oN
?no-Ter-ras TIec.I
1lofi
x&s+'v
:
-relsew?e}{edTEI{v
1aE
f no-Ter-ras
TTEc.I
etecxrns{car{J 'v
qqns
fTJ
C
Aow
00+'v
zulq
tno-ra;Jngdoorl / LE
sSlnoTer-ras T Tec.I
cuf
0u
/!or{
0u0'v
:1ng:aSgngdoo-1
T+jtaf l:nE+
'0u
sc?noTeTf,as
V, LlI
0ll0'v
-raliJng#'0U
l\ow
TTe3T
1\O'^I
/\oI{
/\oN
-ralseI^Ila{PdTe1vlv TIEc.I
:
e1PGla{edurr.rTN
1au
uI-TeT-ras TTPc.I
uIelecdoo.I'E zulq
CUI
OE
v'oua ^ow
uI-TeTjres TTecl
:
uleSeqdoo-I
cur
0u
V'OEO 1\ON
.I\oN
-ral:l:ng+ ' 0u
l\OW
V,S
uI-TeT.ras TTe3T
uI-TeT-res TTesT
uI-Ter.ras TTecT
uJ-TeT.ras TTecT
uI-TeTles TTecl
Lca11 SerialoutCS
Mov
A, SourceN\rm
Lca11 SerialOutCS
Mov
A, #DeviceID
Lca11 SerialoutCS
Mov
Lca1l
DeviceAddress
SerialOutCS
A,
Ret
SaveBuffer:
Mov
InC
Add
Mov
@R0,
RO
A,ChecksumData
ChecksumData,A
;Tambah check
su.m
Ret
SerialOutCS:
rnit_Serial:
MOV
MOV
;
Mov
An1
Orl
Mov
MOV
Setb
MOV
SCON, #52H
TMOD,#20H
A,TMOD
A, #0FH
A, +20H
?MOD,A
TH1, *OFFH
TR1
PCON,
#8OH
RET
SeriaI_Out:
Clr
Mov
TI
,Jnb
Clr
Tr, Tung$rKirim
TungguKirim:
SBUF,A
?I
ReE
Serial_In:
Clr
RI
I\rngguTerima:
Jnb
Mov
Clr
RI , TunggrLrTerima
A, SBUF
Rr
Ret
KirimPesan_Serial
Mov
Movc
Cjne
A, #00H
A, GA+DPTR
A, *OFH, KirimTerus
Ret
KirimTerus:
Lcal1
rNC
Ajmp
74
*E
, Mode 1 Ren
; T0 Mode 2, T1 Mode
Serial_Out.
DPTR
KirimPesan_Serial
;
;
57600
r
9L
lau
f,TC
J
1\oW
H00#'V
doa
Tdc
V,HdG AO}{
E&dO+V0'V sAoI^I
1\oL^I
H00+'v
r{snd
cJV
CUI
}IJdC
lltdo+Vo'v cAoI^I
H00+'V AoI^I
cul
ILIdC
:
CNE
nualaxqeluTfed
1aE
qlas
nurel ax{pT,lr{e1ur-red
r{EluT.radTjreCdooT d*["f
u,rdg
UJdC
u,tdo
nualaxqElur-rad
8'V
C
nuro loxIep rlqelurfad
uJdc+vo'v
H00#'V
:
cur
CUI
cuI
qqns
fTJ
c^ohl
,\oN
r{e1ur-redr.reJdooT
:
SIqelUr-radr-reJ
COW.I
OlIJ
dod
rTJ
:
Surg-n66unJ,
surE-qepns
['I
dur
3q.C
Sug-n66unJ
ouJ qlas
l\OhI
HddO#,OTJ
,OH,t
AoI^I
HOEO#
HTZ#'qOi.^IJ 1!oW
OOI^IJ l{snd
:
gu:E-de1a6
?ell
)tIlapT-n66unJ'SurE-.ra1unoC z-ule
5urE-.de1ag
:
TTecT
{T1epT-n66unJ,
0020#'surg-fa?unoJ ^oL_
:)iTlapT eTec
Latihan
1.
3. Tuliskan
76
LL
'loqoJ uelP^eqPq(ueur
rapocu3 ftelog
'a1eradoe1a1
loqoJ eped epe e6n[ rosues ueurlDunual dnlnpel {ep11 'uer1rcuep unrueN
'up{n{Blrp snreq 6ue,{ ue{epurl uple rrrpues uesnlndal pqtue6uau
6ue[ sqeuolo sruaf loqor-loqo: eped ledepral eserq rosues ']nqesre]
ueepea{ renses uBIBpur} ue{nleletu ledep }oqor e66urqes 1e1o uerDeq
a{ }oqor re}rles Jp epp 6uez( rsrpuol ue4edulBfueru In}un rsBurg:eq ur
uer6eg '6ue1eurq nple ersnueu eped prepur er{u1e.(e1 }oqor eped rosuag
uenlnqBpuod
loqoa tosuos:-/osuas
:"t !:',:t")
,{-
78
6L
'Japo)ua uB6uurd
ue6uap rde16ue1p qe1a1 6uer{ }ry rapo)ug plleq rrpp {qeuals urerEerp
uellnfunueu E'E rpqrupD 'reldmrelur-oldo re6eqas 1a1ed nles tuplpp
seualrp rlelEurres JolsrsupJloloqd nele rosuesoloqd uep qpJer.up{ul CE'I
rapo)u1 frn1oy Z'g EqueD
uCIsNA
0ifil{d
lp)rueq)ew 't
:n1rer{ 'repo)ue {Jula} rue)Br.u enp ledeprel relnd }npns Dunlrq6uaru In}uD
'1ede16uef lnpns qaloradp re6e eslnd
reqal rlpqtuel rnle6ueru uplp loqor >lelo eleur-qeqrueq rolou upqeq
]Bnqtuetu 6uer{ uepaur upqeqrued nB}e reJa}eq ue6ue6al er{uunrnl leqple
-ue{nluelrp
Dunlrq6uau
80
dengan
i8
er{uuedep Ip lelqo rs{elepueu lees rnlnluau
uele ue6ual uedel uplnlueuatu Inlun qplepp loqoJ ue6ual Inlun er(uued
-erauad qoluo) 'Jenses 6uer( erpetu qelppe >{ruosp4ln 'reletu g e66urq
ru) prplup >1eref rueleq 'nluepel 1a[qo->1afqo depeqre] loqoJ rsrsod
rnqela6uau Intun loqor qelo up4{ntnqJp 1ul 1e;1 'lere6raq Euepes 6ue,{
toqor qpnqes eped Eupuad uetuele nlBs r.{ples qelepp leref uern>1n6ue4
iurur*el rruu
iHCIl.*3n**iqruH
3{IftHIVf;
d HId
urrnnsourc
..-"
TRANSM|TTER
[--
Penerima ultrasonik akan menerima pantulan dari objek dan mengubahnya menjadi getaran-getaran listrik. Namun, getaran tersebut masih terlalu
lemah sehingga perlu dikuatkan oleh sebuah penguat sebelum masuk ke
mikrokontroler.
82
e8
uep lrseH 'lerres/IdvD ue6uep urlJIIIp 6uef qelurred ue6uap ue6unlrqrad
saso:d upln{pletu ledep e6n[ reuog-q 'es1nd In]ueq tuplpp urples
'Ielqo ue6uap Josues
prelup leref relru qalo.radruau {n}un }nqesre} eslnd reqel Dunlrq6uau
n1:ad e,{ueq }oqor Ip}O 'qeloredrp 6uer{ lerel ue>1n]ueueru uele eslnd
rpqel euetu rp 'espd qpnqes pe[ueru rsre^uo{lp uele ue6unlrqred yse;-1
'er{urunlaqes ue{seleltp qetet 6ue,{ rpadas
uje-LrJ3eleiel
sLuSL - Sn00! Pslnd
I
tt
r_
V I
,euosou,r,ntay
osE{ln uEJEsued
--|[Gtl
unur;u1rurao6y1
r{plepe
-. .,
+xn:s
Tabel
Bvte
00
01
I Protokol Permintaan
,IE
)eskripsi
\wal Paket
02
D D-Sonar
Nilai
02
03
o4
05
06
07
01
00
84
E8
.reuos-q elep
T-rqurvl
xleI efuru]
uEsed urfrxJ
feuoscPlPoTrquJV TIecT
Ter.ras uesedui-IfTx lIecl
xe.refelurr\luesad#/uldo
L-r--J
!
!
I
I
I
v
+i-f
oo
Aor{
TleJl
6:0
sooS'
sq:euogqllrbrq
sq :euos6Tqtbrq
sC :euosct:]r6ro
sc leuoso:raJJng
VTVC'
za
n03
f,euosccl
use'reuosc
oc8
unspoqc
rJBp 0
0l,
pr
euE
6C
LC
0t
ZC
lJ-0(
ec
z(
reuos-o ol
vc
pr
(xaH) opoued teltu uep 0 al^q nBlB (ocg) lerel relru uep L olAE
pr
(xeg) epoued relru uep I eilq nele (OCe) leJp[ relru uep Z oilE
lerel lnluaq uelep uulllp IBJBI Bleo - zc
apouod )nluaq uPlep u!r!M IBJBI elBo l.c z0tLc
=
g0 uep
apouod
,,0 'elep oueluec
lnlun
)BJBIInlun
t0trc
eped 'Jeuos-c lnJn JouroN ll-0t
L0 nlBlas e^upJepuls lsrpuol
cdflolsey\
loled le^ b
!soulsec
ralorluo{or{u u)d e{ r8uos-o IrEp {urs[IssruroJul
B]Bp
BC
LC
9C
9C
ol^E
!Bt!h
OC
3t
lo{olord z IaqBI
Mov
Mov
Mov
Ljmp
AmbilDataDSonar:
BukanAwalPaket:
Serial_In
BukanAwalPaket
A, #1Eh,
Lcalf
Jnz
Seriaf_In
BukanID
;Apakah = 00 / ID Master
Lcall
Serial_In
Lcall
Cjne
BukanI D:
BukanDSonar:
Lcall
Cjne
Lcall
Lcall
Mov
Mov
Serlal_In
A, #IDDSonar,
Serial_In
Serial_In
;Apakah ID D Sonar?
BukanDsonaI]
;
;Ambil nomor urut D Sonar
;Ambil panjang data
B,A
R0,
#BufferDSonar
LoopAmbilData:
Lcall
Serial_In
M^rr
AP n
Inc
Djnz
LcalI
R0
B, LoopAmbilData
SeriaI_In
;
;
Ret
Pe
sanMintaJarak
DB
-Lnrt Serra-L:
MOV
MOV
MOV
Setb
MOV
LE,ln,02,01,00,01,02,ODBh
SCON, #52H
TMOD,+2OH
THl, #0EDH
TR1
PCON,
#OH
RET
Ser.ia.I_Out:
Clr
MoV
TI
SBUF,A
TungguKi rim:
Jnb
TI, TungguKirim
Ret
SeriaI_In:
Cfr
RI
TungguTerima:
Jnb
Mov
RI, TungguTer.ima
A, SBUF
Ret
KirimPesan_Serial:
Mov
86
i Mode 1 Ren
,' T0 Mode 2, T1 Plode 2
, 9600 Baudrate
A, #00H
L8
ue6uep uep lBnuptu erp)es n1re,( 'erens Jplntueru uep tue{eteru sesord
ue{nyelatu r.uelpp erp) enp rlrlnueur pl 'lruetu g e66urq prpns Jp}nureur
TeT.ros uEsadulr-lTx
dr[v
I IECV
1ng 1et:e5
cur
EJ,dC
:
sn-zaJuT.TTx
lou
H.{ 0
eu
#,V
Erdc+v0'v
IJ
cAor{
fs
1,
&u-"
v,
,t
.1,..,
,i
4I
-L
",,
"i"
_.
a7o
t,,
LEo
88
68
lortuoy ue16eg
bO
UA
m
d/f}
Nisd
u
mf
LZa
sza
gzd
tzd
eza
zza
tzd
L-H
grd
I Id
t td
-td
z'H
Itd
0 Id
r1
[Nt
otNt
0zd
r3s3u
LOd
90d
90d
t0d
e0d
zod
r'0d
00J
d
Ix
dE
r:$$$::
fl
e&aa59
d't'{ddi*
FBAA4A
ffir
pt.r
Ft"d
pt.f
Ft.
Ft.3
Er,*
PT.I
c$
t.}
ResetEtop
&
:l
F{
6!
ft.e
(sf
I I Ltr{, tr{
.11
fl,ue
r*
,fi
I
AfJ
&
*r--l*
Gambar 5.11 Instalasi sakelar dan LED pada D-Voice 04 untuk akses
manual
1.
2.
3.
Hubungkan port serial/UART ke PC bila sumber suara menggunakan sound card. Hal ini diperlukan untuk mereduksi noise dengan
menghubungkan ground D-Voice dengan ground PC..
4.
5.
90
t6
sesord seslerp
'L
'g
Inlun rueped qg1 e66uqes Upts Ioquol r6el uelsedal uep ue{ef
'1erne rsrsod
uplef
'9
vcc
RXD
SISTEM
TXD MIKRoKoNTRoLER
(DST-5rST-51 /DST-AVRy
sT-2051/ST-2313)
cND
__i
2)
Bwe
00
01
02
03
04
05
06
07-08
O4
13
01
00
01
lD Subsystem
No urut Sub System
lD Pengirim 00 = Master (PC/Mikrokontroler)
No urut Master
Panianq oaket data
Baca ienis-ienis perintah
Jenis-ienis perintah
Nilai
Keterangan
01
Perintah
Perintah
Perintah
Perintah
Perintah
Perintah
Perintah
Perintah
02
03
04
05
07
OB
09
92
5*-
Power UP
Putar mulai dari alamat tertentu
Putar pada alamat saat ini
Rekam denqan alamat tertentu
Rekam pada alamat saat ini
Stoo Rekam
Power Down
9l
JaqunN uorleullsac
TO
JalseN lnJn oN
olesJnos
fl.
uals^sqns ol
qlDuat
JoqunN osJnos
LO
L.|eluuod
90
y3v opoy
ulns l3or{c
eleo rsl
9VH'
00
ol
3t
uorlBurlsao
JOpeeH
uEoueJoloy
!e!!N
ralsBu\l/3d o{ oclono uep B}Bp ueuflJlDuod
DO
'euBuad
upl'upyal nplp 0o 00 lel.uplp rslsod nfnuau uep (rte6) "rB]nd epou eped
pppreq {n}un (19 n1e1as lur rsJan eped) I }nrn rotuou ue6uep 70 e)ro1
-q a{ qelur:ad uelur:r6uau ( 1 lnrn Jo(uou ue6uep reloJluoloJlrtu uelsrs
tut teq u:elep) ralspw B,{uruB 6uert 93 00 Z0 g0 l0 00 I0 I EI 1o1o1o:d
ueDuap upynlppp 00 lpruple eped erens ue1;ple6ueu Inluf) :r.{o}uo)
Modul ini memiliki 2400 blok memori sehingga untuk versi 16 menit
setiap blok memori akan menyimpan suara dengan durasi:
durasibloh
16x6o
2400
Blok
12
Blok
2400
Blok
Iumlahblnk=
j'r
tl,4
Ilvtest:
'Program EesEer D-Voice 04 untuk merekam selama 2 menit dan memutar mulai
menit pertama
' By Paulus Andi Nalwan
' www. roboti-nd.ones ia . com
.
94
DATA
96
du[r
Ter.reseleoTrqurv TTPcI
eleq?a{Pdurr-zTx TTer.I
r{96# ' t+.raJ:]na
00# ' z+roJ:l:n8
T+.aal:l:n8
Z0+
e
0+
'.raf JnE
T0#'umN1a6-ref,,
qtT# / ad J,1a6.reJ
l\or{
..Iou
Aotrd
AoI,i
AoI^I
/lotd
0 fuIeTVl
dols qef uT-rad
a?^qt=ElepEue[ue6l
Ter.raslegTrqurv TTeJT
pfeclaledur.rrx TTecT
/
1\oW
t+-lalf ng
00#'z+"re]JinE ]\or[
q00#
t0# /,raJ:l:nE
T0+'urnN1a6-reJ,
aJro^g = 1a5-reJ,l
AoI{
AoN
qg14'ad. ;1a6:e6
1!oW
oEocsE
doJS HV,lNrUEd
ure{a6dooT'}tT1aqJaluno, zulT
{Tlap-i- ETao
TTecT
:
0zT#'{Tlaofalunoc
XJV
elep
T-JqurVJ
0 feuIPTVl
nf ual-ral leueT ueEuap ueliou qe?ur-rad i
al^qe=plPpEuE[uedj
ecro^C = 1e6-reJl]
ue{aEdoo.l
l!or[
TeT-raselecTrqurv' TTeJI
eleolaledurr"rrx TTecT
q00# / E+.ral:l:ng 1\or.{
00# ' z+-raJ:J:ng AoI{
?0+ 'T+jraflng
^oN
,^'ow
t0#'"reJJn8
T0#'urnN?a6re& AoI^I
dur!.I
6:0
t.rls
00
TTc.l
Ter-Ias-?ruI
so
:1.1e1s
soo3'
r{ET
T
T
9Z
I
I
O0S
X,tS
sG surg-JalunoJ
sc {r1ao-relunoc
-ralJng
sQ elecunslicaqc
sO
sO
0t
urn1gle6:e;
add;qe6:e;
6f,o
ti
Bab 5: Sensor-Sensor Robot
Ambi
lDataSerial
Lca11
Cjne
Lca11
LcalI
Lcall
Lcall
Lcall
Mov
Mov
Mov
Inc
Serial_In
A,+lEh,AmbilDataserial
Serial-In
Serial_In
Serial_In
SerlaL fn
Serial In
B,A
R0,
#Buffer
GRO,A
R0
LoopDat.aIn:
Lcall Serial In
Mov
eRO,A
Inc
R0
Djnz B, LoopDataln
Lca11 Serial_In
Ret
KirimPaketData:
LcaII
AwalPaketMaster
Mov
Mov
Mov
LcalI
A,
Mov
R0,
Mov
Inc
LcalI
Djnz
Mov
CIr
Subb
LcalI
A,
R0,
#Buffer
@R0
R7,A
SerialOutCS
LoopBufferout:
#Buffer+1
@R0
R0
SerialOutCS
R7, LoopBufferout
A, #00
C
A,ChecksumDat.a
Serial_Out
Ret
Awal PaketMas
Mov
Lcall
Mov
Mov
LcaIl
ter
A, #STx
Serial-Out
ChecksumData,A
A, TargeLTl4)e
SerialOutCS
A,TargetNum
Mov
Lca11 SerialOutCS
Mov
LcalI
A, #00
Mov
Lcall
A, #01
SerialOutCS
SerialOuECS
Ret
Init_Serial:
MOV
MOV
96
SCON, #52H
T1.{OD,*20H
; Mode 1 Ren
; T0 Mode 2, Al l{ode
L6
OOW.I
NOD.I
OH'I
OT,T
:
surE-n66unJ,
dod
dod
dod
dod
surE-r{epns
d*Fv
rq.C
:5urg-n66un,1
01IJ
Hd,{o+ 'O.r,t
HOEo+'oH,t
HI Z# ,qON,I,
01,1
OHJ
NOJ,I
OOI^IJ
qlas
Aor{
Ao]/{
.\o}{
qsnd
qsnd
qsnd
qsnd
SurE-1{eTeq
1a.u
{T1apT-n56unJ,'Sug-"ralunoJ z-ule
Sug- eTaq TIeoV
:111ap1-n66ung,
0020#'surg-relunoc
^o,tr
:1r1ep1-de1a6
leE
sclnoTeT"ras
1au
I-U
f TJ
dNSS,V
1ION
uT-TeT-resdooT'IU
qut
u1-1et:agdoo'y
fTJ
:
IU
uI-TeT-TAS
l all
f TJ
I.I
urr:1yn65unJ,IJ
quc
:
V,dNSS
IJ
urr:ryn66un;
1!OI{
fTC
:1no-TeT.ras
JEE
e1e-rpne8 0096 j
H00#'Nocd Aor[
TII'I qlas
HC,{o#'TH,r AOW
Ada dua macam sensor penjejak garis yang ada, yaitu sensor penjejak
garis tunggal atau single line follower dan sensor garis inframerah (Delta
Infrared Line Sensing) yang berupa sungut.
Sensor kiri
mendeteksi garis
Gambar 5.14 Delta Infrared Line Sensing pada robot gang berjalan
Pada saat sungut sebelah kanan tidak mendeteksi garis hitam lagi, maka
motor kanan akan bergerak maju dan motor kiri bergerak mundur
sehingga robot akan berbelok ke kiri untuk memperbaiki posisinya.
Pengaturan posisi maju-mundur digunakan untuk mengatur waktu respon
sensor. Untuk robot yang bergerak dengan kecepatan rendah, maka
98
t
66
'lnlrreq
re6eqes nlueuel rs6un;-rs6unJ Inlun rsBrJpA re6eqreq rBr{undruatu Jed\olloJ
eurl e16urg plleq nele 16-JSC 'te{ep leref uelep loqor retryes 1p lelqo
-Ialqo upepeJeqe{ rslelapuetu In}un e6n[ rde1e1 's1"le6 rsle]epueur {n}un
er(ueq >{pp$ Jul Josues rselrldy 'toqor eped nluape} mpns-}npns Ip up{
-{e}el1p ledep Jul Josuas e66urqes uBEuBsBd ednreq ue{nq 'qesrdrel 6uer{
1e[e[ued rosues uelednreru reaolloJ eurl e16urs nele 1e66un1 sue6 1e[a[ue4
9I'g requeD
8t_vos0sdor
:eceds 6ueqn1 6
ueuel e1 resa6rp ledep BEn[ Dursuas auq dl ptleq 'rs{a}epp 6uert sr:e6
:eqe1 :nle6ueu {n}un uelDuepeg '(Vt'E requeg) }oqor Llnqn} depeq:e1
e{urrrp ueqeuatu {n}un ueleunDrp 6ue,t Dursues eurl UI p}taq uep rereds
6ueqn1 rsrsod rnleDuau ue6uap ue{nyelrp ledep rur uernle6uad 'rurp qrqel
]nqasJal ueqeqnrad rnqela6ueru up>le loqo: e66urqes nfeu qrqal Jnlep
ledep ln6uns 's1re6 ueqeqnred uodsaratu ledar qrqel ledep rosues re6y
'lBder
qrqal ]enqrp snrpq rosues uodser eletu 'r66uq ueledecel ue6uap >1era6req
6ueX loqor eped e,{ulrleqas uep iequpl qlqel }pnqJp snreq rosues uodser
dapat
mendeteksi garis dalam jarak yang lebih jauh dan dapat diletakkan pada
robot yang lebih tinggi Posisinya dari permukaan lantai. Sedangkan DSF01 Versi 3 yang memiliki jarak deteksi 0,5-9 cm lebih cocok digunakan
untuk mendeteksi objek secara horizontal. Sensor ini dapat diletakkan
pada sudut-sudut robot untuk mendeteksi keberadaan objek di sekitarnya.
Dibandingkan jenis ultrasonik, sensor ini memiliki harga yang jauh lebih
ekonomis.
100
i
It
I0t
'0 elr6oJreq
uple upJpnlel 'rsprpdruol ue6ue6el qB^\eq rp epeJaq uBunfe leps uep
1 elrDopeq uple uprenlal 'rsereduol ue6ue6el sele rp BpeJeq uBun,(B
lees 'reseq 6uef 116o1 ue6ue6el ueqeqruad rpefueu qeqnlp ue{p }nqesre}
ueun,{e 'roleredu:o1 ue6ueq 'JeloJ}uo{orlrru rrep rg6o1 6/1 qalo rleuelrp
ledep 1epr1 e66uqes [)eI 6uef Eueluer tuelpp unfe6ueu er{ueq }nqesre}
ue6ue6al ueqeqrued 'untup1.1 'ue6ue6al ueqeqruad nele {rr}sr1 1e,{urs
rpelueu prurJa]rp 6uer( e.{eqer qeqn6uaru 6uer( rolsrsueJ}o1oqd ednreq
eurpeued uer6eq eped uel6uepes 'Ielqo e1 efeqer uelrurrr6uar-u JIt{e
nlples 6uer{ qeraup{ul qEl qenqes rsrJeq reeuBured rsrs 'erurJeuad uep
:ecuBu:ad uer6eq sple rrrprel e rsren e66urq I ISreA IIeq tg-Jsq Inpow
rc-CSO
fipo6
4o1g
rur lenl 6uez{ uBrerued 'Z uep t rsren uelDurpueqrp }Bn{ qrqel qBJer.up{ur
uere>ued e66urqes er{ueuruaued reEeqes Zgl_gg-SdOI ro}srsuerloloqd
ue? OOVVIVSJ qpretupr;ulCgl:amod q6q ueleunDDuaru E rsre1 IS-JSC
gl'g reqlueD
(--------------i
......----.....?
T
r
il
m
ffi#{
Li
tJLr
s1
uld-
ffi3
#f'lD
fi fitJT
.J !.fVNM
=
4
Gambar 5.20 Sensor u)arnaTcs-230
102
l$-
$
Y
4
t;
0r
'lnqesJel
Ielqo Jespp puJefi\-eruel\ rJep r{purel }pn{ Eunlrq6ueu ueDuap ueln{ellp
ledep euJpfy\ nlpns ueleua6ued '!pef .nrlq uep ,nptq ,qeleur Jesep
prue^\ uauodruol rJep >lnlueqJel nlelos yalqo derles rrep eure.{\ rnllru}S
i.lrillll,iillr leiill
+11lE
'1
IdAr aE{}t0sl"(}r{d
uli
{di}
il.
Llliri*ff .l+9r,-.1
0s
t"s
96ZS)I ueJenle{
Iul IBH '0ZS)I eporpoloqd qalo eurrralrp 6ue,{ (teap) Durueq uep ,g
'g 'g er{eqp) qeLuel lpn{ rs{e}epuau ue6uep up{nlellp eurea ueleua6ua4
OZ-S)1
l+
J+U*4U413
{*tr*n
ba.r
g-*1gua.*n
i+-
trl
tlt-l
'es
upp ZS lndur eped nluagel e46o1 rspuol uplrraqr.uau ue6uap repo)ap
#
Bab 5: Sensor-Sensor Robof
Sinval
GND
VDD
S1
SO
Pin
S2
OE
S3
OUT
LED
l0
NC
Deskriosi
Ground Power Supply. Semua tegangan mengacu ke Ground.
Tesansan Supolv (2.7 - 5 volt)
Input pen: ih skala frekuensi output (penielasan pada Tabel 6)
Inout oem ih skala fiekuensi output (peniclasan pada Tabel 6)
Inout pem ih filter yane diaktifkan (penielasan pada Tabel 7)
Enable untuk fo (Aldif LOW)
Input pemilih filter yang diaktifkan (penielasan pada tabel 7)
Keluaran frekuensi (fo)
Keluaran frekuensi dapat diatur skalanya melalui S0 dan S1, seperti pada
Tabel 6. Untuk skala frekuensi rendah digunakan pada mikrokontroler
yang mempunyai kecepatan rendah.
SI
r04
2%
20%
t00%
!:,
a"{'rmxu**qa"t3 t}'ftr#$[
E $#{I Huu,qrmnla$ ;
'g*txq e"Sxt*lp*$$e{*
{S!il{
6-fd
*nt "f
ffi
1e1ru
n1re.( 'ur sasord Inlun ueleun6rp 6ue{ epoleu enp epv .lul 1npotu
qalo uplrpnle{p 6uB{ rsuenle{ rplru npqep r.{lqelre} Eunlrq6uau snrpq
ralorluo{oJ4u e66urqes rsuenyer; ednreq qelppp 062-l1)q rrpp uprpnley
'JelllJlp 6ue{ nrrq nele 'nefrq 'qeteru puJpn\ ue>ln]ueueu
ledep gez-n)C 'uerlnuap ue6ueq 'leqpl rpnses rsern6rguol ue6uep
ES uep ZS mlpletu eurefr\ rellrJ rselrlle rnle6uau ledep e6nf gg7-g3q
ZS
ts
0
0
I
I
rellr} EqUBI
rurq rellgrusd
rellqlued
nBlrr.{
JII{B
BUJBil\
qsJeu Jellgruod
epolpolortrd
BUBA
relllf, uurnlu8ua;
4 1aqu1
Kelemahan metoda
yang
T.*?***k
ffi
, *stxir:n t
dr+tik tarrja&i
ilJ-erL
trlt[
l*tffi
Hffi
6x*inxnhamg
Hasil pengukuran dalam nilai frekuensi tadi, baik dari metoda perhitungan
frekuensi maupun perhitungan perioda, akan dibandingkan dengan nilai
frekuensi skala penuh (full scale) dan filter cahaya mana yang diaktifkan.
Semakin besar intensitas warna, semakin besar pula frekuensi yang
dihasilkan.
Apabila skala penuh terjadi pada saat filter merah (R) diaktifkan, maka
dapat dinyatakan bahwa warna merah dengan intensitas tertinggi sedang
dideteksi. Apabita frekuensi yang dihasilkan mendekati nol pada saat filter
merah (R), hijau (G), biru (B), dan cerah (clear) diaktifkan, berarti warna
yang terdeteksi adalah hitam.
i06
L-
z0t
epe 6ue,{ eslnd qepunf re6eqes pplel 6uB{ rsdmelur qeprnf Eunirq6uau
uple relorluoloJlruu e66urqas uplJq{elp uBIp Ieurelsla rsdnralul '[e1ep
saso:d pruples '0 reurrJ ue>1eun66uaur uB6uep Inap nlps ptuplas felep
uelnlpleru uele uerEord '0 lpuJelsle rsdn:a1ur ueleunDDuaur ue6uap
uelnlplrp Insew 6uBr{ eslnd qepunf er{u1er{ueq Euryrq6uau >lnluD
OZ17)A ueduap IgS1gtV 4neua4s uetdelq gz'g requeD
r
CXU
Cru
d/f"lv
N3sd
UM
Ltd
9rd
9rd
Z'Ld
EE'
tzd
0t
b
,td
L
9
0td
0rd
LZd
9Zd
9Zd
tzd
tzd
zzd
ttd
il_
0J_
rtNt
01Nt
0zd
L0d
90d
90d
,0d
t0d
zod
t0d
00d
I I
'rsuenle{ ue6unlrqrad
kHz atau 8000 Hz akan diperoleh nilai 1F40h, di mana Register B bernilai
1Fh dan Register A bernilai 40h.
Untuk pengaturan nilai skala maksimum frekuensi pada 10 kHz, maka S0
dan 51 diaktifkan melalui P1.1 dan P1.0. Sedangkan agar diperoleh
cahaya yang cukup terang, LED putih diaktifkan dengan memberikan
logika 0 pada P1.6.
DCLI230.asm:
. DdLd
CountR
Countc
CountB
Count_lDetik DS
s0
s1
32
s3
OE
LED
.
Org
DS
DS
DS
50h
2
2
2
Bir
Bir
BiL
Bir
BiI
BiT
P1.1
P1.0
TO
rL
INT1
P1.6
Code
org
000h
Ljmp Start
003h
Org
1,1mp EXU r sr
00Bh
Org
Ret,a
Org
013h
Ors
Reti
Org
Ol-Bh
Setb
Clr
Clr
Setb
Lca11
LcalI
LcalI
Lca1l
Sjmp
51
S0
LED
EA
Retr
023h
Reta
Start:
;Set frekuensi
i
Ukur-Merah
;Aktifkan LED
;aktifkan interupsi
Ukur_Hijau
Ukur-Biru
Dosomething-WithData
Start
DoSomething_Wi thData
------
Ret
Ukur_Merah:
Clr
C1r
C1r
108
L
32
53
OE
10KHz
60i
fex
Oxs qlas
,dTlts
3uf
fTf,
3Ur
V
0xE
Ic
dT{s'o+ 'v
au
jrsT0xE
1eu
OXE f,TC
{T1aqT-n55unJr'/{rlaoI-?uno3 zula
O}IT f TJ
$ 'o,s,r qur
01IJ qles
f TJ
OJ.I
AoId
0000E-# '0'IJ
992l0000E-#'oHJ 1\oN
:
)trlaGT-n66unJ,
Oxs
'o,rmr
qlas
qur
l\oN
0#'8
V
fTJ
AoN
0z*'>tTlacT-lunoJ
qf,o#'oow],
.\or{
:
v'
0u0
jrn{O
..\OI^I
1rOrtr
ElunoJ# '01I
1\Ord
V,O1IO
.{OW
A,V
cur
0E
qles
EO
f,n)io
so
TTECl
.TT J
qlas
fT:]
CE
n-TT8--Tnx1l
v'Ouo
.\OI^I
cur
011
s'v
1\OW
v'080
1\ON
i)lunoc# '08
.\Ord
EO
rnlo
EO
TEJ'I
fTf,
qtas
qtas
c<
ZS
:
ne
t'lH-rn{n
1aE
Aor{
v'oua
cur
OE
.^OW
V,OEA
AOW
a'v
ulunoJ+ / 0u
AOld
qles
so
rn{n
TPC'I
Latihan
1.
110
2.
3.
4.
5.
6.
7.
ITt
'lerJlsnpur loqoJ-loqor eped uplnlelrp rur sesord B1(ueserg
'elosuo) LIBnqes qelo ue{uerDordrp 6uer{ eiep-etpp lrep lndur qeyo
-radu:eru 6uef loqor ederaqaq e6nf epy 'loqor qenqos eped epe snreq
{el}n(u lepq er(u1n}aqes 6uef rosuas upp eloureJ ednraq lndur uer6eg
'uesnlndel eues>1e1ad
re6eqes Jolour ser{eq p}rl uele Iul IIeI ueleduasal eped ,unrue;.1
'dnplq InlqpLu eped 1o1o uelere6 rednrer{ueur e66urqes 6ue66ue:au:
uep lederaur uByB let\pl '1nqesre1 lplrel eped nluegel snJe uelJrle
-6uaru ue6ueq 'loqoJ uelera6 eueslelad re6eqas lolo le^\ey nele aJtA
apsnN r6o1ou1a1 uelEueque{rp qepns e6n[ rur lees eped 'loloru urples
'uesnlndel euesleled re6eqes rolour epes
uesnlnde>1 r:aqrued upp sesoJr.uad reDeqes lelo sele rJrpJal rur uer6eg
'Irue>leur uep lndur prelue rp ue>lqnlnqlp Iul rlepua6ued uer6eq qelnll
'JOSueS rJpp
lespJeq er{ueserq 6uer{ srler-uo}o erp)es
qeloradp 6uer{ lndur ne}p 'elorue: ue6uep er{ulesrur 'roleredo qelurrad
rnlplau lpnueu uJe)es qeloredrp 6uer( lndur uelJesepreq loqoJ uelera6
uBnlnqepuad
-----_--__-_-______--------l
Bagian lnput
Seperti yang terlihat pada Gambar 6.1, bagian ini terdiri atas bagian
sensor dan joystick/keypad sebagai pemberi masukan pada otak.
Bagian sensor telah dijelaskan pada Bab 5. Oleh karena itu, pembahasan akan langsung masuk ke bagian remote. Pengertian remote kali
ini bukanlah hanya merupakan remote kontrol seperti pada televisi atau
AC, melainkan lebih luas daripada itu.
Remote adalah sebuah perangkat pengendali jarak jauh di mana
perintah-perintahnya dikirimkan melalui media infra merah atau gelombang radio.
1--=-S-
ffi-H
^nr--+f
112
'II
'0 raurq elpp rlrle^\au uele lapued rsprnp Luplpp r66uq e46o1 upp uep
lapuad rseJnp trrelep qppuer e1r6o1 rsrpuoy .W)d nele uoqeppoN apo)
aqnd rsplnpou upln{plrp nlnqep qrqelrel '1ern1e ue6uap Br.rrrragp ledep
rulrlllp 6ue,( qelurred elep re6y '1oqoJ a{ rlepuel tua}srs uep qelurred
emeqrued prpau reEeqes rs6un;req rur rselrlde Luelep Llereup{ur JBurS
qenuelul untT4adg
t
1e;it;
iiun;ir ri+r1;
i]l:
#ire
ry tft
.s., f
**,r$
'g requeD
r.".r*fi
ff];
-r
:.
;:
::r
fi
!u-
,.t y-"
B
i-.t "'Q-
*;
t
.,,
Kondisi logika rendah dalam durasi pendek dan logika tinggi dalam
durasi panjang akan mewakili data biner 1.
ts{ }{
}{
{ 01il1
,4S
KHg
9tl.
260#
t60#
opohtr
B/V
160#
960#
960#
OEPIA/AJ
sv0#
deels
sd0#
nd0#
9rI0#
lceles
3C0#
t60#
ExaII
JId
(elddol)Je.{iod
JOA
060#
680#
880#
+IOA
-EoJd
+doJd
0
6
L
980#
980#
,80#
,80#
t80#
280#
r80#
080#
Exall
Joqlllotr
9
s
v
c
Z
IoqHroI
DST-51
IR RECEIVER
(lR-8510 ATAU
TSOP4838)
P1,3
REMOTE TV
Gambar 6.6 Diagram Blok Aplikasi Penampil Data RemoteTV pada LCD
t'o{rrssr
!
l.{]l} }fiJ:t( Hl r{}R1
l,rrt I port0 I
tles{r.rsr2 i ljl:tl.I1111^1,11 I
i t .lutil t{;II't
i
1
Iqesd
ln
Slsl$n
${ttttr
rrafrrBrtri,,q :
P(n '..\
ilrl
l\*lB/Prrl l
lleil(ler &2
rre*rsrtdi.r
fr*:i
I'6n fi I l'qrl r\
[({hlt.lsmF+r
l'sr,Bi'lqrtl l,I:l)
}*r!Uiltnill
*
l{ia,J.r 5rl L$lrlr Jil&per
Fr'rtl}ll0rti L&ll)
il
tlorr
1,P,1)
tryori L l.ll,
lfi&l] Ft)ttt
I'orrrjPoriJ l.tlt)
Rrilj1t\fi--"
l'drlt lt.l)
\
,
Purl l' llrsrler i | \r ,{ unl\
'
t\(Dnh"
l\: I'( h'e.rlnrild
+ !rbl{.tuilrtxr
l\if U l.l.0
116
l.r. n
, - 1!\'Il(l
lnia)ili
LLT
Hdo'v
E,V
,TdG
ppv
AoI^I
/\O'{
HdqcuI{epTJ
cur
Hdq
rul]
HdcruI{epTJ
TdO,V PPV
fTJ
J
gV
Tn{
,\OW
L+,A
H08+'V qqns
fIJ
J
ToclruoJ,Taqei+'uJdc
:
,.
Aow
Toquo[Taqe[{ntunJ
d*fv
T
Telfiv-TsTsod
TIE3T
dooT
TE/[\Y-TsTsod
SAiUTf TV
rTST-UE
IED'I
IEC'I
cI\
du!-J
t+s 'HdL+'v
TIPsV
Toquro;TaqeJ,{n [unJ,
xAohI
E,Idqo,v
doo.I
doo.J
TTEsV
.ZAluT,T,A TUT
TIPCV
alourallT rqurv
:
I
ocl-1Tur
TEC'I
dooT
:1-re1s
PfecSue Iued
nos
9Z
TlaE
H8Z+WOE 610
T?au
HgT+WOu 5rO
TlEE
f o13an
6:0
Htr+r[oE
T ?dn.r-raluJ Teu.ralxE i
HEo+WOu
aex
610
TSAE
6:0
H +I^iOlI
durtv
l:e1s
woE 610
E
folcaA
fasaul
H000
n0E
,{o1I
sooJ'
T
goowS
:rrlaE'.f,uogu
DPH, A
Ret
AmbilRemote:
AcaIl
Mov
CekStartBit
R7, +8
AmbilDat.a:
Push A
Acal1 Bit
A
Pop
A
Rrc
Djnz RT,AmbilData
TRO
Cfr
Ret
cekstartBit:
Jb
Set.b
Jnb
Mov
Cjne
.Tnc
C1r
Mov
Mov
Ajmp
P1.3,
TRo
Pl-.3,$
A,TH0
A, #08H, $+3
CekStart.BitSelesai
TRo
THo, #00
TLO, #00
CekStart.Bit
CekstartBiLSefesai:
C1r
Mov
Mov
TRO
THO, #00
TLo, #0C
Ret
13rt:
,fb
Setb
,fnb
C1r
Mov
Cj ne
Jnc
Clr
Mov
Mov
P1
.3,$
TRO
D1 ?
TRO
A, THO
A, #03, $+3
Birl
C
THO, #O
TLO,
+O
Ret
Birl:
Setb
Mov
Mov
THO, #O
TLO,
#O
KCL
-Lna 1]'_L'1mer :
Mov
Mov
THO, #00
Push
A
A,
Mov
Anl
118
TLo, +00
TMOD
Or1
A, #OFOH
A, #01-H
Mov
Pop
TMOD,A
;Ambil
1-
bit
;Geser ke akumulator
;
Lakukan 8x
6n
e^ulntueTes
.I:)rr-uEsar{ur-rr\Tdoor dutv
f,1o'c
3uI
.ra1{efex*ur.rrN TTecv
:
Hdo I
TcSnV
QCrI-uI-rrx
lau
OJrl-urr.rTX,Hd0#,V auIJ
fldc+vo'v
c^ohl
,\oN
H00+'V
:
oCT-uesadur-rTXdoo.I
: oSrI-uESadu.t:T)I
1aE
CJT-IeTao TTBcV
r{e1ur-red-urTfTx TTecv
AOtr^I
H'T#,V
:
_::::t_:l-t::t::_r::::
laE
CJT-IeTaC ITerv
r{e1ur-rad-ulr-rrx TTPcv
1!OI{
HOT+,V
: T-r TX-.rO S-rnC-rASee
qelurfad-urfrx
TP3\,
TTECV
HZ0#,v
Te1"le
l\Oi,tr
TEIYry-rSTsod
CJT-.^eTaq
qelur.rad-ur-tf,Tx
H8I+'V
:
1aE
TTecV
TTeJv
/loInl
t:ty-z(e1ds1o-rasae)
-IrT)i a{
jrasagi
^eTdsTO------
qCT-^eTao
qelu-I.rad-urTfTx
I{dT#'v
1au
TTE3V
TTecv
1\oW
ueuey-.{eldsTOrasae
6:0
EOOJ'
1TS
I'Zd
SU
lau
*********
IniI_LCD:
SUBRoUTINE
SeIb
RS
Mov
Acall
Acall
A,
Mov
Acall
Acall
A,
Mov
Acall
Acall
A, +3
Mov
AcaII
Acall
A,
Mov
Acall
AcalI
A,
Mov
Acafl
Acafl
A,
Mov
Acall
AcaII
A,
Mov
Acall
Acall
A,
;
;
;
Mov
Acall
Acall
A,
#0EH
Kirim_Perintah
DeIay_LCD
;Display
Mov
Acall
Acall
A,#06H
Kirim_Perintah
Delay_LCD
#30H
Kirim_Perintah
;Kirim
30H
DeIay_LCD
#30H
Kirim_Perintah
;Kirim
30H
Delay_LCD
0H
Kirim_Perintah
;
;
Kir j-m
0H
Delay_LCD
#20H
Kirim_Perintah
Send Init
Delay_LCD
#2FH
Kirim-Perint.ah
;8x5 2lines
;
Defay_LCD
#08H
Kirim_Perintah
Delay_LCD
#0IH
Kirim_Perint.ah
i
i
Delay_LCD
#07H
Kirim-Perintah
Defay_LCD
ON
;
;
Ret
Kirim_Perintah:
P2.L
Clr
Acal1 Kirim-DataLCD
Swap A
Acall Kirim-DaEaLCD
Acall Delay-LCD
Ret
Kirim_DataLCD
Mov
Acall
ret
Po,A
PulseE_Cfock
PulseE_Clock:
120
Push
Mov
Or1
M^r,
D,
A, #0A0H
A,P2
I
;4 bit sebanyak 2 x
;
;Kirim ke Port 0
;Beri I pulsa E Clock
IZL
q8
e8
j
j
Hdo' ,
-2,
_T,
H,{0, ,
0'0 '0 '0 '0 '0 '0
0'0 '0 '0 '0 '0 'o
HJo' ,
0,
HdO, ,
6.
Hdo
8,
Hdo',
"
L,
HJO, .
9,
HJ0' ,
9,
HdO
?,
E,
z,
T,
HdO," ,
,
,
Hdo'
Hdo'
ac
80
Eo
sq
sG
EC
aq
AG
EO
so
so
EO
ao
Eq
Toquro&Teqe&
EdIJ
leu
,E
+
Hddo+'a
zula
Aow
:
zoJT-IeTao
lau
dod
E
doo.I-qJ.I- eTaG,E zufo
dod
I
zocrl-^PTac T TesV
g qsnd
:
dooT-OJT-IeTaO
HgO+'a 1!or{
E qsnd
:
cJT-IeTac
1aE
TTesV
TTPcV
zoJT- ETaq
qelurf,ad-ur-r-tx
HZj+'U
.^oli
qJrI-T
r-reE
lau
qelur"rod-rullrx IIPcV
,\otr{
H0c0#'v
:
qJT
qJT-^eIaO
oJTefeo-ur-rrx
V
of,-lP1ec-urTf,rx
1'ZA
^eTeci!
xz cJT a)i j
: ,TA
oJT-ZSr-rpg
1au
TTerV
rresv
dEiS
IIPDV
qlas
1IP"TEII-lll'F
f,
T)
1au
doN
doa
ruv
H,{0+'v
.{Or{
vcd
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
END
;8f
. oe
i99
;9a
0,0,0,0,0,0,0
0,0,0,0,0,0,0
0,0,0,0,0,0,0
0,0,0,0,0,0,0
0,0,0,0,0,0,0
0,0,0,0,0,0,0
r+
r'nEU
',OFH
0,0,0,0,0,0,0
0,0,0,0,0,0,0
0,0,0,0,0,0,0
0,0,0,0,0,0,0
0,0,0,0,0,0,0
0,0,0,0,0,0,0
'Select'
,0FH
122
r
ezL
z+cb'ztz{l)g16
/r uo-Lvllso
]vtuSs
vfvo <
-l_.t-
uotvtnoon:o
ysl
ffil]umn
ulAt33lu
lHn
ilrm
UILLIY{SNVUl
JHN
ao-LVrnoor!
vsr
]vlufs vlvo
um tlljl]]]]Jiln ]t.ZHD
V'Z uep 'zHW 916 'zHW V qelppp lrloqor rselrlde eped ueleun6rp
Lunllrn 6ue1 'rolelrso qalo nluapel rsuan>{e{ ue6uep ue>peie6rp ntnqep
:etueu;ed euelue e1 ueluedunrp urnleqas }nqasJa} ySJ 1e{urg
L{rqalJa}
Gambar 6.9 Komunikasi D-Jog Controller dengan Modul DX-24 pada robot
?ftS
tArS
4PS
&r.s * i.* *:,.&:1,: ry &'6
Gambar 6.10 Konektor Jogstik
124
!r
9ZL
edp3l,\,oll)lcv
w>lilmqnq !p {?plJ
)cv
t/N
6
8
BIUBN
uebrrBJele)
VJVC
EN(T
GI^IJ
pusruruo3
J/N
{8prJ
CNC
).IJ
IJV
J]A
prmorl)
{COIJ
qllll'ued i uorlue$v
3cA
r.raldr.mqnqrp
4tt1sfro7u14
pendyluoy
pqet
uld
ATT
rltr(
((((((((((
-..r,l
oxza ---!
:-l
\\l
\.i
\iti
ll
il
il
_E- .,\
tI
toro'
I
Modul D-Joy Controller ini memiliki 4 port joystick sehingga dapat digunakan untuk mengendalikan 4 buah robot dengan 4 joystick hanya
dengan menggunakan 5 buah Modul RF DX-24. Empat buah modul
diletakkan pada 4 robot dan sebuah di D-Joy Controller (Cambar 6.14).
126
jt
LZI
ZHDT'Z raalacsueq
l +,.-o /
' 'JL!'
1\
't +/
'l**'
____:-l
' ,-11./
!jv'
1
:\-Y
\rl
Data
Bit
Bit 2
Bit
Bit 4
Bit 5
Bit 6
Data2
Data 3
L2
R2
L1
R1
Data 4
select
Start
Data
A
up
\-l
right
Bit
down
left
Bvte 0
Bvte 1
Byte 2
Bvte 3
Header
1E
Destination lD
Destination Number
Source ID
00
Byte 4
Source Number
01
Bvte 5
Lenqth
07
Byte 6
Perintah
01102
lsi Data
Checksum
128
i
01
72
Keteranoan
lD D-Jov Controller
Nomor urut
Joystick/Robot
01 = Keluaran data dari
Joystick
02 = Keluaran data dari
robot yang
dikirim lewat RF
6ZL
Dd)
9',Zd
ndc o80u
vltfo
o'zd
,'zd
9'Zd
L'Zd
/I.g requeD
tuo
33
sc
,z-xo
LIIC
'loqor rJpp lplo re6eqes relorluolorlrru qelo qelolp uep loqor eped epe
6ue( y7-yq qelo BurrJelrp Jellorluo) ,tof-q qelo uelurrr>1rp 6uer{ >1cr1s
-r{of elep eueure6eq rrefeledtueu ledep ppuv 'rur lnlrreq rselrlde epe4
00
00
00
00
ZO
I.Unsl)aq)
00 nlPles
00 nlples
00 nlBles
00 nlplas
Z lrq BbDuq Iq IrBp
Uod e4xg e>116o1 rsrpuoy
qelulred sluer
z[ eug
I I el^g
0t aug
6 e]Ag
B
eug
Z e],tg
9 aiAB
I.Uns{)eq)
I)qs^of g etBC
>{)qs^of g p}pc
Y)rls^or 7 Blecl
IO
g[ e]^g
z[ e]^g
I I a]Ag
0t al^g
6 aug
9 e]^g
qElurred srusr
B el^g
z el^g
I)qs^or E Blecl
pqs{op Z ptp(l
{)r}s^of I plp(l
>1c11s[op Upp
elpp uprenley
D-
joy.
asm:
$MODs l-
;DEKLARASI
DATA
CLK1
CS
CE
CLK2
DATA2
DR2
DR1
CPU PORT
. DSEG
30h
Org
PanjangData EQU
BufferTRW24 Ds
PanjangData
; MAIN PROGRAM
; - Data dari dari joystick
hingga BufferTRW24+3
;
. CSEG
Loop:
Org
00
LcaIl
Clr
SeTb
CS
Jnb
Mov
Mov
LcaIl
Ljmp
InitRecTRW24
CE
DR1 , $
R7, +PanjangData
R0, #BufferTRW24
LoopTerimaData
Loop
;KUMPULAN SUBROUTINE
.************************************************************'subrouting
TRW24 dengan pengalamatan sebanyak 2 byte
; - R6 = alamat. byte 2
; - R5 = alamat byte 1
; - R7 = panjang data
SendTRW24:
Mov
130
;
A,R6
teL
ef Pceurr-reJdoo.I ,Lu
OE
v'oua
J,SE
zula
JlrI
1\ol{
eleoeurrfeJ, TTecv
PleOEur-lfaJdooT
:
$'tuo
TIIC
Ef,
SJ
eleobue tued+ 'Lu
0E
7ZMEJ,-rof linS+ '
aNr
SJES
g.IES
U'IJ
AoI^I
notr^I
:
\rr[r'uE,tr
TZMEJ,
=====.1
,{IUIX
rsu
"ITVJV
:
C1
EC
NV)I-I,\IIEI)
Vfr1
A.ISS
:
NV)I-,{IEIX
VJVO-hIIUI)
dr^Ils
el
orEo
EJ
1ITC
HVJN]Ud-WIEI}
JEtI
dod
CTE
V
TXTJ
AOI{
3,V,IVC
a'lEs
ulc
TYTJ
TXTJ
ETJ
VJVO
zNtq
x8r.{rEIx 'a
E'ID
:
8#
'8
xSNrur)
AOr{
HSOd
:,{TEI)
l alt
csq
TX
zuCfr
$
,s
A&ES
sc
,a
.\Or{
r-i0 8 #
zutfr
ZPIU.I,PuoSdoo'I ' LE
1I1J
ac
AOhI
080'v
JI]I
VLLVU hI-LtlI)
nv
'11VCV
,zMEJpuesdoo.l
,zl,1E[.ra]:JnE#'01I /\oN
eleo-ur.rrx TTecv
gu'v
,{oN
Eleq-uT-rrx TTecv
TerimaData:
PUSH
MOV
MOV
B, +8
A, +OH
TERIMASX:
CLR
SETB
SETB
RLA
CLK1
DATA
CLK1
Nop
Nop
MOV C,DATA
MOV A.O,C
DJNZ B, TERIMASX
CLR CLKI.
POP B
Ret
SUBROUTINE UNTUK
INISIALISASI Dx-24 /
TRW-24
IniLSENDTRW24:
AcaIl
IniL_TRW24
Acall Ambif-Tabef
A.0
Clr
Acal1 Kirim_Printah
Ret
InitRecTRW24:
AcalI
Acall
AcalI
IniI-TRW24
Ambil_Tabel
Kirim_Printah
Ret
INIT_TRW24:
132
I
''T
I
CLR
CLR
CLR
CLR
CE
Mov
Aca11
Mov
Acalf
Mov
Acall
Mov
Acall
Mov
Aca11
A,#Oh
Kirim_Printah
A, #0
Kirim_Printah
A, #0H
Kirim_Printah
A, +1*8
Kirim_Printah
A,+8*PanjangData
Kirim Printah
Mov
Acall
Mov
Aca11
Mov
Acall
Mov
Acall
A, #CH2AddressByte4
DATA
CS
CLKI
Kirim_Printah
A, #CH2AddressByte3
Kirim_Printah
A, #CH2AddressByte2
Kirim_PrinLah
A, +CH2AddressBytel
Kirim Printah
7
e6r
CNg
6ue^ {orls^of
-rourou
ueouap rEnsas
loqou-rouroN
o0u
a1^gs sa-rppYTHJ
0al.{gssarppvzHc
Tal^EsserppvzHJ
n0s
n0s
o0s
n0s
o0s
o0s
00
00
00
00
n0s
zal,(EssalppvTHJ
te1^assarppvTHJ
,41^ES sa-rppvTHS
a1^8
sa-rppvzHc
tal^assarppvzHJ
?e1^g
nog
aTT0000T0
sa-rppvzHc
loqoE-rouoN
8T0000000
0T x 0 + ZHDV'Z Tsuan{a.rdl
gpo fa1vlod j
(TT0) Te?s^a) zwn 9I!
sdgl^I T !
1s:n8lcoqs j
a f,uc
ue{eun6rp
0el.i{SsserppvTHJ
o0B
n0E
00
00
00
00
00
TO
ZHJ^I
8TTTTOTTO
Iauuer{3 aTOurS l
lTq 9T i
ECov j
9T = I{16uaT
ao
AO
EO
:,IINI_'ISSVJ
.IE1I
cAoI^I
u,tdo+vo'v
nor{
0#'v :.IEAVJ-'II8WV
NIE]X?ZA{E,I_,INI,S
.IIJdO
,IEE
ZN.CO
JNI
HV,trNIlId-WIlIIX'I'IV3V
Teq[-Trqurv
:
TTEcv
,{IUIY7 ZMEJ_JNI
,IINI-TEAVJ+'}r,tdG
Z+,9
AOr{
AOId
qelu-Ifd-lur-rrx rlecv
oal^gssa:ppvTHJ*'v Aol^I
qelur-rd-urr-rrx TIcv
Ta1^gsse"rppvTHJ#'V Aol^I
qelur-rd-urrfrx TIecv
Za1^Sssa.zppVTHC#'V 1!or[
qelu-[rd-urr.rrx TIesv
tel^Essa"rppvTHC#'V 1!oN
r{elur-rd-urI-rrx TIecv
,a1^gssa.rppvTHc#'v l1'ohl
qefur]d-rur.rrx ITeDV
Oal^gssa-rppvzHc+'v ./\oli
Bagian Otak
Seperti yang telah dijelaskan pada bagian sebelumnya, bagian ini
berfungsi sebagai pemberi keputusan dan perintah agar bagian motor
aktif menggerakkan mekanik-mekanik robot. Selain itu, otak juga harus
memiliki unsur memori yang berfungsi sebagai media ingatan robot.
Contohnya, robot yang menyimpan gerakan-gerakan yang dilakukan
pada memori saat melewati labirin agar rute yang telah dilalui tercatat
pada memorinya.
Modul Delta Robo CPU merupakan modul yang sesuai untuk aplikasi ini
karena modul ini telah memiliki Port DC Driver untuk mengendalikan
Motor DC, Infrared Line Sensor dan Ultrasonic Transducer untuk Input
Sensor, Infrared Receiver Port dan DX-24 Port untuk Input Remote, dan
1 kb I2C Serial EEPROM sebagai memori. Selain itu, modul ini juga
memiliki Port ISP untuk keperluan men-download program ke dalam
mikrokontroler Delta Robo CPU
ISP
ProgEmElaE
Prr{
lrfr{rrd ljs$
S$r$fir
P{d
!
o
i
llltrsoolc Y}*nrdEder
fort
B{tl{rt Cotrodor
DELTA ROBO KITS
DELTA ELECTRON]C
Agar otak robot ini dapat berfungsi, terlebih dahulu harus dilakukan
pemrograman pada mikrokontroler yang ada di dalamnya. Pada Delta
134
.j;i
:
I
eel
i
i
I
,1
L{D}pd
ueIuEIer
aoI]3NNO] SZEO
t----r
o='rf
,,il
r
ZT ONH E NId
6,1.9
requeD
rO
.LUOH5
^f-
IHOd
IdE
]I
1H0d
NUd
]H
9.J, 9U
z^
b,JT
Z,
bH
T1
ET}
DT)
EA EH
b
5
z,rJ
TH
zso
f5 1 ]Hbt
'Dd)
Tekan Open File dan pilih file hex yang akan di-download. File ini
dapat berupa file yang ada pada contoh-contoh program atau hasil
assembly dari program rancangan pengguna melalui RIDE atau
Delta Studio.
ffitii;fliiti#
:
ra
i;f
t
lryrfieloe
i!;i;i:::i:i;:
I slAnffUfA,
i .i ir .i
i
,ry.:,xta"B.l*-t
:i:i,
,fi,,:Look8iF:ii
;l :i :li:t :l :r
aernrO fite .l
*;--:.---Ji
I i:r;
,ii;;;
ilti*tlf
Il7
;il;
r*'
:r!i,s..tl{r*,iEft
r,:l:.:l::l
efout.i
:l:::: :: It
;,*;:l:tr;i:i:
I'
I r;i;liiI.{a
;:
:t:tr.tl
$E*Hffitr
ll!!ll!tlt!!l!!#'
itr
ir
:i:J
t:t
r::
::
;r::.;:
::::t
::l l:r
!l
ail
136
-Lm,
L
_Ei
epl requeD
zz.g requeD
Buka program AVR Studio 4.76 dan pilih Auto Connect pada bagian
Tools - Program AVR.
: l$et h{jrd. 3ri}d ,t,i*:
* **l-"il 8,rii ui#i,,:
Ioo,, ig::^$.,..S:F......
ail_'l8tE%..
,=
I trael*Figbi+d
ri'ririo gp;Gcr:,
rr,i,
..
:ffi,*L#
..
:j
! nAiiCEsl$ilpqrRdE
,! 4r(e nllri lpgrigE,.
;i fiemr *ts usg,"a*
. r.3 Jrrglfl lpg'ine
- Si\6efB{rn*r
:lr
.l Qpti*nt,
ti,l
*li
rve.3nery:t{cis
i;n'ii
,e
;DrqsiFlM:tet8fts:kdd.
oekil
5$tu8@
'
i:i,ldft.El
rurcq"iryft
i;
,^.91*:.9.:l1,1.i
ad
Fq]@kd&dl&gdsdiv
iiF;;a---**"*--- -**:1
i
I
i
i
;D@@!54'.
ffisPd_[dmffi&,milt&d
:Etw'$s..@E j0.@ L(
138
6r
a{
'1eDre1 Jalorluolorlrur
uerDord uelsrlnueu up{e dSI-DC upp r-uer6or4 IIIy
'ue:6ord uer6eq eped xaq elrJ peol uep uet6ord qeJ_ qllld
Pilih File, kemudian Cenerate save and exit. Simpan nama file baru
sesuai ekstensi yang sudah ditentukan oleh Wizzard.
Pilih Project, kemudian Configure dan After make. Aktifkan Program
the Chip agar proses programming langsung dijalankan saat Proses
compile selesai.
dl This plq{r$
rle,
rrEs lriduEen
1f,compiElleetuB,,{i&e
$ogram the
Mirge
datE
bY tle
AltshlahFl, :'
r !reate
Ch[
:,
Usert Pmgrem
PflsmmiFg
-:J
,,
'" r '
lj EoP,,xu,*ion
I
I r:"- Proqmfuire disabhd
-r
sx
rr"o
' FLASH
5ooffi-
L**,8ile
ii
-
'
l
:
PEsIEm
FE
B(sl
:I LKSLLU=U
4:
lKsEL2=o
lf:
iT
..1.
I r:
lll crsrrr=o
CK5EL]=O
t'
,r
:r:
: I a' 811"flt12=1
::r
att=ue0?=P I : r" elt=0Bt:+: iT cKoPT=o :i:
!f JTAGEN=0 .,..'
! i-' Bol=1 Be=[ . : r" 111.1 8'1?=0 il- oro$t=o
ill wDroN=o B,
1# ElEck siffinture '- fl@l Erase l* P!*eNe EEFB0M ? ysry
efi.+eg2=t
:I
iT BooTszo=o
iT BooTszl=o
IT EEsAvE=o
i
i
,l
i
ri
t
t
I
*!*d I -?
6l ,',. ,.'.
aetp
E iriEiaifzatisn
140
f
LVL
'UBInIPIIP
{elo
roloru uBloBg
'ue{n{plrp
era6as uB{B EurutuBr6ord sesord uPP d1q)
f;#*i':Hsp-e--re:l
[Nsn]Ft'0)W,eE!
[B0ud]lP20 0)(.)arq0
sz!
sQsh
F@o!
Flil
se
u0 @rP+i.NBrtrl.@F!:
!0:@r${su.E. P..uEwl!
s.AsM@ fr8i
e\ Pflun'ru:
oN l0ol PP.@ordi
az,9:6r.ru80i
!rus lorydE@H:
-,-._
@lPddv:dle6rd:
BZ I6tu1V d{ti
::".r*-r1:":l;wg1dl*fi6l..6El
Motor DC
Motor ini adalah motor yang paling sederhana untuk pengaktifannya.
Hanya dengan memberikan tegangan DC, motor ini akan berputar
secara kontinyu ke arah tertentu. Membalik arah putaran motor dapat
dilakukan dengan mengubah polaritas arus yang mengalir pada motor.
Motor DC biasanya mempunyai kecepatan putar yang cukup tinggi dan
sangat cocok digunakan untuk roda robot yang membutuhkan kecepatan gerak yang tinggi. Juga dapat digunakan pada baling-baling atau
kipas pada aplikasi robot pemadam api.
Apabila transistor PNP yang kiri aktif, transistor NPN kanan juga aktif
sedangkan PNP kanan dan NPN kiri non-aktif. Arus akan mengalir dari
sumber daya positif ke kaki 3 JP4 yang terhubung ke kutub motor dan
diteruskan hingga kaki 4 JP4 ke sumber daya negatif atau ground.
Sebaliknya pada saat transistor PNP kanan yang aktif, maka transistor
NPN kiri juga aktif sedangkan PNP kiri dan NPN kanan non-aktif. Arus
akan mengalir dari sumber daya ke kaki 4 JP4 dan terus menuju ke
sumber daya negatif melalui kaki 3. Dioda berfungsi untuk mencegah
adanya tegangan reverse akibat induksi motor.
Pada rangkaian Half Bridge, hal yang tidak boleh terjadi adalah keempat
bagian transistor, yaitu NPN kiri, NPN kanan, PNP kiri, dan PNP kanan
aktif bersamaan. Hal ini akan menghubungsingkatkan sumber daya
positif dan negatif. Untuk mencegah kondisi ini, rangkaian gerbang
Iogika yang dibentuk oleh IC 74LS02 diatur sehingga NPN kiri dan NPN
kanan aktif bergantian. Hal ini ditentukan oleh kondisi logika pada P1.0
sebagai penentu arah gerakan motor. Sedangkan P1.i berfungsi untuk
mengatur apakah motor dalam keadaan aktif atau tidak. Bila kondisi
logika P1.0 adalah logika 0, maka keluaran U3B akan berlogika 0 pula
selama P1.1 aktif (berlogika 0). Hal ini akan mengakibatkan transistor
NPN kiri non-aktif. Sedangkan keluaran U3C akan berlogika 1 yang
mengakibatkan keluaran U3A juga berlogika 1 dan transistor NPN
ri
Nl d 1fruls 4nruag
6,2'9
requeD
ruor
i<-
raaltQ
)o
apouad
Motor Stepper
Pada dasarnya ada 2 jenis motor stepper, yaitu bipolar dan unipolar.
Sebuah motor stepper berputar 1 step apabila terjadi perubahan arus
pada koilnya yang mengubah pole magnetik di sekitar pole stator.
Perbedaan utama antara Bipolar dan Unipolar adalah sebagai berikut :
Bipolar
Arus pada koil dapat berbolak balik untuk mengubah arah putar
motor.
Lilitan motor hanya satu dan dialiri arus dengan arah bolak-balik.
(nipolar
Arus mengalir satu arah dan perubahan arah putar motor tergantung
lilitan (koil) yang dialiri arus.
r
9Vl
o'zA go-tgg raddals lgpuaduad 4nelua4g uer0elQ z'9 requeD
3c^_/\^_
,.*'
llr
n"
ir
L
55I-06
Checksum
146
OO-FF
Keterangan
00
ccw01 cw
7
LVI
I ro]ow uplpde)3y
eilg
!e[N
LO
-{-{ - 00
uralsr{S qns Cl
J3]spw lnJn oN
s0
-{J-
t0
LO
elPC rsl
u+20
ulns I)3r{)
qelurJad
Jeqr.unN
qlbual
a)rnos
Jeqr.unN uorlBurlsec
JJ-TO
cl a)rnos
vl
90
90
v0
e0
ZO
(rellorluo)or)lw)d)
Jelspw = 66 turrr6ua6 q1
elep 1a1ed lerny
ueEuereley
rappaH
Et
uorlBurlsec
00
cl
IEIIN
IO
00
er/(g
eilg
IEI!N
uoHlsod ar,uoH
les qeluuad
ueledaray
eilg
!EI!N
LO
00r-00
ueEueralay
dals qelurnp
dals/1eferep B'l ]npns In]uD
60
002-00
uerelnd qplunf
BO
.{.J-00
uorl)erlcl les
LO
r0i00
A\) to/A\)) 00
er{g
ueEuereley
!PI!N
nlueuel Islsod a{ rolow uPls qeluued
ueEuereley
eilg
IPI!N
f
Bab 6: Bagian Pengendali Robot
OB
I Kecepatan Motor 2
ACK
Byte
07
Status ACK
| 00 - FF I step per
second
Nilai
Keterangan
4514F
45 = E atau error da
4F=OatauOK
Motor Servo
Berbeda dengan motor DC dan motor stepper, motor servo adalah
sebuah motor dengan sistem umpan balik tertutup di mana posisi dari
motor akan diinformasikan kembali ke rangkaian kontrol yang ada di
dalam motor servo. Motor ini terdiri atas sebuah motor DC, serangkaian
gear, potensiometer, dan rangkaian kontrol.
Potensiometer berfungsi untuk menentukan batas sudut dari putaran
servo. Sedangkan sudut dari sumbu motor servo diatur berdasarkan
lebar pulsa yang dikirim melalui kaki sinyal dari kabel motor. Seperti
tampak pada gambar, dengan pulsa 1.5 ms pada periode selebar 2 ms,
maka sudut dari sumbu motor akan berada pada posisi tengah.
Semakin lebar pulsa OFF, akan semakin besar gerakan sumbu ke arah
jarum jam. Semakin kecil pulsa OFF, akan semakin besar gerakan
sumbu ke arah yang berlawanan dengan jarum jam.
mg
ng
l-
15
ms--l
t^^t
-zms
lr
,s]
1-7
L]
148
6?L
ledpp BS-USq 'ue1e{ueueu }oqor {p}o }pes n}pns elrqedy '[ onres
JoJour r6eq .repocue relru uedur{ued IJor.ueru eped g relru uedlurr(uetu
uele BS-USC eletu 'rapo)ue 6ueqn1 qpnq g qB/y\elau e1e,(ura1
upp urpl 6uer{ lnpns a{ }npns nlens IrBp t olres Jolou ue11ere66ueu
Inlun 80-dsq uelqplurJaureur loqoJ lplo lpes eped 'qoluoc re6eqeg
'uelnlplrp lnpns ueqeqnred qelurred rye>1 derlas rlefi\elrp 6uer{ repocua
Dueqny edereq neJueureur ledep e66urqes Japo)ua ,{re1or qenq g eped
uelBunqnqrp ledep e6nf gg-gsq 'IUyD rnlpletu rlepuel sesord ureles
'ure1 6ue,{ ue1er6e1 ue1
-n{eleu ledep }oqor >lelo uep 80-USC rue6uelrp uele e,(ulnfuelas WA\d
sesoJd 'BfBs oaras Jololu lnpns rnle6uelu {n}un qelurrad qpnqas uelruu
-r6ueru nped er(ueq loqoJ 1e1o eped raloJluo>lo"rryu 'nlr6eq ue6ueq 'g
Iaqel eped uelselotp 6ue,{ rpades IdyD pod rnlelau 1o1o1o:d qelurred
-qeluued uelluur6ueru ue6uep ueInIBIrp olJas rolou rlepue>l sesord
'er(uuelederel
undnBru lnpns lreq 'qesrdJol eJe)es olJes Jolotu qpnq 8 uelrlepue6uau-r
ledep rur Inpow '80-USC ralloJluo) olres Inpou ueleunDrp e,{ueserq
'rur rselrlde qepnturedlueru {nluD 'WA\d relru uelrqplsal rnle6ueu Inqrs
dnlno uele JaloJluo{oDlrur eped tuerEord e66urqes olres Jo}o(u qenqes
rrep qrqel uplqnlnqrp rlelburres loqor 1se1rlde InluD 'ralorluolorlrtu
qelo uellr>16ueqrp ledep 6uer{ ry164 eslnd uelrrequelu ue6uep ue1
-n>lBIIp olJas Joloru
oNc
+n
lBu0s
'nr{ur1uo1 lereDreq reDe rselr;lporu1p
DSR-08
DECrc(
150
&
L9L
t0-uso
l'g requeD
Potensio dalam hal ini berfungsi untuk mengatur besar nilai arus yang
akan mengaktifkan sensor.
,9t
xx-00
-cJ- t0
!PI!N
raPo)u3 rBlrN
rolow Jor.uoN
BO
LO
eug
LO
Jolow JouoN
80
9Z-tO
J.i- r0
60
o^Jes uplede)ey
JJ-OB
e$g
(I0)
00 = unsl)aq) eDDulq
eI
BO
LO
eltg
uPDuerelay
IE[N
o^ras ue{{er3D qelulrad
lelnu] IP]of
JIIBIoJ eJP)es
I'UnsY)aq)
.iJ-00
u+20
90
IO
ZO
v0
JOSUes
-{-{-
(ra11or1uoeor)lW)d)
JelsBW = 66 uur6ua6 q1
urals^s qns ]nrn oN
.{J-
Luels^sqns
qelurJed
ZO
JequnN uorleurlseq
t0
90
90
v0
0
cl e)Inos
00
Jeqr.unN e)Jnos
t0
qlDue'I
ql uoqeurlse(
tI
ql
repPeH
Blep te>lpd Ie{\V
EI
ueDuereley
!EI!N
rellorluoD oNes e{ relsPw/)d Irep Plep uelulrlDu3d
80-uso lo4o?ord
IO
00
eug
Pqel
Bvte
07
OB
SCTVO
09
Step Relatif
Bvte
07
Bvte
00
01
02
03
04
05
06
Nomor Motor
00/01
o1-25
154
1E
Destination ID
Destination
Number
Source ID
Source Number
Lenqth
00
Perintah
0.1
O1-FF
11
O1-FF
02
07+n
00=cw/01=ccw
Checksum
OO-FF
r
EAI
ue6uep
IJII a{
'z9tw
q31 rer{e1 a1 pr1s,{of ue>1uun1rp 6ue,( plpp Iellu-re[u uellrdrueuoru
ynlun urBr6ord ue{srln} upp IE-ISO 7 ttod eped y7-yq 6uese6 .Z
'ue{elrp {uog elotuer eped
lpes 0'14 eped CEl ue{Jllle6ueu {n}un uBr6ord UBISIInI 'I
I loqLuol
uBq!le'I
stue4aN
ue1efie1ay ls4appuary rosuas ir;es qerv rn1efiua4 o7s16ay
l?'9 requeD
MCS lnlun
B oruos
z oruos
L uep
M3
),lnlun Q = |lQ
9 oruos
o^ros
, oruos
t oruas
z oruos
L oruos
0q
tq
Zq
'0q
,q
9q
9q
Lq
L9t
]edpp e66urqas senr e6q r{rlrueur r>1e>1 derlas 'uprn}pJeq Ip} uepetu
-uppeu Ip Ilqels re6e loqor rsrsod B6elueu rs6uryreq lnqesJal eqel-pqel
Irueleu eped r1e1 ureug 'uprnlpJeq lBprl nple Jese>l upparu rp undneru
rplpp uepeur Ip {lpq r66ur1 qrqel 6ue{ splrlrqe}s 1e16ur1 rB{undueu
ppoJeq loqoJ ue6uep uelDurpueqrq
BqB'l-BqB-I
loqou
srllerd
Dur1ed
uEnlnqepuod
Ruas
Kaki4
Kaki 3
Kaki
Kaki2
Kaki
Kaki
9L
rser.uJoJur
ztonufs
'l requeD
(e) so-uso
m;;;;r
Li
r-8onuls
(z) eo-uso
ndc o80u
VIIfC
(L) eo-uso
- Lonulls
lrpp lrrolout
bagian
DSR-08
mmbsiACK
3
,
DELTA SERVO
MOTOR SERVO 2
CONTROL
DELTA ROBO CPU
Gambar 7.4 Modul DSR-08 memberi informasi siap pada Delta Robo CPA
160
r
t9t
olres rolow
vtulfs
toul.NoS
.,',,*".J
:.- i1:
.,n
g'l requeD
ler{utg
onuls
uo_Lot"i
onufs v-Ltfo
J (r
lilftJ:1 m-
lnr
'! tl
--+tt
.l
rL
t-.]h"'
4-t
--
r:
onufs uolohl
3 alauT
-'-l
UJ
4 atau 8
!"
E9r
t_t_
z sonu
ZL
L sonu
9t
sonu
v
v
v
tr
rsounJ
9t
I sonu
6t
IL
z sonu
oJls)l rsbunJ
OZ
I sonu
LZ
or+s)l rsbunJ
t
t
I,Z
z sonu
YZ
I sonu
orls)l
Z
Z
sonu
I sDnu
z sonu
orls)l rsounl
L sDnu
Dllsll
rsbunJ
or+s)l rsbunJ
uolruorele)
o^res Jolow
rouroN
DqDl-DqDI
lIox
rouroN
80-uso
fnrn JoutoN
I pqel
Gerakan-Gerakan Laba-Laba
Secara garis besar, gerakan laba-laba ini dibedakan menjadi gerakan
kaki dan gerakan tubuh. Gerakan-gerakan kaki di sini terdiri atas gerak
langkah maju, mundur, dan lurus. sedangkan gerakan tubuh adalah
gerakan untuk berdiri-turun, gerakan badan ke kiri maju-mundur dan
gerakan badan ke kanan maju-mundur.
n_
'
t*tP
ol
164
i
t-
&
E9r
er
r>1e1 rsrsod
uPIUnJnltp
senJ 'Ourdules ledr-ue1
Jnpunul
Z senJ 'se1e ledule_1
le16uerp
senl' 6urdutes
>1edure1
'n[eu qe46ue1
deqel eped
r1ema1ra1
ledep
'lu!
spnr er{u1e1Duere1 uer66ur}ar rrpp qppuar
diangkat
Kaki
Kaki 3
(aki5 dan5
Kaki2
terangkat ---.-_
Kaki
Kaki
Pada saat ini, tumpuan tubuh robot berada pada kaki 2, 4, dan 6. Agar
robot bergerak maju pada bagian kiri (kiri dari sudut pandang robot),
166
&
!
L9I
g uep
!)Py
ZD{P>|
Uey
9uBp
t'z
e
gHey
!ley--__--_
l)EY
, Uey
ur>1
nJeUU
ue>t
!le)
lley
Ue\
Mey
!le)
II'L reqweD
'n[eu >lere6raq up>lp loqoJ rrrl uer6eq qnqn] uep rp)uel urlptues uBIe
rur nferu uelere6 'rselrner6 upnlupq ue6uaq 'g upp ' 'I Iye>l er(uunrnl
reuasrp I IIeI nfeur uelere6 ue6uap ueltn[ue1rp Euns6upl ]nqesJel
ueleraD '6ue1eyaq e1 Euoropueur {n}un rn}Brp Iul llp{-l{py pletu
Sama halnya dengan gerakan maju kiri, pada saat ini tumpuan tubuh
robot berada pada kaki 1, 3, dan 5. Agar robot bergerak maju pada
bagian kanan (kanan dari sudut pandang robot), maka kaki-kaki ini
diatur untuk mendorong ke belakang. Gerakan tersebut langsung dilanjutkan dengan gerakan maju kaki 6 disertai turunnya kaki 2, 4, dan 6.
Dengan bantuan gravitasi, maka gerakan maju ini akan semakin lancar
dan tubuh bagian kanan robot akan bergerak maju.
Kaki
Kaki 3
Kaki
Kaki2
Kaki
Kaki
168
L
I
69r
IZ-91
9r.-0r
r>1o;
nlour
ulo;
1o16uore1
9r-0r
nloru rloy
sonu
(ders) o^res
tnPns Dtoo
sonu
L sonu
o:1o13 rs6un1
orps13 rs6unS
/U\) qOIV
ulpraq lslsod
uo6uorelay
o^res Jolow
rouroN
ue4eo6-ue4eraD Z pWI
9I'l
requeD
15-24
Koki terongkot
Ruos 2
10-16
Koki moiu
t5-24
Koki terongkot
Ruos 2
r0- t6
Koki mundur
16
Ruos I
15 -24
Koki terongkot
17
Fungsi Ekstro
19
Ruos 2
Koki mundur
20
Ruos I
r0-16
15-24
21
Fungsi Ekstro
23
Ruos 2
t0-16
Koki mundur
24
Ruos I
15-24
Koki terongkot
Ruos I
Fungsi Ekstro
11
12
Ruos
r3
Fungsi Ekstro
t5
Koki terongkot
170
*l!
LLL
're^rJp uPr6Pq eped lruoJllele ue{ps
-nre{ np}p Jpe6 upr6pq epPd lrueletu uplpsnJe{ uP{lnqurueru uBIe
er{urrqle upp }nqesJe} upqpuel 6uef lsrsod nfnuetu In]un rJrp ue>les
-{Br.ueu uple o^res ro}ow 'PqBI-eqPI qnqn} uPqeue} r{PI ueP urrrls{e
nlplrel 6uer( 80-USC eped lnpns rplru uBtst6ued lpqllB uelesnrel
uelrepurq6uetu Inlun ueleun6rp lul IeH 'eqel-eqel qnqnl qnluer{ueu
unleqes 1ede1 'qnued 1e16uere1 rsrpuol leps eped 763 IIn.J tstsod
eped epereq olres rolou e66urqas rnlptp snrpq eqel-pqel I{pI IrBp
nles senr eped orues rsrsod elBtu '>llue{etu ue>lesnJe{ 1pe[re1 lepq re6y
=
=
=
=
A\))
IIN.{ IEIIN
lera6raq uelp rrrpuas eqel-eqpl upp unrnl uele pqpl-pqBl rIeI nele
nlps spnJ eyetu '(mll) uBf tunref qere ue6uep ueupl\Bpaq >lere6req
olres Joloru epq 'e{ulllpqes 'rnpr} rsrsod a1 lera6raq uele rJrpues
pqBI-eqBI luereq ru1 '1e16uerel ueIB eqBI-eqBI rIeI nele nles sBnr e{ptu
'tuef run:ef qe'rees leraDreq olJes elrq ledupl nlps sBnJ eppd '(mff)
esrlA l)ol) raluno) nBle tuB[ tunref qere ueue^\elraq uep (163) as176
nele uef unrBf qeJees qelnsl lpuelrp olJes ro]ou ue>1era6 epe4
{)ol)
sena ueleDD
9I'l
requeD
88908SH
Meskipun tidak sekuat torsi motor servo pada ruas satu, namun pada
ruas ini tetap dibutuhkan torsi yang cukup kuat. Di sini digunakan HS645 mG yang memiliki torsi 9,6 kg-cm. Hal ini karena fungsi motor
tersebut adalah menggerakkan tubuh laba-laba yang cukup berat ke
arah maju maupun mundur.
Posisi servo pada kaki 7,2, dan 3 berlawanan dengan kaki 4,5, dan 6
sehingga bila pada kaki 1 ,2, dan 3 gerakan CW adalah gerakan ke arah
maju, maka pada kaki 4,5, dan 6 gerakan CW adalah gerakan ke arah
mundur. Pada ruas ini, motor servo diatur agar arah Full CCW adalah
arah mundur terjauh yang diperbolehkan pada kaki 7, 2, dan 3 atau
arah maju terjauh yang diperbolehkan pada kaki 4,5, dan 6.
772
eLt
!)e)
9 p{Py
DlF>4
HeX
6I'l EqueD
Ue){
ryey
'n[eu Euoropueu
9 uep 7 IIp{ uep rnpunu 6uoropuau up{e Z plp{ 'ueue1 a{ rp}nureu
lera6raq loqor re6e er{ulllBqes 'rnpunu Duoropuau g upp ? I>lpI
uep nferu Euoropuau uple Z ple{ 'lrl{ eI rplntueu lera6req loqor re6y
'Jelnuretu
>1ere6req uele loqo: e66urqes ueup^\plreq 6ue,( qere eI Duoropueur
ueupl upp lrl{ uer6eq rc6e rruprp qerp 'relndraq uelereE eped
unr.ueN '6ue1e1eq e1 Duoropueu r>lel enrues re6e rnlerp sBnJ :e1nd
qere 'nfetu ue>1era6 InluD '1e16uere1 1epr1 6uer( IIe{-!>lB{ rrep Bnpe>l
senr rBlnd qere {Ble[ LIelppB el{uueepeqrad rur lpq urelep 'unruep '}oqor
r{e>l qenq e6rl lel6ue6uaru ue6uap rle/v\Brp nlreu{ 'nfeur }oqor uelera6
ue6uep erues rrdueq uplnlelrp 6uef sasord 'relndreq uelere6 InluD
'6ueprq uep{nrured depeqral }oqor qnqn1 ueqeueur 6uer(
uoq)ns uplqnlnqrp {epq puptu rp re}epueur 6uer{ Bueprq rp lere6req
loqor lees eped ue{n{plrp ledep er(ueq rur sesord 'tBder qrqel >1era6raq
174
9LL
---'f-
rc'l requeD
unJnltuPpzuPy
NVGVEL--
NVOV_-- - - ;>
nlVhl lul)1
1,
nrvv\l NVNV)
unJnl
IU|OUSA IOAOU
__
>,
z sEnJ-enl
uElsnJn"l
Spider.asm:
$MOD5 1
; PROGRAM
SMOD5 1
DeviceID
00h
EQU
PerintahKontro
1Mo
or EQU
EQU
EQU
STX
NomorRobot
2nu
vrv
;
01
1Eh
03
VARIABEL_VARIABEI,
DeviceAddress:
TargetT\4)e:
TargetNum:
Ds
Ds
Ds
SourceT)rpe:
DS
SourceNu.m:
Ds
Ds
ChecksumData:
Panj angDataSerial
Buffer: Ds
BufferPerlntah:
.Ioystick
Counter_sms:
;Nomor
urut Robot
25
Ds
Ds
CSEG
Org
Ljmp
00
org
Reti
03h
Org
Reti
OBh
Org
13h
Start
Retr-
Org
Reti
23t,
Mov
LCAIl.
Mov
Mov
P0, #00
TH1, #OFFh
LCat
-t
Wakeup
;Robot berdiri
LCA.t
Delay_5 0 oms
Start:
Lcafl
LC
Lcal
PCON,
#80h
KakilLanqkah.I4a
1-L
LCA-L1
MajuModel
Ljmp
Loop
GERAKAN-GERAKAN ROBOT
176
ju
Delay_5 0 OmS
Kaki 6Langkahllaj u
Loop:
MajuModel:
lnit-Serial
bPs
7
LLI
e sen-r un]n1
r{eI un-rnl
suro0T-^ETao ITec.I
o^,rasTsTsodlas
TTer"I
suroE--4eTac TIec.I
-!{e1 ntelrl
r{e){ 1e{6ue:
o^.rasTSrsodlas TTeJ.I
suog-.{eTaq TTecl
o^.rasrsrsod?es TTec.I
suroE-^eTaq TTec"I
o^-rasrsrsodlas TTe3"I
rnpunhizr)iEx#'llJdo /\ow
:
-rnpuntrdqeISuerI
T)iex
lelI
T{P{
t senf
un-rn1 i
un-rn1 i
T{1 nteulj
Tlie{
1e)i6u i
sur00T-.4ETaa TTecl
o^.rasrsrsod?as TTPcT
suog-^ETac TTerT
o^fasrsrsodlas TTEsT
sur0g-^ETao ITpc.I
o^.rasrs-tsodlas TTeJT
suroE-^eTac TIEsT
o1\f,asrsrsodlas Tlec-l
:npunhlTr{Px+'E,ldo AoI^i
:
.rnpunl^JrlE{6ueT I T{e}l
TTP'T
o^"ras-Fs-Fsod?es
TTCT
o^.rosrsrsodlas
o^-resTsTsodlas
un-rnl j
o^.resTsTsodlas
o^]asTsTSodlas
o^.rasrsrsodlas
r{exunf n&TaqE&+' llI,dc
TTECT
TEC'I
TEJl
TIC.I
..\O',I
:
r){ex9un-rn[
1au
seutarlT sEnlI
T SenJ-Sen.r u{seuraT l
-i{e>t
IIe{ 9 uelsn-rnT
surO o
918)i6uvi
g-xeTao
T{ex91eI6uv
{TlapT-^ETeC
rYx9snfnlfasae
TEC'I
TTP3T
T TPC'I
TTEC'I
TEJ'I
:
^qpue?s
rfrpfag
rvpvounf
I
!
sur0 0
n.T.
g-.{eTeG
leE
T
T
TEST
TE3'I
I
L L9V
^qpue?S
dnaltEM
l all
sur00T-^PIaq TTr.I
-rnpunl^Iueuexuepeg TTeoT
suooT-^ETeo
TTec.I
.rnpunwTfTxuepe8 TTec.I
:
Tapohl-rnpunli
1au
suro0T-xeTao ITec.I
1E)i6uvueue{uEpEg TTec.I
suro0T-^eTaG TTerT
1e{6!rvr.rrxuepeg
TTecT
Mov
Lca1l
LcaIl
Lca11
LcaIl
Lcall
LcaIl
Lcall
LcalI
DPTR,
#Kaki3Mundur
SetPosisiservo
Delay-5OmS
SetPosisiservo
Delay-5Oms
Set.PosisiServo
;angkaL kaki
;maju kaki
;
Eurun ruas
t.urun kaki
Delay-SOmS
SetPosisiservo
Delay-10OmS
ReE
Kaki 4 Langkah.I'{undur
Mov
Lca1l
Lca11
Lcall
Lcall
Lcall
Lcall
Lcal1
Lcall
DPTR,
+Kaki4Mundur
SetPosisiServo
Delay-5OmS
;angkat kaki
SetPosisiservo
;maju kaki
SetPosisiservo
;turun ruas
Delay-5Oms
De1ay-5OmS
SetPosisiservo
;Eurun kaki
Delay-10OmS
ReE
Kaki5LangkahMundur:
Mov
Lcall
Lcalf
Lcall
Lcal1
Lcall
LcaIl
Lcall
Lcall
DPTR,
#KakisMundur
setPosisiservo
Delay-5OmS
SetPosisiServo
Delay-5oms
SetPosisiservo
Delay-5OmS
SetPosisiservo
;angkat kaki
;maju kaki
;Lurun ruas
;turun kaki
DeIay-10OmS
Ret
Kaki6langkahMundur:
Mov
LcaII
Lcall
Lca11
LcaIl
Lcall
LcaIlLcall
Lca11
DPTR,
#Kaki6Mundur
SetPosisiservo
Delay-5OmS
SetPosisiServo
Delay-5oms
SetPosisiServo
DeIay-5oms
SetPosisiservo
;angkat kaki
;maju kaki
;turun ruas
,'Eurun kaki
Delay-10OmS
Ret
KakillangkahMaj u:
Mov
Lcafl
LcalI
Lcal}
Lcal1
Lcafl
Lcafl
178
!\
DPTR,
#KakilMaju
SetPosisiservo
DeLay-5OmS
SetPosisiServo
Delay-5Oms
SetPosisiservo
Delay-5OmS
;angkat kaki
;maju kaki
;turun ruas
6Lr
o^fasrsrsodlas
o^"ras-!s'FSodles TIP3T
r{e{ n[Pu1
ITe3l
E Snr un-rn1 j
Tlte)t 1{6ue
sur0E-.{eTeO
TTET.I
surog-xeTac TIer.I
o^-rasrsrsodles TIecT
ntPI^Igr{eI+'UJ,dO ,\o?{
:
ntehJqelSue.Ig r)iex
l all
-J{e}{ un.rnl
suro0T-xeTaG TIecT
t sen: unJnl i
r)ieli n[eur]
o^-resrsrsodlas TlecT
SuOE-^ETaC TIeJ.I
o^.rosTsTsodlas TTecT
suro9* eTao TTec.I
o^-rasTSTsodlas TTeJ.l
suroE-IeTaq TTEo.I
o^jrasrsrsodlas TIecT
o^.rasTsTsodtas
o^-resrsrsod?as TIesT
T{e{ un.jrnl
t senr unrnl
rltP{ leI5ue
ntewgT){EX+'UJ,dC
:
AoW
n teI^JqE)i5ueT9
Tlex
1aE
slro0T-1\eTeo TTec.I
surO9-^eTao TIPcrI
TTecT
surog-IeTac ITec.I
o^-rosTsTsodlos TIec"l
nFehITT{ex+',uJ,dc 1\o}{
1e}t6ue i
o.1\Jasrsrsodlas ITec.I
r>te{ n[eul
Tlte{
SUIOE-^PTeO TTE3.I
:
nIe]^Iqe{6uE1?r>[x
l all
TIe{ unjrnl
t senf, unrnl
.l
rlie){ n[eu]l
r{e}t le){ouej
surooT-^elao TIe3.I
o^:asTsrsodlas TIPc.I
slrog-^ETaq TIesT
o^.rssrsrsodlas TTe3.1
suog-^eTac TTeJ'I
o1\-:aqTsTsoelas
TTe3T
suoE-^eTac TTe3.I
o^.rasTSTsodlas TTe3l
nteWEr{eX#'EJdC ,\oN
;
nIewqe{.6ue.Ie T{ex
1aE
r{e{
un-rn1 l
E Snf un.rn1 j
r>[e]i n[eurj
T{e}i 1e{6uEl
suro0T-^ETac TTec.I
o^-rasrsrsodlas TTe3T
suro9-^eTao TTec.I
o^,rasrsrsod?as TTec.I
suog-.^eTac TTesT
o^.rasTsTSodlas TTecT
suroE-^Taq
TTe3.I
o^fasrsrsodlas TTecT
/EJdc
Aow
nteldz-l)iex#
n t pI^Iq>t6uerI
rIeX
1aE
T{eI unJnl j
suro0T-^eTao TTec.l
o^Jasrsrsodlas TTec.I
Lca11 Delay_5oms
Lcal1 SetPosisiservo
Lcal1 Delay-1-0OmS
turun kaki
Ret
Kaki6Langkahlurus
Mov
Lca11
Lcal1
Lcal1
Lca11
Lcall
Lcall
Lcafl
Lcall
#Kaki6lurus
DPTR,
SetPosisiservo
Delay_5omS
Set.PosisiServo
Defay-5Oms
SetPosisiservo
Delay_5OmS
SelPosisiservo
;angkat kaki
;maju kaki
;Eurun ruas
;turun kaki
Delay-10OmS
Ref
Kaki 5Langkahlurus
Mov
Lca11
Lca11
Lcall
Lcall
Lcall
Lcall
Lca1l
Lcal1
+Kaki5lurus
DPTR,
SetPosisiServo
Delay-5OmS
SetPosisiservo
Delay-SOms
;angkat kaki
;maju kaki
SetPosisiservo
,'turun ruas
SetPosisiservo
;turun kaki
Delay-50mS
Delay-10OmS
ReE
Kaki4Langkahlurus
Mov
LcaII
Lcall
Lca11
LcaIl
Lcall
Lcall
Lcall
Lcall
#Kaki4lurus
DPTR,
SetPosisiservo
Delay-5OmS
SetPosisiServo
Delay-5Oms
SetPosisiServo
Delay-5OmS
SetPosisiservo
Delay-l0OmS
;angkat kaki
;maju kaki
;
turun ruas
;Eurun kaki
ReE
Kaki3Langkahlurus
Mov
Lcall
LcaIl
Lcall
Lcall
Lcall
LcaIl
Lcall
LcaIl
DPTR,
#Kaki3lurus
SetPosisiservo
,anqka! kaki
SetsPosisiservo
;maju kaki
Delay-soms
Delay-5Oms
SetPosisiservo
;turun ruas
Delay-5OmS
SetPosisiservo
turun kaki
Delay-l0OmS
Ret
Kaki2Langkahlurus
Mov
Lcall
Lcall
LcaII
Lcall
Lcal1
180
DPTR,
#Kaki2lurus
SetPosisiservo
DeIay-5OmS
;angkat kaki
SetPosisiServo
;maju kaki
SeLPosisiservo
;turun ruas
Delay-5Oms
18I
HdC
.IdC
.ro1ol^Idol surT-r Tx
90+ '91I
t0#'Lu
"ro1o]^Idol surr-r Tx
z0*'9tI
t0*'tE
dod
dod
lTECT
AOrd
1\Or.tr
l TEJ'I
1\Or{
r\Olitr
1\ON
z0#'98
/!OI{
TTECT
JOI Or{do1SrUrf, rX
ZO+,LE
.^OW
90+'98
lTEf,T
o?ohldo?surT:Tx
-u
ZO*,LE
lr0w
1lOr{
90#'9lI
TEC'I
-rolohldolsuTf -tx
TO+
,LE
.ro1ol^Idol surTir TN
1\OW
Tlec'I
r{snd
Hdc
qsnal
TdCI
AON
/\OI,{
z0+ '9u
T0#'Lli
:
seuralesenu j
SVNU SNI,INOEAOS I
1eE
T{e{
T)ie{ un.Inl j
1e{6uEJ
TIe)i 1e{6ue
t senf un-rnl
T{e{
i
,
1e>t6ue j
T)ie{ nleui
T{e)i lP){ouej
Tlie{ lp){ouEl
surooT-^eTeq TTEoT
o^.ros'rsTsodlas TTEc'I
o^rasTs'Fsodlos TTecT
slroE-^eTao TTPrl
o^-rasrsTsod?as TIecT
o^.rasTsTSodles TTecT
suroE-.4eTac TTec.I
o^-resrsrsodlas
TTecT
o^.:rasTSTSod?as TTecT
surog-xelac lTerT
o^-rasrsrsod?as
o^.ras-FS"lsodlas
TTe3.I
TTPc"t
snrnlqe6uaJ,T>tex,I+'E,IdG
:
1!ol{
sn-rnTqP6uaJ,r>{E)I
1aE
r{e{ un:nl:
E Sen-r unrnl i
r{e)i nleul
T{P{
1e}i6ue i
surOoT-xeTao TTec.I
o^jras-FSTsodlas TTe3.I
suroE-^PTaG lTec.I
o^-rasrsrsodlas TTec.I
suoE-^eTaq TTPcT
o^.rasrsrsodlas TTesT
suos-.{eTaq TTec.I
o^.rasTsrsod?as TleJl
/u&dc
AoR
sn-rnTTr{ex#
sn-rnTr{el.oue1T T{ex
laE
T{e{
un-rn?
surooT-^eTac TTec.I
o^-rasTSrsodles TTea.I
suog-^eTaG TTec.I
Lcal I
DPTR,
#TabelAngkatRuas3
Set.PosisiServo
LJCal- -t
setPosisiServo
Lca11
Set.PosisiServo
LcaIl
Lca11
Lcal1
;angkat ruas
setPosisiServo
SetPosisiServo
SetPosisiServo
Ret
ceserlurus 6Kaki
Mov
Lcalf
Lcal1
Lcall
LcalI
Lca11
LcaIl
DPTR,
#TabelLurus6Kaki
SetPosisiservo
lurus
angkat
SetPosisiServo
SetPosisiServo
SetPosisiServo
SetPosisiServo
SetPosisiServo
Ret
Ruas2Lemas:
Push
Push
Mov
Mov
DPH
DPL
R7, #01
R6, #03
Lcal1
KirimStopMotor
Mov
Mov
R7, +01
R5, +07
Lcal
KirimstopMotor
Mov
Mov
P''7 ,
#02
R6, #03
LcaIl
Kirimst.opMotor
Mov
Mov
R7,#02
Lcal I
KirimstopMotor
Mov
Mov
R7, #03
R6, +03
Lcall
KirimstopMotor
Mov
Mov
R7, #03
R6, #07
LC
R6, +07
I-L
KirimstopMotor
Pop
DPL
D^h
rvP
DPH
Ret
SUBROUTINE RUAS
1.
Angkat6Kaki:
Mov
Lcalf
LcalI
Lcall
Lca11
LcaIl
Lcall
ReE
782
DPTR,
#TabelAngkat6Kaki
SetPosisiServo
SetPosisiServo
SetPosisiServo
SeEPosisiServo
SetPosisiServo
SetPosisiServo
8I
E&dG
urT-rTx
3Ifr
cl\oI^I
lltrdc+vo,v
1\OW
v'0110
cur
01I
.{\oI^I
O1IO
cur
cur
OE
!
!
!
E.Idg
lroI^I
00#'v
TO
.ro1oI^II
!
!
V,
.1\oI^I
00#'v
Cl\OI^I
E,tdo+vo'v
1\Or,I
70#'080
cur
AOtr{
OEA
OE
cur
0u
o.rluoXqe?ur-rad #'
.ral:Jna# ' 0u
l1otr^I
I'otrI
AOI{
00+'v
AOr.I
C/\OI^I
E,tdc+va'v
v'urnN1a6-reJ,
cur
u,tdo
-raTTo-rluoJ o^.ras
r{TT#
?a6-rEJ, I
(8o-uso
'ad J1a6-ref,,
:
0E-lrso)
Aotr^I
o^rasTsTsodlas
1a{edu1:TX d*[t
Ao,{
91I'Z+falln8
AoN
L0+'I+fefJnS
,rlotr{
Z0#'-ra]l:n8
loqoErouroN*'ssa:ppvacT^aq 1!ow
15'um51a6:e[ ^or[
'ed J,1a6.reJ, lloinl
r{TT#
rolowdolSUrrJr)I
1au
doa
dod
HdC
.IdC
.ro1ol^Idol sluT-: TX
80# '9E
rIE3T
1\ON
1!otr{
t0#'91i
l\o,.I
I TC']
t0#'Lu
rx
.rolol^Jdolslrrr.r
t0#'Lu
l1Or.I
.r\oI^I
80+'98
I T EC'I
.roloLldol slur-r rx
z0+'tu
.rolol^IdolsurTf T)I
1\Ofi
rrecr
AON
ZO*, LA
AOL{
t0+ '91I
-ro1ol^IdolsluTf Tx
80+'9u
1\OW
10#'ru
rolowdolsurTfTx
,0+'9u
,
AoInI
ITECT
AON
AOW
LlI
TO+
rlsnd
qsnd
TdG
HdG
:
seureTTsenu
Mov
Movc
Mov
Inc
Inc
A,#00
A, EA+DPTR
GRO,A
R0
DPTR
i
;
KirimPaket;
Push
Push
DPH
DPL
Lcalf KirimPaketData
LcalL AnrlcilDataSeriaf
Pop
Pop
DPL
DPH
Ret
AmbilDataSerial:
Lca1l
Serial_In
A,#lEh,AmbilDataserial
Cjne
Lcal.l- SeriaI In
Lcall
Serial In
Lca1l
Serial_In
Lcall
Seria1 In
Lca-l1 Ser]-al In
Mov
B,A
Mov
R0, #Buffer
Mov
GRo,A
RO
InC
LoopDataln:
Lcall
Seraa-l fn
Mov
GRO, A
R0
Inc
Djrlz
B, LoopDatafn
LcalI
Serial_rn
Ret
KITIMPAKCLDAI
Lcafl
AwalPaketMaster
Mov
Mov
Mov
Lcall
R0,
Mov
R0,
LoopBufferout:
A,
#Buffer
@R0
R7,A
SerialoutCS
#Buffer+l
Mov
A, GRO
Inc
R0
Lca11 SerialoutcS
Djr,z R7, LoopBufferout
Mov
A, +00
Clr
C
Subb A, Checksr-mDaLa
Lcafl Serial_out
Ret
784
dari DSR-08)
98r
nterfuepe8 durft
n[el^JuEueXupETaqe&+'lltdo
:
..!oW
fp{ouvueuExuEpeE
n[e14uepeg durl'I
.rnpunl^Jueueypsq,I+'u,ldo
:
..\oI^I
-rnpunwupuexuEpeg
ntel^JuEpeg durFT
-rnpunwTrTxpaq[#'tt,tdo AoI^I
:
f,npun {TfTxuepeg
1au
V
'eleoumsltoer{J
pleGlrnsIcaqJ 'V
?no-Ter-ras
:
.^or{
ppv
TEC'I
sJlnoTT_ras
v ' elPcums{caqJ
/1'oI^I
JUI
OE
ppv
elecurns{ceqc'v
v'0u0
.^'oI^I
:
-zaJl:n8a^es
1eE
sJlnoIeT-ras
TTEs'I
'v
ssa.rppvacT^aG
.1\oI^I
c1)anoTPTfac
olacrAeo# /v
TEJT
1\Or{
sclnoreT.ras
TTECT
urnNac-rnos'V
.^ol{
sJlnoTET-ras
V'
1.re1s j
TTECT
AOI^I
eleoums{3ar{J
1\oI4
ad J,eclnos'V
.{\or.I
XJS+,V
TTPCT
lno-TeT-ras
:14{edTer v
1au
sJlnoTET-ras TTecT
ssa.rppvaJr.l\ao'V 1\ol{
sJlnoTEr.ras TlecT
..rotr{
oIecT^eo+'v
sSlnoTer-aas
urnN?46-rEJ,
TTesT
'v
1\oW
sJ?noTeT:as
AoN
TTecT
V'elecurnsIcaqJ
?no-TEr,ras
xls#'v
TTecT
,\ol,I
ad J,1a6-reJ'v
1!otr{
-re?sEN1a{edTer
Mov
DPTR,
BadanMaju:
Lca11
LcaIf
Lcal1
Lcall
Lca11
Lcafl
Lca11
Lca1l
Lca11
Lca11
Lca11
Lca1l
Lca11
Lca11
Lca11
+TabelBdnKiriMaju
SetPosisiServo
SetPosisiServo
Set.PosisiServo
SetPosisiServo
SetPosisiServo
SetPosisiServo
Delay-10OmS
setPosisiServo
SetPosisiServo
SetPosisiServo
Delay-10OmS
SetPosisiServo
SetPosisiServo
SetPosisiServo
SetPosisiServo
Ret
PutarKiri-:
#TabelPutarKiri
Mov
DPTR,
Lca11
LcaIl
Lcall
Lca1l
SetPosisiServo
SetPosisiServo
SetPosisiServo
SetPosisiServo
SetPosisiServo
SetPosisiServo
Lca11
Delay-10OmS
LcaIl
Lcall
LcalI
SeEPosisiServo
Lca11
Delay_10oms
Lcall
Lca11
SetPosisiServo
setPosisiServo
SetPosisiServo
SetPosisiServo
SetPosisiServo
Lcall
f
Lcal1
l,ca I
Lca11
Lcal-l-
Delay-10OmS
Delay-10OmS
Kaki 6LangkahMaj u
KakiLLangkah.l4a ju
Lcall
LcaIl
LcaIl
Lca11
Lca11
KakiTengahlurus
Kaki 3 Langkahlurus
Kaki 4Langkahlurus
Ret
PutarKanan:
DPTR,
LcallLcall
Lcal1
Lca]1
SetPosisiServo
SetPosisiServo
SetPosisiServo
SetPosisiServo
Lca11
LcaIl
Lcal1
Lca11
Lcaf1
Lca11
Lca11
Lcal 1
Lca1l
l,cal
186
#TabelPutarKanan
Mov
setPosisiServo
setPosisiServo
Delay_1
0 OmS
SetPosisiServo
SetPosisiServo
SetPosisiServo
Delay_10
OmS
SetPosisiServo
SetPosisiServo
SetPosisiServo
L8L
Jnpunur
n[eu]
n[eur
n[Eu]
1e{6ue
lEltoue
1e{6ue
sn.znT
sn-anT
sn.Tnl
T{ex
rvpv
I
I
? T)tex I
Z
g
E
TYPV
T{ex j
T)tpx
T{ex
I
1
z sEnE.l
z senu j
z senE I
r{08'0I't0'I0
I{08 ,OT ,LO ,EO
q08 '0T ' L0'20
r{08'9T'L0'10
q08'8T'?0'e0
q08 'LT 'VO'20
q08'8T'?0'T0
q08'T'80'80
q08 'ET ' EO'ZO
'T0
r{08
'tT 't0
nFeur
T)[EX I
1e{6ue
Tvpv I
T{ex j
T)tex i
T)tex I
fnpunur
,rnpunu
-rnpunu
1e)t6ue
1e)t6ue
sunT
sn,rnT
sn-rnT
g
E
j
? tvpv
z
I{ex
z senu I
z senu I
z snu I
T]IEX I
so
AC
ao
ao
ao
so
ao
ao
ao
ao
sG
SC
ac
so
ao
ao
AG
AO
sc
ao
ac
Iel^Jueue)upgIeqeJ
SO
ao
jrnpunl^Irf TXpgq&
q08'9T'80'80
r{08 '9T '80'20
q08 '9T '80 'T0
I{08 ,TT , LO, IO
q08 '9T 't0 '80
q08 '0T ' t0'20
r{08'0T't0'T0
r{08'8T'80'e 0
r{08'LT'80'20
i.I08'8T'80'T0
r.I08'tr'L0't0
r{08 'tT ' L0'20
r{08'eT'L0'10
:
un-rnl I r{ex
unfn? e r{px
un-rn1 T Tliey j
n[pur T r){EXj
-rnpunu 9 T)tex i
lnpunu , T{exl
:npunu z T{exl
?eI5ue E T>{exi
?E){6uE E TltEXr
1E>[6ue
sn-rnT z snuJ
sn-rnT z sEnEj
sn-InT z senE j
:n
ao
ao
so
so
so
SC
Eo
ao
sc
ao
ao
sq
a6
Ier{r-rrXrrp8T aq,],
OAUSS NV)rVUEE
TESVJ
======
!'
1aE
sn-rnTqe{5ueT?T}tPx TTec.I
sn-rnTq{6ueTeT{ex
sn.rnTqP6uaJr{ex
ntel^IqE{6up.ITr{eX
TTE3T
TTecT
TTecT
ntEWrIE{EueT9T{eX TTecT
suro0T-.{EToc TTec.I
Sur00T-1{eTaO TTer.I
DB
DB
DB
01-,04,1-5,80h
02 ,04
,15, 8 0h
TbBdKananMundur:
01, 07, 13 , 80h
DB
;Ruas 2 lurus
;Ruas 2 lurus
;Ruas 2 furus
DB
DB
02,01,13,80h
DB
DB
DB
01,08,18,80h
02,08,17, 80h
03, 08, 18, 80h
;Kaki 4 angkat
;Kaki 6 angkat
DB
DB
DB
DB
01,03,16,80h
02,03,16,80h
03,03,10,80h
03,07,16,80h
;Kaki
;Kaki
;Kaki
;Kaki
DB
DB
DB
01,08,15,80h
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
DB
;Kakj- 2 angkat
1 maju
3 maju
5 maju
6 mundur
,1s , I 0h
03, 08, 15, 80h
02 ,08
TabelPutarKiri:
02,03,13,80h
;Ruas 2 lurus
;Ruas 2 lurus
,'Ruas
0L,04,18,80h
;Kaki 1 angkaE
;Kaki 3 angkat
;Kaki 5 angkat
02 ,04 ,17 ,
0h
02,0'7,15,80h
02,04,15,80h
TabelPutarKanan:
188
;Kaki 1 turun
;Kaki 3 Lurun
;Kaki 5 turun
2 furus
;Kaki 2 maju
;Kaki 4 mundur
;Kaki 6 mundur
;Kaki 1 turun
;Kaki 3 turun
;Kaki 5 turun
DB
DB
DB
0L
02,07,13,80h
03,01,13,80h
;Ruas 2 lurus
;Ruas 2 lurus
;Ruas 2 lurus
DB
DB
DB
;Kaki 1 angkat
;Kaki 3 angkat
;Kaki 5 angkat.
DB
DB
DB
01,03,10,80h
02,03,10,80h
;Kaki 2 mundur
;Kaki 4 maju
;Kaki 6 maju
DB
DB
DB
02,08,1-5,80h
03, 08, 1s, 80h
;Kaki 1 turun
;Kaki 3 turun
;Kaki 5 turun
V
68r
un-rnl T senu i
dels g sengl
nfeu Z senE,
T sengl
1e:16ue1p
un.rnl T sEnuj
deTs e senul
sn.rnT Z senu i
lP){ouPrp T senEi
un.rnl T
sEnUJ
dPTs e sPnui
snJnT z senuj
r{08'02'?0't.o
le){buerp T sPnul
ac
Eq
gcl
EA
n[er[TT{pX
EICI
sq
scr
SNf,NTETIEX
EIG
EIG
go
sn-rnT7T{ex
Ecr
so
EG
EG
deTs t senul
snjtnT z senu,i
ao
EIG
EG
EICI
EC
:
SG
r{08'02'80'20
q08'9T 'V0'20
r{08 'tT '20'20
rIOS , ET , I,O'ZO
q08'02'no'20
?e}{6uerp T spnEj
sn.rnTtr{ex
ECI
ac
gcr
Eq
un:n? T senul
ders senEj
snJnTgT{eN
q08'ET'50'20
unrnl T senEJ
dels g seng:
sn-rnT z senul
T senE j
3e>16uerp
unf,nl T senEt
dels g sengl
sn-rnT Z senu j
leIEuETp T senuJ
un-rn? T senu j
snrnT Z sPnEi
fe{6uTp T sen6l
sun.IZT)iex
so
aq
so
EA
: SNf,NTTTXE)I
I{08 ,CT
sn:nT?r}[EIzsenuj
fnpunurTTliE){zsPnuj
sn.rnTtT{eIZsenE!
rnpunu9T)ieyZsenuj
T T{e{ z senu j
sn.ilnT
-rnpunuE-I{e>{zsPnu,
sn.znT9TXe>{Zspnuj
-rnpumuTT{e{zsenu,
EIG
ao
EIq
aq
ECr
so
ueuex6uorasTeqe,I,
LO,ZO
EG
ao
EG
so
r{08 'TT
q08
AO
'1r '10' z0
:
Eo
T-rrX6uo"raSTaqeJ
Kaki2Maju:
DB
DB
DB
DB
01-,08,20,80h
01-,07,15,80h
01, 06, 14, 80h
01, 08, 15, 80h
Kaki 3Maj u :
DB
DB
DB
DB
02,02,1-3,80h
02,04,15,80h
Kaki4Maju:
02,08,20,80h
DB
DB
DB
DB
Kaki 5Maj u
02,04,20, 80h
02,03,15,80h
02,08,15,80h
;Ruas
;Ruas
;Ruas
;Ruas
1 diangkat.
2 maju
3 siap
l- E.urun
;Ruas
;Ruas
;Ruas
iRuas
2 maju
3 siap
1 turun
;Ruas
;Ruas
;Ruas
;Ruas
2 maju
3 slap
1 turun
;Ruas
;Ruas
;Ruas
;Ruas
1 diangkat
2 maju
3 siap
1 turun
DB
DB
DB
DB
Kaki6Maju:
DB
DB
DB
DB
KakilMundur:
DB
DB
DB
DB
Kaki2Mundur:
DB
DB
DB
DB
Kaki3Mundur:
DB
DB
DB
DB
Kaki4Mundur:
DB
DB
DB
DB
03,04,20,80h
03,03,11,80h
03 ,02
,14, 80h
03,04,15,80h
190
l- diangkat.
03,08,20,80h
03 ,0'7 ,L2 ,80h
03,06,14,80h
;Ruas 1- diangkat
;Ruas 2 maju
;Ruas 3 siap
;Ruas 1 turun
01-,04,20,80h
;Ruas
;Ruas
;Ruas
;Ruas
03,08,1-5,80h
I diangkat
mundur
3 siap
1 turun
1 diangkat
2 mundur
3 siap
I turun
01,08,20,80h
01-,07 ,11,80h
;Ruas
;Ruas
;Ruas
;Ruas
02,04,20,80h
02,03,11,80h
02,02,13,80h
02,04,15,80h
;Ruas 1 diangkat
;Ruas 2 mundur
;Ruas 3 sj-ap
02,08,20,80h
;Ruas 1 diangkat
;Ruas 2 mundur
;Ruas 3 siap
02,01 ,15,80h
02,06,14,80h
02,08,15,80h
,'Ruas l- turun
Ruas l- turun
KakiSMundur:
DB
DB
DB
DB
1 diangkat
03
,04,20,
80h
03,02,14,80h
03,04,1-5,80h
;Ruas
;Ruas
;Ruas
;Ruas
1 diangkat
mundur
3 siap
1 turun
t6r
q08 'ET '80 '0
q0 8 ' ET 'n0' t0
r{08 '7T '80' ZA
q08 'gT 'v0'20
q08 '?T '80 'T0
,NO,IO
I{08 , ET
sen-z uE>{dPrs i
senu i
SPNEJ
senEa
senui
senEl
'02
so
sc
AO
Eo
ACI
sG
Eq
sc
sq
ECI
SG
ESenule{6uYTaqE[
r{08'02'80'E0
r{08'02'70 '80
It08 '02'80 '20
q08 '02 '?0'20
rI08'02'80'T0
'10'10
r{08
rc
Eio
sG
sG
sq
so
T{ex91e}i6uvTaqPJ,
so
Eo
ss
ECr
ECI
so
T)iex9sn.rnrlTeqeJ,
'?0'e0
:
senE
EO
SG
un.rnJ,ET)iex
I{O8,EZ,90,TO
r{08'9T'80'T0
:
senE i
un.Tnl
z
I
I
ao
rxPxun.rnJ,Taqe&
r{08'ET'90'E0
q08 'eT '20't0
q08 '?T ' 90' z0
q08 'er '20'20
T{08 , ?T ,90 , TO
'ZO'rO
q08 '9T
I SPnjr ?e{6uer
q08'?T' L0't0
q08'tT'80'e0
ri08 'TT ' L0'20
q08 'eT 't0'20
I{O8,ET,LO,IO
'T0
r{08'ET't0
ire>tcns lopes i
unf,n1 9'r{e)iTsenul
.ra{cns lopas
un.rn1 zT)|exTsenEi
senu.'
unfn?
deTs
dPTs
sn-rnT
snf,nT
1P{6ueTp
1P)i6uetp
AC
so
unf,r\LzT{Ex
q08'9T'r0't0
sG
r{08'9T'80'T0 so
q08'eT '20'to
acr
i.I08'?T'90'T0 ACr
r{08'e r't0'80
rro
I-IO8,ET,LO,TO EG
q08'02'?0'80 ro
q08'02'80'T0 8(
: sn-rnTqEEuattr
r{E5uaf
un.rnl T senEl
dels g sengl
-rnpumu Z sEnU I
lPI6uPrp T senEl
-[
xEx,],
T{e{ ue{e.re6-ue1e:ao
r{08 '9T
ao
EO
sq
'80'E0
I{08 , ZT ,90
r{08 '9T'L0'e 0
r-I08'02'80'80
Eq
AG
-rnpunl^I9T{e}I
Inac serfar:
MOV SCON, #52H
MOV TMOD,+2OH
;
A,TMOD
Mov
A, #oFH
AnI
A, #20H
Or1
TMOD,A
Mov
MOV TH1, #OFFH
Setb TR1
MOV PCON, #8OH
; Mode 1 Ren
; T0 Mode 2, T1 Mode
51600
RET
Serial-Out.:
C1r
Mov
TI
SBUF,A
'lungguK1r rm :
Mov
Mov
Jnb
CIT
0A6H, #lEH
0A6H, +0E1H
TI , TungguKirim
TI
Ret
Serial_In:
Clr
RI
TungrguTerima:
Mov
Mov
Jnb
Mov
CIT
0A6H, #lEH
0A6H, #081H
RI, TungguTerima
A, SBUF
RI
Ret
KirimPesan-SeriaI
Mov
MOVC
Cjne
A, *00H
A, GA+DPTR
A, +0FH, KirimTerus
Ret
KirimTerus:
Lca11 Serial-Out
DPTR
INC
Ajmp KirimPesan-Serial
SUBROUTINE DELAY
Delay_ldetik:
Mov
Counter-Sms,
#0200
Tunggu_l-detik:
Lca11 Delay-SmS
Mov
0A6h, #LEh
0A6h, #081h
Mov
Djnz Counter-sms,Tunggu-ldetik
Ret
Delay_50oms:
Mov
Tunggu_5 0 oms
Lcall
Mov
Mov
792
it
Counter-sms, #0100
:
Delay-5mS
0A6h, #1Eh
0A6h, #0E1h
7
e6r
'Jnpun(U
.Z
uBr,{!lB'I
1au
doa
HLo
SI^I0S^eTapdooT'LE zul1
qTEO#,q9V0 AoI^I
qsT#'r{9v0 1!ow
SurE-^eTac ITEc.I
:
51a19
0T#'LU
HLo
gzlelepdool
1\old
qsnd
E-.{e1eq
: 5urg
1aE
oor{,r
OEf
dod
fTJ
:
surE-r{epns
SUE-n55unJ, d*!t
falunoc 1-Iq 9T
apol^I -raurrJJ
cqIl
Surg-n66un;
oEJ qlas
l\ohl
Hddo# 'OT,t
,OH.I 1'OW
HOEO#
HTZ+,COI^IJ AON
qow,t qsnd
:
SUJE- TaG
1aE
Stlr0O1-n66unJ,/Surg-JalunoJ zulq
r{TEo#'r{9v0
r{ET#'r{9V0
SurE-IeTao
:
Aor^I
1!ohl
TTec.I
gu:gg1-n66un;
020#'surE--ralunoJ
:
AoI^I
Suo0T-^eTaC
fau
SUro 0
9-n66unJ
'
Surg-.ralunoJ zulq
794
4.
5.
96t
'lnqesJel 6uBro qefem leue6ueur/rlnlr6ueu: rpedas 'n1ueya1 rs{p uel
-nIBIer.u Inlun loqoJ r{olo sesoJdrp uerpnual 'relndurol qalo sesordrp
nlel 'ue)qern/eratuec qalo rslelaprp ersnueu qefem 'e{uyesq4 '(uott
-)pJelul loqod-ueurnpl) loqor upp prsnupur eJBluB rs{Bre}ur }pnqureu
ledep ppuv '13uedg ue6uaq 'B>lrloqor eped qelepe er{uuedeteuad
nles qplBS 'uorsrl relndruoe uBr6ord re6eqas ueleun6rp 1er{ueq
rur lees 6uer{ ++3 uelsrseqJeq e)Jnos uado urerDord qelepe 13uedg
nCuodo uelooJd
eleu
uBnlnqBpuod
T
Bab 8: Computer Vision untuk Robot
e-
\P169"** FilesropenCv\lib"
*r*:.:iini
lhrn
lSsou*cmtrot si*i***--**T
Edlor
l*l
Text
i$il;;;
*"
,-:":""*"
direclories for:
[h*\,ril",
";
yjafE,rjtl
-
l$(vLlosldlDir)lib
.{ l.b:sslns Errr,:*;;ffi;b,;"-.;J{'\hb-
:iJLrevrte'ool, ffirtrm:U(llh\0rtrEletre
i$(r(IniitsllDir)Fldborm50K\lib
i' r ttT|,,tL D"r,**,
j'-it,o'::,:.
uertsuttS
1
ii
!i
rts
t:
^':"l:
VL++
i
I
i::ri
Xl'lL
',
LrarfreHorE5UKU[]lfi
ffiM
:
r
BUIId
Dire.tories
Web 5eitinqs
!c++
ll3windowsFtrroDtriqrer
i
I
l,nt11i:1:1,);11i,i;,.;1:11
OEiBffir
Libtaly
;,1r;;11g11s
Oirrtt{iiaj
["llt-J
VC++ proiect,
qfrrt
i tlr
196
L6l
alnc
aieut uertndueuatu
uteJfioJd
cdf'cru ouloc
:qelurrad ue6uep
ueluelef nele eldtcrel 6uBf exe' elIJ Isn{esla 'tseltdtuollp t{PIeleS
'0rnopur716patueN^) ueqeun66ueu ue>11rdrue1rp nlpl'0eDeu1po1nr
ueleunDEueur ue{Iraq p}ll 6uer{ 6dt alIJ ppoletu uP{e selp rp uer6or6
j ( ,,tIVgi^IVe-lVldSIC-t{o1uoJ,, ) &lopurM^of lsac.I\c
r (6urT{ ) oEEulIaseaTaU/\J
I ( sz I So&ov-MocNIM-AJ
",
uVAWVS-IV.Id
j (0)^aylreM c
) a6euIAol{s^c
Ic-qoluoC,, ) 1{opurMpaureN^c
*a6eur11d1
1u-J ) uTPllr
1ur
<q'rn6q6rq> apnT3ur#
<q'.1\3> apnTcuT#
rq'oruocr
apnTJuT#
,,r{'xlep?s ! apnlJur+
uro3'
Elruo"rl{aIa-o{o1'/v\.lwh
lnurr
uloc'
loqo-r-o}tol'/vta.ryI //
/
/
^a /
-zequrE6 ueriTTdureuaur urE-r6oJd ouJoa
sddc'ouec
#include "stdafx.h"
#include <cv.h>
#include <highgui.h>
#include <math.h>
int main( int argc, char** argv ) {
CvPoint center;
double scale=-3,'
IplImage* image = a:rgc==2 ? cvloadlmage(argrv[1]) :
if ( I image) return -1;
center = cvPoint (image->width/2, image->heighL/2) ;
for (int i=0; i<image->height; i++)
for(int j=0; jcimagle->width; j++) {
double dx= (double) ( j-center.x) /center.x;
doubfe dy= (double) (i-center.y) /center.y;
double weight=exp ( (dx*dx+dy*dy) *scale) ;
uchar* ptr =&CV-IMAGE-ELEM(imaqe, uchar, i, j *3 ) ;
ptr [0] = cvRound(Ptr[0] *weight) ;
ptrtl) = cvRound(Ptr[1] *weight);
ptrt2J = cvRound(ptr[2] *weight) ; ]
cvsavelmage( "coPY.Png", image ) ;
cvNamedwindow( "test", \ );
cvshowlmage( "test", image );
cvwaitKey(
return
0;
);
0;
198
I
[_
66I
i
J
0 u-rnla-r
( a-rnlde3d5 )arnldeCasEaTaE,\c
e-rn1de, oapr^ Tseurvaa& / /
r /-r-rap1s)Jlur-rdl
{
)
( aure.rJoapr^di )lT
i ( e-rnldEJd )aulE-rd^-ran0^J = aure-rdoapr^d
]
(++r 1t>I i0=r),rol
oeprA auP-rJ e TTqurv //
,
_ uJnle-r
f
j ( !u\upcqaa TsesrTersrur lEbee ,, '-r-repls)
Jlur]dl:
j(
( a:rnldEJdi )lT
)I^IVJulo.r.{e-rnldpJAJ = a.rnldeJd
^NV-dVC-AJe,rnldEc oapT^ rsesrTeasr.ril / /
j [0E] aueualll
-:er{J
!a
1uT
j0 = aure:JoaPTAd + eoEurJIdI
I0 =
a]nlde3d + a-rnldeJ^J
(,\6-re r + -Ter{c 'c6-ae a,r-, ..-t* a,rl
,,r{' rn6q6rr{,, apnTruT#
:B:+:X+l
";l'i3:: apnTcuT#
',q'oTp1s,,
o,
. -"i:y;J;rn ?;;d''^lli" ),
a{ rs{auo}t ouaq //
ddc . ernldECurecqe1,l
: qelepe ueleun6rp
urnrun 6uert rs6un; eupturp 'rur lnlrreq epol otuep ue>1eun6 'lnqasJal
e6eur lrqtue6uaru upp tue)qe^\ rslalapueur ur6ur epuy elrf
r.ueDqe^\ rrep
Pengenalan Wajah
Haar Cascade Classifier
OpenCV adalah open source library computer vision yang memudahkan
pemrograman deteksi wajah, face tracking, face recognition, kalman
filtering, dan berbagai metode artificial intelligent.
ault.xml.
200
r
TOZ
j (T-)
I
lrxi
(opEcseJdi ll
a6erolsdi
ll 6ur1du1d;)4t
upurl6unueI
PPP
ntuel
e{
(o)
a6erolsurawaleaJJ1\J=e6erolsd
'Z
{e[qo uplqnlnqueu PPuY 'e6eult eped qefem Is>le]apuau unleqas
'ueleun6rp >1epr1 6uef :aleutered ue>16ue1rq '++) ueleun66uau
eIIl '0 rpelueur B,{uBsts reletuered les ') eped apol }pnqureu epuv
e{lf '}ndu! re}eruPred 5 ue>1qn}nqtueu Duer{ a1t3 Irep e}PP Ppol-eu
Inlun ulnuln rs6ury qBIPPP Ppo-I^D '$peo1nc rs6ury ueleun66ueu
ledep epuv 'eperse3d eI IWX PlPp Peol-eu InluD "IWX ellJ
rJpp plep uBdtutfuetu apecse3d x ePP)sP)reIJIsspl)rePH^) aIqPIJPA
:qe[e76 rs{e}eq
'l
rselueueldul
.
.
4.
3,
5.
wajah
terkecil.
"Haar Window",
CV-WINDOW_AUTOSIZE)
dengan
DetectFace.cpp:
**************+
********
***********
OPENCV_ROOT
#define
/
com
"C:/Program Files/OpenCV"
********************************************
// variables
Ipflmag:e*pInplmg=9,
CvHaarClassifierCascade * pCascade = 0; // face detector
CvMemstorag:e * pstorage = 0;
// memory for detector Eo use
Cvseq * pFaceRectseq;
// memory-access interface
// pengecekan
if(argc < 2)
{
printf("Missing
exit(-1);
// initializations
CV_LOAD_IMAGE_COLOR)
0;
202
I
I
l.'
f
,oz
i (O)^aXlreM c
I (bulduId',MOONIM-IVTdSIG
e6Eurll{oqs^c
ue{TTdue? //
(EZ
MOCNIM-I\V'IdSIG
jr fuT
+ -req3 lsuoJ
I0
I ( apEcseJds
u-rn?a-r
^q
J
j ( EuIdulda ) aoeurIaseaTeE^J
saJf,nosaf aseeTaf pue dn uee-lc / /
qcea Z0T
I ( (0r'0r)azrs1\c
7x0,
aceJ
/ /'9NINflUd-INNVJ-OO-1{WH-AJ
L
ssed
,I'I
'aoe.rolSd'apecseJd'bu1duId)
uT saJef 1oa1ap //
i (T_)1rxo
e?ecoTTe 01 aTqeun,,
elep f,oJ
I ( [T]^6,re
^f,ouraur
a{euu
: ",o6ero1s
,!1CA-T-IO3 ST qlEd alns
,, -- apecsec-.reeq peoT 1,uec,, a (apeJseJdi)
; aTTf a6eulT peoT 1 , ueJ r a (ourrdurd i )
,
,,u\s% :paTTef uoTlezTTe-I1ruI ,, ) Jlurrd
)
( aperse3di ll a6e:o15di ll 6ut1du1d; 1;t
pazrTerlrur 6utq1.{:ala lEr{1 a?eprTeA //
,,
1IT.rado.rd
j(o'o'o
'
,,
TuD('
l TnPl:ap-aoeJ Teluo-rl-apessec-reEq
sapecsEs-reel{/Ef pl ,,,IOOE-ACNEdO ) )
Tracking Wajah
OpenCV face tracker menggunakan algoritma CamShift. Camfsit terdiri
dari beberapa langkah :
1.
2.
3.
204
i
I
I
l_
Y
rtr-
^6ab
?brr^
+-rEr{c
I ( )eure-rdoapr^a]nlde3
pro^
t0 = IdoJeureJdoapr^d + aEeulITdI
saTqer"rp^ IeqoID ////
,,ACuedO/saTTJ urp:6ofd/
,,
q ' Tn6r{6rr{
,,q'..Ic,, apnTcur#
ddc.{cEr[ecrJ
:e{uePol qo}uo)
rur }nIrJeE
o;'t#'
. ? q, a ] u r e ru el:
il'r? ?:Xr*"XIll:;tffi ;' iil i:t ::
: iuelra: Iplol rJep lnpns upp upJnln uplrpnsefuaru BDn[ Br puaJBI
.; ls ueew,, e^ueq uelnq 'up{pun6rp a^rldEpp ,{lsonurluo) epolaw
D
'9
'v
i
/
capturevideoFrame ( ) ;
pFaceRect = detectFace (pVideoFrameCopy)
// Tampilkan image
( DISPLAY-WINDOW, pVideoFrameCopy
if ( (char)27==cvWaitKey(1) ) exitProqram(0) ;
cvshowlmage
);
/ init.ialize
t.racking
CvBox2D faceBox;
CvPoint facePoint;
/
capturevideoFrame
// Bentuk eliPs
cvEllipseBox (pVideoFramecopy, faceBox,
cv_RGB (50,255,0) , 2, CV_AA, 0 ) ;
tf(
(char)27==cvWaiEKey(1) ) break;
exitProgram(0);
)
int initAll
{
);
/ flltiaLLze tracker
if ( IcreateTracker(pvideoFrameCopy) ) ret.urn 0;
/
captureVideoFrame ( ) ;
return L;
206
&
I
LOZ
'.-
palra^uT sr
- -ro< -^doCeure-rdoep
rAd
r ( o Yo ,iuij.urrrro.pl4d )drI.{^c
)
T // ( ur6T.ro<-IdoJaure-rdoapT^d == T )lr
'8'
!(
()
eue-rdoepT^a]nldec pro^
1
(apoc) lTxe
j ( )-ra{ce:J,eseaTa.r
J ( ) laoesEgasoTc
j ( )a-rnldECasoTc
sac-rnosa-r aseareu //
j(
)o6eurIaseaTaE^c
.i (^doJaure-rdoepT^dT
MOCNI14-IVTdSIq ) ,tnopuTg^o,rlsa6lo
sac-rnosa"r esEaTalI / /
(epo, 1ur)1ue-r6o-rdlrxa
pToA
Latihan
1.
Untuk mahir computer vision pada robot, tidak ada cara lain selain
Anda mengerjakan tugas yang penulis berikan. Buatlah Program
Robot Line Follower yang mengikuti wajah orang di depannya.
2.
3.
4.
5.
haartraining.exe
208
L*
&
r
602
t"tz
rnllolrsrv
uenlnqBpuad
o
.
.
o
o
.
.
Berikut ini adalah rancangannya. Intinya, robot mendeteksi wajah seseorang menggunakan webcam, robot menerima input order dari switch
manual atau speech recognition. Setelah itu, robot dapat memberikan
order orang tersebut menggunakan arm robot dengan berjalan menggunakan kaki atau roda. Berikut arsitektur robot penulis yang bernama
Srikandi.
ertuilpa r,!
aarera
r0rtrD:ler
E;;;;;;I
ll
r;;..,_-";*+
f -**'Jl
Gambar
9.1 Arsitektur
penulis)
272
r
.tz
sEag
*----------*
jtaIPtsds
Z'6,
requeD
eAeperle3
r*.rs'E
I -,.,
[,u tr
Soqo;
uetual
---------------r'
G&
Anda dapat memesan demo robot ini dalam bentuk sudah jadi (robot
people follower) tanpa lengan robot seharga 9 juta rupiah. Jika lengkap
dengan lengan robot, harganya sekitar 30 juta di luar laptop/PC.
Face Recognition
Konsep Dasar
Untuk membuat robot pelayan dari arsitektur di atas, pertama Anda
harus membuat program face recognition yang akan mengenali wajah
pemesan dan object recognition untuk mengenali gelas atau bukan.
Object recognition dapat dibuat dengan membuat file library XML. Face
recognition di sini menggunakan Eigenspace dan PCA, yaitu suatu
teknik yang umum dikenal jika pemula ingin belajar pengenalan dan
identifikasi wajah. Penulis mengharapkan Anda membaca paper asli
dari penemu teknik ini di CD Program. Penulis juga mengharapkan
Anda mempelajari Machine Learning. Program dimulai dengan training,
di mana program akan melakukan proses pembelajaran. Selanjutnya,
dilakukan pengetesan image, yang kemudian diteruskan dengan proses
pengenalan wajah. Buatlah proyek baru dan beri nama FaceEigen
sebagai berikut:
214
&
r
9tz
iu.rnle.I
,-r-rapf s)
li?uT.rdf
)
I ( .3x1 'uTe.r1,,
)ujreel pTo^
ezru6oce-r
j ( )u.rPeT
)
)uTeur pToA
r o a6esoluT.zd pTo^
i (eueuaTT] + .rer{c)^e.rJvburlacedpeoT 1uT
j (aredlsaJ,pa?)a !o:d + fpoTJ ) .roqqbTaNlsa,reaNpuTJ ?uT
j (lewumNuos-ra6ute:;d ++ IeN/1J)eleg6uTuTe.r&peoT 1uT
I ( ) Plpq6uTuTp.rJ,alols pro^
I OYJdop pTo^
Oazru6oca-r pro^
r
l Ou.reaT pro^
sed lolo-rd :uoal)urri ////
sfolJa^ua6re
aOEurT a6E-ra..\e aq1
3PNaCedure.rJpalcato-rd + IeNAJ
.u =
?eNTeAuoETa + IPNI\J
.u =
-r-rv13e^ua6Ta ** ebeur11d1
.u 6urIuTerJ,6^Vd r eoPurITdI
suooTEu ?uT
j0
.u
^Pf,f,e
rjrvburlace] ++ a6purITdl
lur
se3eduTPjrJ,u
1el^Jq1n-r[urnt[uosJad
lefiuro
.,q'xne^cr
apnTcuT+
,,ri'1\3,, apnTcuT+
<q'6ur-r1s> apnTJur+
<q'o-!p?s> apnTcur#
xf ep1s,, apnTcuT+
,,r{'
!dda.ueETgeoBJ
PCA subspace
);
cvEigenDecomposite
facelmgArr Ii]
eiqenvectArr,
0,
0,
pAvgTrainImg,
);
void recoqnize
{
int i, nTestFaces = 0;
float * projectedTestFace =
CvMat * trainPersonNunMat = 0;
//
//
training
0;
PCA subspace
);
cvEigenDecomposite
PCA subspace
facelmgArrIi],
nEigens,
eigenvectArr,
0, 0,
pAvg',l',rarnImg,
projectedTestFace)
276
A
LLZ
{
'
IT ]
i ( (0'0)lsTrlfllv^c
.r.lvlranuaoTa 'eueurp^ 'e6e-rolsaTTl ) a1rf,M^)
!l \ ',,p8-ScaAua6rar ',aiueule^ )J:luTfds
: [002]aueure^ .req3
(++r i sua6Tgu>r
10=r )-rol:
j((O'0)1sT1r11vA)'SulrurerJ,6^vd',,6ufurerJr6.l\p"'abelolSal"[J)alr:IqnD
i ( (0'0)lsTrlftlv^c
':tetilase.{ure]J,pal3ato-rd
',,
3
i ( (0'0)?sT'If,1fv^c'lewTe^uabTa',,1eNTeAuaora"'e6elofsoTrJ)e1I]M
1 ( (0 '0 ) 1sT.r:11V c
'lENr{1n-rlurnNuosfad',,1BI,0:rnNuos-rodure-r1"'e6e'rofSaITJ)a3r'rA/\O J
j ( saoeJuTe-rJu ' ,, sacEJurPJJ,u,, 'aoplolseTrJ ) 1uIalT:M
!\
E,],I1IM_EC\'dOJS_AJ,
a5p'rolsaTrl
,, Tu.rx'E1epaceJ,, ) 36ero1saT'Fduado^) =
arE3ra?uT a6e:o1s-a1tJ e aaeaac / /
l r lu-l
iaoplolseTrf + a6E-rolSoT-id^c
)
()
elEq5ururef,fiaf,ofs
ProA
1T U-rnlaf
1 ( aFe-rolSaT-Il! ) e6prolsaT-iJaseaTau^)
a3eJ.ralur abef,ols-alrJ aq1 eseaTe-r / /
a6eulTdI) = [r]r]vlseAuaore
1(0 'aulPure^'O 'a6E.rolSaT-Il:)aureN^gpEau,r\c(+
i ( -t ,pZ-lJaAuaEra,, 'aulEuf,e^ ) l:luTrds
'
I [002]eulPu-re^ f,eq,
j
j ( (+ e6eurlTdI)Joazrs+saceJure-rJu)coTTV^J(+x
a6EurfIdI) = f,'rvlce^ua6ra
r (o
= ourIurE:JE1!Vd
',,5urIuTerJ,6^e,, '0 'aoErolSol-!f )aureN^gpEaE^c(+ abeurIldI)
I (0',,1eNa3eJure-rJpalcatofd,,
'0'aoE.rolsaTrl)
aureN^SpeaE^)
(+ lEI'{^C) = leNaJeduTe'z'Ipa1ca!o:
'0 'abe-rolsaITl)aueN^EpPaUAc(+
1eI^1^C)
. tu
fEI^ITeAuabra
',,?eNTEAuaOra,,
i (0 ' ,, f EwunNuosradure-r1
' 0'a6ero1saT"il: ) aureNlgpeau^) ( + lEI^iAJ) = lewurnNuosf,adure'rJ'dY
i (0 ' ,, sa)e.{u-FPjrJ,u,, '0 'abelolsaT-!l ) aueN^gluIpeaE^3 = sa3PlurP'r[u
, (o ' ,,"i.orsr},, 'g 'abe:olsaT-If )aureNAalurpeeElr = sua'6ruu
I0 ufnla.r
: ( !u\Turx'e1epe3eJ uado 1,uec,, 'f,f,ep1s) Jlurf,dl
)
( a6ef,olSaTrli )lT
r(oVEE-Eev-SoJS_^c,0,|lTuIx.elPPa3E]'')a6efolsaT-lduado^D=a6ef,o1saTTf
arEl.ralu-! a6P]o1s-aTTJ e eleaa) / /
ir iuT
ia6e-rolsaTrJ + a6ejolsalrJAC
)
/ release
E.he
file-storage int.erface
cvReleaseFileSEorage( &fileStorage
);
double distSq=0;
float d-i
il;
distsq += d-i*d-i;
// Euclidean
IeastDistsq = distsq;
iNearest = iTrain;
return iNearesE,'
)
void
t
doPCAo
inE i;
CvTermcriteria calcLimit
CvSize facelmgSize;
/
nEigens = nTrainFaces-1;
278
1) ;
1)
6IZ
,,
u\<pueuuoc> ace]uaora
)aoesnruT.zd pTol
J saceJu u-TnlaJ
i ( eTrJ?srT6urT ) asoTsl:
I0 u]n1a-T
i (aurEuaTrJbuir ,,,u\s? ulo-r] aoeurr peoT ?, \ueJ,, '-r-rep1s) li?ur-rdli
]
( [acedT].r.rv5urIeoEli )JT
i(STVJSI\a80-ECVWI-CVOT-AJ 'aueuaTTd6urT)a6EurIppoT^c
= [aredT]-uv6urJare]
sA p*,,
'
aTTdlsT.ISurr
Juecsl:
l a1rg1s116urr ) puraa_r
jsa3p.{u++ ( (aIrd?sr.I6uI'ZlE'aurEuaTrd6ulT)s1o6l )aIIql1^
saseJ Jo .aaqumu aq1 lunoc //
1
u-rn1a-r
((,,-r,, 'oueuaTTl:)uedol =
aTrJ?sTTEurT) i )lT
aTrl lndur aql uado //
t0=aTrdlsTTEurT*ETIJ
azTTeur.roN^3
Tl' elep<-lehlTe4uabTa
'6urIuTe,rJ,61!Vd
,lTUITTCTECT
,0
,0
,XJVAT'IVJ ON r'AOCIS AJ
',rrvlce^uabra
+pTo^)
']:V6uIIaJeJ ( +pTo^)
'sacEdurE-rJ,u
)
slca tqouabTgJIJ^J
t.rain\n
Lest\n"
"
);
Siapkan basis data file gambar berekstension .pgm dengan aneka posisi
wajah. Berikan data percobaan untuk training.txt, misalnya:
1 s1ll.pgrm
2 s2lL.pgm
3 s3l1.pgrm
4 sa/2.stgrr
5 s2l2.pgm
5 s3l2.pgm
Berikan data percobaan untuk test.txt:
1 s1/1.pgm
2 sL/2.pgn
3 s2l\.pgar
Jika program ini dijalankan dengan melakukan training terlebih dahulu,
lalu test, maka akan terlihat bahwa gambar 1, 2 , dan 3 sesuai dengan
basis data 7,4, dan2.
Gambar
220
IZZ
'@ eqo)uaw leLueles 'Duesedrp qeyel Euert qceadg
ol ]xaj Inpou ueleunDDueru JII>leJa pre)es rsB{runuro>{req snJeq
e6n[ loqog 'epor ue>leun66uaur uelef:eq ue6uep ]oqor qelo uprrJeqrp
snJeq ueseued upujnurtu rsrJeq 6uB.( se1a6 '1nqesre1 ue66ue1ad
rJep upuesad le6ur6uaur upp leue6uaLu loqor qeleles 'Br{ueueu euasaq
lnqesJel qefe1Y\ rser.uJoJur uedrur,{ueur uep qefern leuaEued uBr6ord
ue>lrser6elur6ueru uep uel6ueqrueDueur qBIBpp Jrr.{{ere} qe16ue1
'oruep uer6o"rd rensos lere6raq sas{ns qple} epuv toqoJ ue6ua1 elrp
"fl3*3
Ie\]lnq u'lsl 'JSdpyTl '009 'pneq ,leps NIEES
luc",aEEAJSi,, ] ,0008s + pneq ,?eps ,toolrEs
lIJ,,,3Sd r.rPJuar{u eo8Eo
:
(
Jsdpu,tf
t ) e1^s trv^
TZOI NOJ
EI NId
li
lnq
PNEq
IPPS
{E.Z JISVSdS}
{dZSE dNvJSS}
.
.
:dsq.:e4
.9I
UId
Latihan
1.
2.
3.
Gambar
9.6
Untuk mengoptimalkan pengenalan wajah, gunakan teknik penyimpanan 3 sampelwajah per orang.
Gambar
9.7
b'\-
222
C#
untuk mendeteksi
I
i
ue)qafi
)d
"
-*lsJ:'E
rnt t: v
=Yl ,\
i-:
.axwl#itt*ilsi$;Eis.*$.8
elpew xelg
]asJJO
0t
.Z
.I
uencv teueo
2. www.toko-elektronika.com
13. www.cognotics.com
14. www.atmel.com
1
5. www.sourceforge.net/projects/OpenCV
16. www.parallax.com
17. www.mcselec.com
18. www.ti.com
19. www.wikipedia.org
20. www.maxim-ic.com
2
. www.beyondlogic.com
22. www.hpinfotech.ro
23. www.diptrace.com
24. www.cmucam.org
25. www.crustcrawler.com
226
i
Ia^Ja)ad
0tE8-dr
z9tw c)r
8Srdosr
z x 9l xrrlPw
ra^Je)eu parerJul InPow
c)l
sluouole
IE-IS
IE-ISC
0z-n)c
0ez-s)r
)ruPr4)ew podexeg
JrlPrJeA DueA
IO-.{SC
ZEIJO6OSdOI
o0tt'lvsl_
Dursuag eurl dl ellaq
reuos-c
70 a)ron-q
lrueLu
loDolord
fdvl)
lry repo)uE
xx-)3q
IDtr
uEsElalued
{eplerd 6ue$nued
Iy
reueQ
ue4dwel
DX-24
mikrokontroler
D-Joy Controller
D-Joy Controller (Wireless Version)
DU-ISP V2.O
Delta DC Driver
Delta Robo CPU
SST-06
dariUART
DSR-08
L293D
HS-422
HS.645MG
metal qear
HS-8O5BB
GWS SO4BB
DCS-01
DU-232
Gripper
cB-232
228
6ZZ
,.,
-';9J
td
'
sllnue4 aue\ual