INSTITUT TEKNOLOGI BANDUNG
INSTITUT TEKNOLOGI BANDUNG
PROGRAM STUDI TEKNIK ELEKTROPROGRAM STUDI TEKNIK ELEKTRO
JALAN GANESHA NO. 10 Gedung Labtek V Lantai 2 (022)2508135-3! (022)250 0"#0 $AN%&NG #0132
Le'ba Sa'u* %+ku'en
Judu* %+ku'en
PROYEK A
PROYEK AKHIR EL3014
KHIR EL3014 SISTEM
SISTEM
MIKROPROSESOR:
MIKROPROSESOR:
Se'i Aut+'ati, 2% a
Jeni/ %+ku'en
IMPLEMENTASI
IMPLEMENTASI
Catatan: Dokumen ini dikendalikan penyebarannya oleh Prodi Teknik Elektro ITB
N+'+ ei/i
02
02
Na'a i*e
355950275
355950275
angga* 4enebitan
24 Mei 2017
24 Mei 2017
&nit 4enebit
Proi Te!"i! E#e!$ro % IT&
Proi Te!"i! E#e!$ro % IT&
Ju'*a Ha*a'an
23
23
(te'a/uk *e'ba /a'u* ini)%ata 4engu/u*
4engu/u*
Na'a Han/en N67 1321#0Na'a %edd9 e*/an N67 1321#1#8
4e'bi'bing Na'a akad 6/an Haiadi anda angan Le'baga
4+ga' Studi eknik E*ekt+
Sek+*a eknik E*ekt+ dan 6n:+'atika 6n/titut ekn+*+gi $andung
Labtek V! Lantai 2! Ja*an Gane/a n+. 10! $andung
e*e+n ; <2 22 250 220 ak/ ;<2 22 253 #222 E'ai*;/tei=/tei.itb.a,.id
DAFTAR ISI
DAFTAR ISI
DA'TADA'TAR R ISI((((((((((((ISI((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((2((2
Dokumentasi Produk Proyek Akhir
)AT
)ATAATTAN AN SE*ARAH SE*ARAH PER&AIKAN PER&AIKAN DOKUMEN(((((((((((((DOKUMEN((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((3(((((3 PROPOSAL PROYEK PENGEM&ANGAN SEMI AUTOMATI) 2+D )AR((((((((((((((((4 PROPOSAL PROYEK PENGEM&ANGAN SEMI AUTOMATI) 2+D )AR((((((((((((((((4 1
1 PENGPENGANTANTARAR(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((4(((((((4 1.1 6NG>ASAN 6S6 %O>&7EN...# 1.2 &J&AN 4EN&L6SAN%AN A4L6>AS6?> EG&NAAN %O>&7EN...# 1.3 EEENS6...# 2
2 IMPIMPLEMELEMENTNTASASI((((I((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((5((((((5
2.1 GA6S $ESA 4ENA4A6AN 674LE7ENAS6...5
2.2 IMPLEMENTASI MEKANIK ROBOT...5
2.3 IMPLEMENTASI MODUL AKTUATOR / MOTOR... 2.# 674LE7ENAS6 4E7$AAAN SENSO JAA> $ESA7AAN..."
2.5 674LE7ENAS6 SENSO 6%AN 4E7$AAAN E7OE ONOL...10
2. 674LE7ENAS6 O7$OL S6H 4&SH O N...11
2. 674LE7ENAS6 L% 1@ 2...11
3 3 EKSPEKSPERIMERIMEN((EN((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((11((11 3.1 E>S4E67EN 7OO %...11
3.2 E>S4E67EN SENSO &LASON6> %AN L% 1@2...12
3.3 E>S4E67EN O7$OL S6H 4&SH O N...1#
3.# E>S4E67EN SENSO 6 NA E%%AN E7OE ONOL 6...15
Catatan Sejarah Perbaikan Dokumen
Catatan Sejarah Perbaikan Dokumen
,
,ERSIERSI TTANGGALANGGAL OOLEHLEH PPER&AIKANER&AIKAN
1 30 Ai* 201 Han/en %+ku'en e/i eta'a
2 2# 7ei 201 %edd9 dan Han/en %+ku'en e/i kedua
Proposal Proyek Pengembangan Semi Automatic 2D Car
Proposal Proyek Pengembangan Semi Automatic 2D Car
!
!
P
Pe
en
ng
ga
an
ntta
ar
r
1.
1.11 RIRINGNGKAKASASAN IN ISI SI DODOKUKUMEMEN N
%+ku'en ini bei/i ene*a/an i'*e'enta/i dai de/ain 2WD CAR 9ang te*a dibuat dan ek/ei'en 9ang te*a di*akukan.
• $ab 4enganta bei/i ingka/an i/i d+ku'en! tuuan enu*i/an dan a*ika/i?kegunaan d+ku'en! dan e:een/i.
• $ab 6'*e'enta/i tentang d+ku'enta/i bagian-bagian dai +9ek 9ang te*a dii'*e'enta/ikan /e/uai dengan de/ain 9ang te*a dibuat ada d+ku'en $300. • $ab Ek/ei'en
1.2
1.2 TuTujuajuan Penun Penulislisan daan dan Apn Apliklikasiasi/Ke/Kegungunaan Daan Dku!ku!enen
uuan dai enu*i/an d+ku'en ini daat die*a/kan /ebagai beikut.
1 Sebagai d+ku'enta/i a/i* enge'bangan +duk Se'i Aut+'ati, 2% a 2 4e'bei ga'b aan de/ain dan a/i* eng e'bangan +duk 9ang daat digunakan
untuk 'enge'bangan *ebi *anut.
3 4e'enuan tuga/ +9ek aki 'ata ku*ia EL301# Si/te' 7ik++/e/+.
1
1.."" RREE##EERREENNSSI I
1 4ing &*ta/+ni, ange inde! BOn*ineC. e/edia;
tt/;??DDD.aduin+.,,?en?tut+ia*?ing B%iak/e/ 2 Ai* 201! 00;0# 2 A%&6NO $a/ed 6 e'+te +nt+* +b+t! BOn*ine. e/edia;
tt;??DDD.in/tu,tab*e/.,+'?id?A%&6NO-ba/ed-6-e'+te-,+nt+*-+b+t? B%iake/ 2 Ai* 201! 00;1
3 6 +nt+* >it H++ku Guide! BOn*ine. e/edia;
tt/;??*ean./ak:un.,+'?tut+ia*/?i-,+nt+*-kit-++ku-guide B%iak/e/ 2 Ai* 201! 00;28
2
2
II"
"P
P#
#$
$"
"$
$%
%T
TA
AS
SII
$eikut i'*e'enta/i beda/akan de/ain 9ang te*a dibuat ada d+ku'en $300
2.1
2.1 Ga$Ga$is is %es%esa$ a$ PenPen&ap&apaiaaian n I!pI!ple!le!en'en'asi asi
6'*e'enta/i +duk Se'i Aut+'ati, 2% a te*a /e*e/ai /e*uun9a. Se*uu k+'+nen 9ang 'en9u/un badan +b+t te*a dia/ang dan be:ung/i /e*uun9a. 4+ga' untuk 'ena*ankan +b+t uga te*a dibuat ingga /e*e/ai dan te*a te*a di*akukan e,+baan. edaat eubaan de/ain +b+t dai an,angan +b+t ada *a+an-*a+an /ebe*u'n9a. 4eubaan 9ang di*akukan tidak te*a*u /igni:ikan dan akan die*a/kan ada bagian /e*anutn9a dai *a+an ini.
2.2
2.2
Implementasi Mekanik Robot
Implementasi Mekanik Robot
$agian 'ekanik +b+t te*a dia/ang /e*uun9a 9ang 'e*iuti '+t+ % 2 bua be/a'a dengan dua bua +da. 7+t+ te*a tea/ang ada /ebua keangka +*i'e 9ang didaatkan ketika 'e'be*i '+t+ '+t+ % te/ebut. >a'i 'enggunakan keangka te/ebut /ebagai keangka uta'a badan +b+t?'+bi* 9ang ka'i buat. Se*ain itu! ada bagian baDa keangka tedaat dua bua b+*a *+ga' 9ang tea/ang di dean dan be*akang. %ua b+*a *+ga' ini be:ung/i /ebagai +da dan en9angga aga +b+t daat begeak dengan /tabi*. 4ada bagian
ata/ keangka! dia/ang 4$ 9ang teubung dengan b+ad Aduin+ &NO! /en/+! dan k+'+nen *ainn9a. Ga'ba de/ain 4$ 9ang digunakan daat di*iat ada ga'ba di baDa ini.
G-./-r 2(1 De-i" P)& G-./-r 2(1 De-i" P)&
Ha/i* i'*e'enta/i badan +b+t /e,aa ke/e*uuan daat di*iat ada ga'ba di baDa ini.
G-./-r 2(2 &--" Ro/o$ Mo/i# 1 G-./-r 2(2 &--" Ro/o$ Mo/i# 1
G-./-r 2(3 &--" Ro/o$ Mo/i# 2 G-./-r 2(3 &--" Ro/o$ Mo/i# 2
G-./-r 2(4 &--" Ro/o$ Mo/i# T-.-! A$- G-./-r 2(4 &--" Ro/o$ Mo/i# T-.-! A$-
G-./-r 2(5 &--" Ro/o$ Mo/i# T-.-! &e#-!-" G-./-r 2(5 &--" Ro/o$ Mo/i# T-.-! &e#-!-"
G-./-r 2( &--" Ro/o$ Mo/i# T-.-! De-" G-./-r 2( &--" Ro/o$ Mo/i# T-.-! De-"
2.3
2.3 Impl
Implemen
ementasi
tasi Modu
Modul Akt
l Aktuato
uator / M
r / Motor
otor
47 bea/i* digenea/ikan dengan 'enggunakan i'e 2 untuk 'engatu dut9 ,9,*e (0-100F 0-255) 9ang akan di'a/ukkan ke enab*e die '+t+! k+den9a /bb;
6nut>ii dan inut>anan 'euakan aiabe* 9ang 'en9i'an ni*ai atau be/a 47 untuk '+t+ kii dan '+t+ kanan. Ni*ai 47 ini akan 'enentukan be/a ke,eatan uta '+t+. Ni*ai 47 'ini'a* 100 kaena /ete*a di*akukan e,+baan! didaatkan baDa aabi*a ni*ai 47 *ebi enda 100! 'aka '+t+ tidak beuta. Ha* ini di/ebabkan enegi 9ang dibeikan keada '+t+ tidak ,uku kuat untuk 'e*aDan ke*e'ba'an atau enegi ge/ek 9ang dibutukan untuk 'e'buat '+t+ 'u*ai beuta. Sedangkan ni*ai 'ak/i'a* 47 255 kaena ti'e 2 9ang digunakan /ebe/a
8 bit /eingga ni*ai 'ak/i'a* 9ang daat di,aai +*e 47 ti'e ada*a 255. b. Atu aa dan ke,eatan '+t+ % dengan L2"3%
%ai ga'ba di baDa! daat di*iat in 'ana /aa 9ang digunakan untuk 'enggeakkan dua bua '+t+ %. 4in EN be:ung/i 'engakti:kan ke*uaan die L72"3%. 4in ini akan dibeikan 'a/ukan 47 dai 'ik+k+nt+*e A7328. Se*anutn9a in 6N be:ung/i 'enentukan aaka '+t+ akan beuta dan ke 'ana aa uta '+t+. >+n:igua/i in 6N ini daat di*iat ada tabe* 2.1. 4+De '+t+ bea/a* dai tegangan V a/i* egu*a/i L64O 2 /e*.
" void setPWM(double inputKiri, double inputKanan)
{
TCCR2A = _B(C!M2A") # _B(C!M2B") # _B(W$M2") # _B(W$M2%)& TCCR2B = _B(C'22)&
!CR2A = inputKiri& !CR2B = inputKanan&
G-./-r 2(7 S!e.-$i! LM293D G-./-r 2(7 S!e.-$i! LM293D T-/e# 2(1 Ko"6ir-i i" IN1 -" IN2 $er8--$ er-! .o$or 1 T-/e# 2(1 Ko"6ir-i i" IN1 -" IN2 $er8--$ er-! .o$or 1 E
ENN1 1 .. IINN11 IINN22 GGEERRAAK K MMOOTTOOR R
255 H6GH LO 7OO 1 E4A
128 H6GH LO 7OO 1 SE%ANG
128 H6GH H6GH 7OO 7A6
255 LO H6GH 7OO 1 E4A
128 LO H6GH 7OO 1 SE%ANG
128 LO LO 7OO 7A6
2.(
2.( I!pI!ple!le!en'en'asi Pasi Pe!)e!)a&aa&aan Sean Sensns$ *a$$ *a$ak )eak )e$sa$sa!aa!aann
Sen/+ aak 9ang digunakan ada*a /en/+ u*ta/+nik ing aa**a. Sen/+ 9ang digunakan /eban9ak e'at bua 9ang be:ung/i 'e'ba,a aak beikut.
• Jaak %ean •
Jaak Se+ng >anan • Jaak >anan • Jaak >ii
7a/ing-'a/ing /en/+ 'e'butukan 3 bua kabe* untuk diubungkan ke 'ik+k+nt+*e 'e*a*ui aan 4$! 9aitu kabe* V! g+und! dan data. O*e kaena itu! untuk /en/+ aak /e*uun9a dibutukan 8 +t di b+ad Aduin+ &NO! 9aitu V! g+und! dan in A%0;5.
4e'ba,aan bea/i* teat dan ,eat dengan k+de /bb;
2.+ 2.+ I I
!ple!en'asi Sens$ IR dan Pe!)a&aan Re!'e ,n'$l !ple!en'asi Sens$ IR dan Pe!)a&aan Re!'e ,n'$l
6 SO4 138 6 e,eie 'e'e*ukan tiga bua in! 9aitu V! g+und! dan data. Sen/+ 'enei'a data dai /ebua e'+te ,+nt+* in:aed. &ntuk 'enggunakan e'+te ,+nt+* ini! dibutukan in:+'a/i k+de 9ang dikii'kan ika 'enekan t+'b+* tetentu. O*e kaena itu! di*akukan e,+baan untuk 'engetaui ni*ai 9ang dikii'kan bebeaa t+'b+* 9ang akan digunakan. >+de 9ang digunakan untuk e,+baan ini ada*a /ebagai beikut.
in*lude +Rre-ote./0 int R1C_P = "%& Rre*v irre*v(R1C_P)& de*ode_results results& void setup() { 'erial.be3in(45%%)& 11 in*lude +Pin3./0
Pin3 pin36epan = Pin3(2)& Pin3 pin3Kanan6epan = Pin3(7)& Pin3 pin3Kanan = Pin3(8)& Pin3 pin3Bela9an3 = Pin3(:)& Pin3 pin3Kiri = Pin3(5)& Pin3 pin3Kiri6epan = Pin3(;)&
double <ara96epan, <ara9Kanan6epan, <ara9Kanan, <ara9Bela9an3,
<ara9Kiri, <ara9Kiri6epan& void setup(){ 'erial.be3in("":2%%)& void loop(){ ba*aPin3()& 'erial.print(6epan> )& 'erial.print(<ara96epan)& 'erial.print( 6epanKanan> )& 'erial.print(<ara9Kanan6epan)& 'erial.println()& ??dst void ba*aPin3(){ pin36epan.@ire()& <ara96epan = pin36epan.*enti-eters()& pin3Kanan6epan.@ire()& <ara9Kanan6epan = pin3Kanan6epan.*enti-eters()& pin3Kanan.@ire()& <ara9Kanan = pin3Kanan.*enti-eters()& pin3Bela9an3.@ire()& <ara9Bela9an3 = pin3Bela9an3.*enti-eters()&
irre*v.enableRn()& ?? 'tart t/e re*eiver void loop() { i@ (irre*v.de*ode(results)) { 'erial.println(results.value, 1)&
irre*v.resu-e()& ?? Re*eive t/e neDt value
Ha/i* e,+baan 'e'beikan data /ebagai beikut. T-/e# 2(2 Ni#-i !e#-r-" e$i- $o./o# re.o$e IR T-/e# 2(2 Ni#-i !e#-r-" e$i- $o./o# re.o$e IR To./o To./o ## HeeH 0 8" 100 "8 200 $0# 1 30 2 18E 3 A8 5 # 10E 5 38 5AA 5 #2$ % 8 #A$ 5 " 52A % 2.
2.-- I!I!plple!e!enen'a'asi Tsi T!!))l Sil Si'&'& Pu Pus Ons On
+'b+* ini digunakan /eban9ak dua bua ada /i/i /e+ng kanan dan kii. 7a/ing-'a/in g t+'b+* an9a akan digunakan /atu bua /aa /e/uai dengan '+de 9ang /edang dia*ankan +*e +b+t. Jika +b+t da*a' '+d e following right wall ! 'aka t+'b+* kanan /aa 9ang digunakan. $egitu uga /eba*ikn9 a untuk following left wall ! an9a t+'b+* kii /aa 9ang digunakan. +'b+* ini be:ung/i ika '+bi* 'enabak /e/uatu ada /i/i /e+ng dean '+bi*.
2.
2.00 I!I!plple!e!enen'a'asi si ,,D 1D 1- - 2 2
L% 12 digunakan untuk 'ena'i*kan '+de 9ang /edang dia*ankan +*e +b+t! ke,eatan +da kanan dan kii (da*a' ni*ai 47)! dan aak kanan?kii /eta dean. L% dia/ang ada bagian ata/ dean badan +b+t. L% 'enggunakan bebeaa in /ebagai beikut.
T-/e# 2(3 Ko"6ir-i i" L)D 12 T-/e# 2(3 Ko"6ir-i i" L)D 12
N
N--..- - PPii"" PPii" " --- - AArrii""oo
V V G+und GN% S 2 E %# %5 8 % " % 4#
&
&
$
$'
'S
SP
P$
$R
RII"
"$
$%
%
".".11 EkEksspepe$i$i!!en Men M''$ D$ D, ,
4e,+baan '+t+ % di*akukan untuk 'enge*+'+kkan bebeaa eni/ geakan 9ang die*ukan da*a' +ga' Da** :+**+De. Ha/i* e,+baan untuk /etia geakan ada*a /ebagai beikut.
T-/e# 3(1 *e"i Ger-!-" Mo$or T-/e# 3(1 *e"i Ger-!-" Mo$or
G
Geerr--!!--"" PP&&44 PP&&55 PPDD44 PPDD55 PP++M M KKiirrii PP++M M KK--""--""
7au *uu/ 1 0 1 0 255 252
7undu *uu/ 0 1 0 1 255 252
4uta kanan 0 1 1 0 250 250
4uta kii 1 0 0 1 250 250
$eenti 0 0 0 0 -
-7au be*+k 1 0 1 0 a Va
4+t 4$#;5 dan 4%#;5 ada*a +t 9ang be:ung/i untuk 'engatu aa uta +da. 4+t 4$#;5 'engatu aa +da kii /edangkan +t 4%#;5 'engatu aa uta +da kanan. 4ada geak 'au *uu/! ni*ai 47 kii *ebi be/a dai 47 kanan. 4adaa* ika ingin 'au *uu/! /eau/n9a ni*ai keduan9a /a'a aga 'endaatkan enegi 9ang /a'a be/a. Na'un! /ete*a di*akukan e,+baan! diketaui baDa +da kii 'e'e*ukan t+/i 9ang *ebi be/a dai +da kanan untuk beuta. %engan kata *ain! tedaat ebedaan kaaktei/tik 'ekanik antaa +da kanan dan kii. Jika ni*ai 47 keduan9a /a'a! akibatn9a +b+t akan ,endeung bea*an bebe*+k ke kii. $eda/akan a/i* e,+baan! ni*ai 47 dengan k+n:igua/i ada tabe*
te*a daat 'e'buat '+bi* bea*an *uu/. 4ada '+de geak uta! be/a 47 +da kanan dan kii b+*e /a'a tetai dengan aa uta 9ang be*aDanan tegantung aa uta 9ang dituu. %engan ,aa ini! '+bi* daat beuta di te'at dengan u/a +b+t /ebagai ++/.
&ntuk 'e'buat '+bi* beenti! ,uku dengan 'e'buat /e'ua ni*ai +t 4$#;5 dan 4%#;5 'enadi 0 /e*uun9a atau 1 /e*uun9a. Sedangkan untuk '+de 'au be*+k! ni*ai 47 diadikan aiabe* aga be/an9a begantung ada kebutuan atau begantung ada aak '+bi* dai dinding. Jika 47 kii *ebi be/a dai kanan! 'aka +b+t akan 'au /a'bi* bebe*+k ke kanan. Seba*ikn9a ika 47 kanan *ebi be/a dai kii! 'aka +b+t akan 'au
/a'bi* bebe*+k ke kii.
".2
".2 EksEkspe$pe$i!ei!en Sen Sensns$ Ul$ Ul'$a'$asnsnik dik dan an ,D 1,D 1-2 -2
4e,+baan /en/+ u*ta/+ni, dan L% 12 di*akukan be/a'aan untuk 'e'e'uda e,+baan keduan9a. %a*a' e,+baan ini! ka'i 'ena'i*kan aak 9ang teuku +*e /en/+
u*ta/+nik ke *a9a L%. edaat *i'a k+ndi/i engukuan dengan a/i* /ebagai beikut.
G-./-r 3(1 Se#r8 e"or $i-! i8-#-" G-./-r 3(1 Se#r8 e"or $i-! i8-#-"
G-./-r 3(3 Se"or !iri i8-#-" G-./-r 3(3 Se"or !iri i8-#-"
G-./-r 3(4 Se"or ero" !-"-" i8-#-" G-./-r 3(4 Se"or ero" !-"-" i8-#-"
G-./-r 3(5 Se"or !-"-" i8-#-" G-./-r 3(5 Se"or !-"-" i8-#-" T-/e# 3(2 Ko"6ir-i 8-i# L)D
T-/e# 3(2 Ko"6ir-i 8-i# L)D P
Pooiiii SSee""oorr >ii ata/ %ean >anan ata/ >anan >ii baDa Se+ng >anan baDa >ii
4ada ga'ba 3.1 bi/a di*iat ni*ai aak 9ang dita'i*kan ada L% *ebi be/a dai 10 /e*uun9a. Ha* ini di/ebabkan /en/+ tidak dia*angi ada aak 9ang dekat. Sedangkan ada # ga'ba beikutn9a! te*iat tedaat /ebua ni*ai aak 9ang ke,i* (di baDa 10) 9ang dita'i*kan. 4+/i/i ni*ai 9ang ke,i* te/ebut begantung ada /en/+ 9ang dia*angi. >+n:igua/i +/i/i /en/+ teaa +/i/i ni*ai ada L% daat di*iat ada tabe* 3.2. %ai e,+baan 9ang di*akukan! daat di/i'u*kan baDa /e*uu /en/+ u*ta/+nik 9ang
digunakan bekea dengan baik! begitu u*a dengan L%.
".
"."" EkEkspspe$e$i!i!en Ten T!)!)l Sl Sii'&'& Pu Pus Os Onn
4e,+baan t+'b+* /Dit, ini di*akukan dengan 'e'beikan /uatu einta keada +b+t aabi*a t+'b+* te/ebut ditekan. 4einta 9ang di*akukan ada*a 'undu *uu/! de*a9 /e*a'a bebeaa Daktu! uta kii! dan de*a9 /e*a'a bebeaa Daktu. 6ni di*akukan ika t+'b+* /i/i kanan 9ang tetekan. Sedangkan bi*a t+'b+* kii 9ang tetekan! 'aka +b+t akan 'e*akukan einta 9ang /a'a ke,ua*i uta kii 'enadi uta kanan. $eikut ada*a k+de untuk t+'b+*
kanan. i@(ETo-bol)
delaG(7%%)&
Sedangkan bi*a k+de untuk e,+baan t+'b+* kii ada*a /ebagai beikut. i@(ETo-bol2) { MundurFurus()& delaG(8%%)& PutarKanan(":%)& delaG(7%%)&
+'b+* ini akan /e*a*u 'e'beikan ni*ai 1 atau *+gika &E bi*a da*a' k+ndi/i tidak ditekan. Sedangkan bi*a t+'b+* /Dit, tetekan! 'aka t+'b+* akan 'enga/i*kan ni*ai 0 atau *+gika ALSE. O*e kaena itu! enge,ekan di*akukan dengan 'e'eik/a aaka +'b+*1 atau +'b+*2 'enga/i*kan *+gika ALSE.
".(
".( EksEkspe$pe$i!ei!en Senn Sens$ Is$ In3$n3$a Red da Red dan Rean Re!'!'e ,ne ,n'$'$l IR l IR
4ada e,+baan 'enggunakan /en/+ 6 dan e'+te ,+nt+* 6! ka'i 'e'buat aga +b+t daat digeakkan dengan 'enggunakan e'+te ,+nt+*. edaat " eni/ geakan 9ang daat di*akukan +*e +b+t ika dikenda*ikan dengan e'+te. Jeni/ t+'b+* dan geakan 9ang dia/i*kan +*e +b+t daat di*iat ada tabe* di baDa ini.
T-/e# 3(3 Ko"6ir-i $o./o# -- re.o$e ;o"$ro# -" er-!-" T-/e# 3(3 Ko"6ir-i $o./o# -- re.o$e ;o"$ro# -" er-!-"
L
L--//ee# # TToo..//oo## *ee"* "ii GGeerr--!!--"" I eu/ beuta kii KKI eu/ beuta kanan
- eu/ 'undu *uu/ < eu/ 'au *uu/
KII $eenti
2 7au *uu/ /ebenta # $euta kii /ebenta $euta kanan /ebenta 8 7undu *uu/ /ebenta
$eikut ada*a k+de +ga' *engka untuk 'ena*ankan +b+t dengan 'enggunakan e'+te ,+nt+* 6. in*lude +FiHuidCrGstal./0 in*lude +Rre-ote./0 in*lude +avr?io./0 in*lude +util?delaG./0 FiHuidCrGstal l*d((2,, 5,, ;,, I,, 4,, "I);); int R1C_P == "%;;
int -ode == %;; ?? %> oto-atis& "> -anual& 2> stop&
int speedKanan == 2:2;;
int speedKiri== 2::;;
Rre*v irre*v((R1C_P););
de*ode_results results;;
'R((TM1R"_!J_ve*t)) ?? interrupt untu9 -ena-ba/ <u-la/ <a- dan
stopat*/
{ {
if
if ((irre*v..de*ode(&(&results)))) {
{
l*d..*lear();();
irre*v..resu-e();(); ?? Re*eive t/e neDt value
} }
if
if((results..value====%DJJ4I5;)) { { -ode == ";; } } if
if((results..value====%DJJ5I4;)) { { -ode == %;; } } if if((results..value====%DJJB%8J)) { { -ode == 2;; } } TJR" == ((" << <<T!");); TCT" == :I4"%;; } } void setup(){(){ l*d..be3in(("5,, 2);); 66R6 == 66R6 || %b%%"""%%%;; 66RB == 66RB || %b%%"""%%%;; irre*v..enableRn();(); int_re-ote();(); } } void loop(){(){ sei();(); if if((-ode ==== %){){ l*d..setCursor((%,,%);); l*d..print((ALT!MATC);); } } else else ifif((-ode ====")) {{ l*d..setCursor((%,,%);); l*d..print((MALAF R1M!T1);); if
if ((irre*v..de*ode(&(&results)))) {
{
l*d..*lear();();
'erial..println((results..value,, 1););
irre*v..resu-e();(); ?? Re*eive t/e neDt value
} } if if((results..value====%DJJ"%1J)) { { PutarKiri();(); _delaG_-s(("%%);); results..value == %DJJC276;; } } if
if((results..value====%DJJ"I1;)) {
{
Ma<uFurus();();
if
if((results..value====%DJJ:AA:)) { { PutarKanan();(); _delaG_-s(("%%);); results..value == %DJJC276;; } } if
if((results..value====%DJJ8AB:)) { { MundurFurus();(); _delaG_-s(("%%);); results..value == %DJJC276;; } } if if((results..value====%DJJC276)) { { l*d..setCursor((%,,");); l*d..print((B1R1T);); } } if if((results..value====%DJJ2266)) { { PutarKiri();(); _delaG_-s((2:%);); } } if
if((results..value====%DJJAI:;)) { { Ma<uFurus();(); _delaG_-s((2:%);); } } if if((results..value====%DJJ%2J6)) { { PutarKanan();(); _delaG_-s((2:%);); } } if if((results..value====%DJJ1%"J)) { { MundurFurus();(); _delaG_-s((2:%);); } } } } else else {{ l*d..*lear();(); l*d..print(( -ode B1R1T);); ber/enti();(); _delaG_-s((:%);); } } analo3Write((7,,speedKiri);); analo3Write(("",,speedKanan);); ber/enti();(); } } void ber/enti(){(){ di3italWrite(("2,,F!W);); di3italWrite(("7,,F!W);); di3italWrite((8,,F!W);); di3italWrite((:,,F!W);); delaG((:%);); } } void PutarKiri(){(){ 1"
di3italWrite(("2,,F!W);); di3italWrite(("7,,$);); di3italWrite((8,,$);); di3italWrite((:,,F!W);); } } void PutarKanan(){(){ di3italWrite((8,,F!W);); di3italWrite((:,,$);); di3italWrite(("2,,$);); di3italWrite(("7,,F!W);); } } void Ma<uFurus(){(){ di3italWrite(("2,,$);); di3italWrite(("7,,F!W);); di3italWrite((8,,$);); di3italWrite((:,,F!W);); } } void MundurFurus(){(){ di3italWrite(("7,,$);); di3italWrite(("2,,F!W);); di3italWrite((:,,$);); di3italWrite((8,,F!W);); } } void int_re-ote ( ( void ) ) { { TM'K" == %b%%%%%%;;
TM'K" == _B((T!1");); ??-en3a9ti@9an !ver@lo nterrupt
TCCR"A == %;;
TCCR"B == %b%%%%""%";; ??pres*alar "%28
TCT" == :I4"%;; ?? untu9 %," deti9
sei();(); } }
".+
".+ EksEkspe$pe$i!ei!en Rn R)' )' SeSe!i !i AuAu'!'!a'ia'i& 24& 24D ,D ,a$ a$
4ada e,+baan aki ini! +b+t te*a daat dengan baik 'engikuti dinding kanan atau kii. >e'a'uan +b+t *ebi baik da*a' 'engikuti dinding kanan kaena tedaat /en/+ aak ada /i/i /e+ng kanan! /eingga 'e'eke,i* ke'ungkinan +b+t untuk 'enabak. Se*a'a e,+baan di*akukan! 'a/i ada ke'ungkinan +b+t 'enabak dan tidak daat begeak *agi. Ha* ini teadi ika '+bi* 'enabak ada /udut tetentu di 'ana /en/+ tidak daat 'endetek/i aak dengan baik. Na'un a* ini /angat aang teadi. >e*e'aan *ainn9a ada*a '+bi* 'a/i bea*an dengan kuang ai. Seing ka*i +b+t te*iat bebe*+k be*ebian atau bea*an dengan te*a*u /eing be*+k kanan-kii /eingga tidak /tabi*.
$eikut ada*a k+de +ga' *engka untuk 'ena*ankan +b+t /e'i aut+'at,i 2% a dengan '+de following right wall .
in*lude +util?delaG./0 Pin3 pin36epan == Pin3((A7););
Pin3 pin3Kanan == Pin3((A2););
Pin3 pin3'eron3 == Pin3((A%););
Pin3 pin3Kiri == Pin3((A"););
FiHuidCrGstal l*d((2,, 5,, ;,, I,, 4,, "I););
double <ara96epan,, <ara9Kanan,, <ara9Kiri,, <ara9'eron3;;
int R1C_P == "%;;
int -ode;; ?? %> all 9anan& "> all 9iri& 2> -anual& 8>ber/enti&
int speedKanan == ";:;; int speedKiri== ";:;; 'R((TM1R"_!J_ve*t)) { { displaGara9();(); TJR" == ((" << <<T!");); TCT" == :44"%;; } } void setup(){(){ l*d..be3in(("5,, 2);); l*d..print((WAFF J!FF!W1R);); _delaG_-s(("%%%);); int_<ara9();(); 66RC == 66RC && %b""%""""";; P!RTC == ((" << << PC:);); 66R6 == 66R6 || %b%%"""%%%;; 66RB == 66RB || %b%%"""%%%;; } } void loop(){(){ ba*aPin3();(); allKanan((";:,,"%,,7:,,:);); } }
void allKanan((int 'peedAal,, int 'etPointara9,, int Kp,,int Kd)) {
{
int Prevara9Kanan;;
int To-bol == di3italRead((A:););
??Para-eter P6
int 1rrorara9 == 'etPointara9-- <ara9Kanan;;
int 6erivative1rrorara9 == Prevara9Kanan-- <ara9Kanan;;
int PersenBelo9 == ((((((Kp**1rrorara9)/)/"%)+)+ ((
((Kd**6erivative1rrorara9)/)/"%));)); ?? <i9a ne3ati@ (terlalu 9e 9iri)& positi@ (terlalu 9e 9anan)
??Para-eter Wall Jolloin3
unsi3ned */ar 6epan6e9at == ":;;
int t/res/old== 5%;;
-ode == %;;
??pe-batasan nilai
if if((PersenBelo9 > > t/res/old)) { { PersenBelo9== t/res/old;; } } if if((PersenBelo9 < < --t/res/old)) { { PersenBelo9== --t/res/old;; } }
speedKiri == 'peedAal -- PersenBelo9;;
speedKanan == 'peedAal ++ PersenBelo9;;
if
if(!(!To-bol)) ??sit*/ terte9an atau -obil -enabra9
{ { MundurFurus();(); _delaG_-s((7%%);); PutarKiri((":%);); _delaG_-s((7%%);); } } else else ??WallJolloer { { if
if((<ara96epan < < 6epan6e9at)) ??depan de9at
{ { if if((<ara96epan > > 7)) { {
PutarKiri((2%%);); ??belo9 9anan
_delaG_-s(("7%);); } } else else ??nabra9 { { MundurFurus();(); _delaG_-s((2%%);); PutarKiri((2:%);); _delaG_-s((":%);); } } } } else
else ?? depan <au/
{ { if if((<ara9Kanan > > 7%)) { { Ma<uBelo9((2::,,"%%);); _delaG_-s((2%%);); Ma<uFurus();(); _delaG_-s((2%%);); } } else else { { if if((<ara9'eron3 > > "%)) { {
Ma<uBelo9((speedKiri,, speedKanan););
_delaG_-s((:%);); } } else else { { Ma<uBelo9((":%,,2%%);); _delaG_-s(("%%);); } } } }
} }
void allKiri((int 'peedAal,, int 'etPointara9,, int Kp,,int Kd)) {
{
int Prevara9Kiri;;
int To-bol2 == di3italRead((A8););
??Para-eter P6
int 1rrorara9 == 'etPointara9-- <ara9Kiri;;
int 6erivative1rrorara9 == Prevara9Kiri-- <ara9Kiri;;
int PersenBelo9 == ((((((Kp**1rrorara9)/)/"%)+)+ ((
((Kd**6erivative1rrorara9)/)/"%));)); ?? <i9a ne3ati@ (terlalu 9e 9anan)& positi@ (terlalu 9e 9iri)
??Para-eter Wall Jolloin3
unsi3ned */ar 6epan6e9at == ":;;
int t/res/old== 5%;; -ode == ";; ??pe-batasan nilai if if((PersenBelo9 > > t/res/old)) { { PersenBelo9== t/res/old;; } } if if((PersenBelo9 < < --t/res/old)) { { PersenBelo9== --t/res/old;; } }
speedKiri == 'peedAal ++ PersenBelo9;;
speedKanan == 'peedAal -- PersenBelo9;;
if
if(!(!To-bol2)) ??sit*/ terte9an atau -obil -enabra9
{ { MundurFurus();(); _delaG_-s((7%%);); PutarKanan((":%);); _delaG_-s((2%%);); } } else else ??WallJolloer { { if
if((<ara96epan < < 6epan6e9at)) ??depan de9at
{ { if if((<ara96epan > > 7)) { {
PutarKanan((2%%);); ??belo9 9anan
_delaG_-s((":%);); } } else else ??nabra9 { { MundurFurus();(); _delaG_-s((7%%);); PutarKanan((2:%);); _delaG_-s((2%%);); } } } } else
else ?? depan <au/
{ { if if((<ara9Kiri > > 7%)) { { Ma<uBelo9(("%%,,2::);); _delaG_-s((":%);); 23
Ma<uFurus();(); _delaG_-s(("%);); } } else else { {
Ma<uBelo9((speedKiri,, speedKanan););
_delaG_-s((:%);); } } } } Prevara9Kiri == <ara9Kiri;; } } } } void displaGara9(){(){ l*d..*lear();(); l*d..print((<ara96epan);); l*d..setCursor((I,, %);); if if((-ode ==== %)) { { l*d..print((<ara9Kanan);); } } else else ifif((-ode ==== ")) { { l*d..print((<ara9Kiri);); } } _delaG_-s(("%%);); } }
void ba*aPin3((void){){
pin36epan..@ire();();
<ara96epan == pin36epan..*enti-eters();();
pin3Kanan..@ire();();
<ara9Kanan == pin3Kanan..*enti-eters();();
pin3'eron3..@ire();();
<ara9'eron3== pin3'eron3..*enti-eters();();
pin3Kiri..@ire();();
<ara9Kiri== pin3Kiri..*enti-eters();(); }
}
void ber/enti((void){){
l*d..setCursor((%,, ");); l*d..print((%);); l*d..setCursor(("2,, ");); l*d..print((%);); P!RTB == ((% << << PB8)) || ((% << << PB:);); P!RT6 == ((% << << P68)) || ((% << << P6:);); _delaG_-s((:%);); } }
void PutarKiri((int 9e*epatan){){
l*d..setCursor((%,, "););
l*d..print((9e*epatan););
l*d..setCursor(("2,, "););
l*d..print((9e*epatan););
void PutarKanan((int 9e*epatan){){ l*d..setCursor((%,, ");); l*d..print((9e*epatan);); l*d..setCursor(("2,, ");); l*d..print((9e*epatan);); P!RT6 == ((% << << PB8)) || ((" << << PB:);); P!RTB == ((" << << P68)) || ((% << << P6:););
setPWM((9e*epatan,,9e*epatan);); }
}
void Ma<uFurus((void){){
l*d..setCursor((%,, ");); l*d..print((22:);); l*d..setCursor(("2,, ");); l*d..print((22:);); P!RT6 == ((" << << PB8)) || ((% << << PB:);); P!RTB == ((" << << P68)) || ((% << << P6:);); setPWM((2::,,2:2);); } }
void MundurFurus((void){){
l*d..setCursor((%,, ");); l*d..print((22:);); l*d..setCursor(("2,, ");); l*d..print((22:);); P!RT6 == ((% << << PB8)) || ((" << << PB:);); P!RTB == ((% << << P68)) || ((" << << P6:);); setPWM((2::,,2:2);); } }
void Ma<uBelo9((int 9iri,, int 9anan){){
l*d..setCursor((%,, ");); l*d..print((9iri);); l*d..setCursor(("2,, ");); l*d..print((9anan);); if if ((9anan> > 2::){){ 9anan == 2::;; } } else else ifif((9anan < <"%%){){ 9anan == "%%;; } } if if((9iri > > 2::){){ 9iri == 2::;; } } else else ifif((9iri < <"%%){){ 9iri == "%%;; } } P!RTB == ((" << << PB8)) || ((% << << PB:);); P!RT6 == ((" << << P68)) || ((% << << P6:););
setPWM((9iri,, 9anan);); }
}
void setPWM((double inputKiri,, double inputKanan))
{ { TCCR2A == _B((C!M2A")) || _B((C!M2B")) || _B((W$M2")) || _B((W$M2%);); TCCR2B == _B((C'22);); !CR2A == inputKiri;; !CR2B == inputKanan;; } }
void int_<ara9((void)) {
{
TM'K" == %b%%%%%%;;
TM'K" == _B((T!1");); ??-en3a9ti@9an !ver@lo nterrupt
TCCR"A == %;; TCCR"B == %b%%%%""%";; ??pres*alar "%28 TCT" == :44"%;; ?? untu9 %," deti9 sei();(); } }