Tabel 4.13. Perbandingan program utama dengan pengukuran IO
IO Kondisi
Program Hasil Pengukuran Volt
PinB.7 PinB.7
1 4,89
PinB.6 PinB.6
1 4,89
PinB.5 PinB.5
1 4,89
Berdasarkan  tabel  4.13,  kondisi  program  tersebut  terdapat  pada  mikrokontroler  B. Pengukuran  dilakukan  pada  pinB.7,  pinB.6  dan  pinB.5  yang  digunakan  sebagai  penentu
pergerakan tangan dan kepala robot. Pada saat sensor ultrasonik mendeteksi jarak antara robot dengan  manusia  kurang  dari  200cm,  mikrokontroler  A  akan  memberikan  logika  high  pada
pinB7, pinB6 dan  pinB.5 yang terdapat pada mikrokontroler B sesuai dengan posisi  manusia terdeteksi.  Pada  saat  sensor  ultrasonik  tidak  mendeteksi  jarak  antara  robot  dengan  manusia
kurang dari 200cm, kondisi pinB.7, pinB.6 dan pinB.5 pada mikrokontroler B berlogika low.
4.9.4. Program Pengendali  Motor  Servo
Listing  program  pengendali  motor  servo  ditunjukkan  pada  gambar  4.27.  Program pengendali  motor  servo  menggunakan  interrupt  timer0  sebagai  pembangkit  pulsa  untuk
menggerakkan motor servo.
Gambar 4.27. Listing program pengendali motor servo
Listing  program  di  atas  adalah  pengaturan  port-port  yang  digunakan  untuk mengontrol motor servo. Kondisi nilai x++ artinya adalah timer mulai mencacah dari 0 hingga
255. Jika  lebih dari  itu,  maka  timer akan  overflow dan  mulai  mengaktifkan PWM. Nilai 937 adalah nilai overflow selama perioda motor servo yaitu 20ms. Jika kondisi nilai x lebih kecil
dari pada nilai variabel dataservo1, dataservo2, dataservo3, dataservo4, dataservo5, dataservo6 dan dataservo7, maka mikrokontroler akan memberikan pulsa high agar motor servo bergerak.
Jika  kondisinya  tidak  terpenuhi,  maka  port-port  yang  digunakan  motor  servo  akan  di  beri logika low sehingga motor servo tidak bergerak.
4.9.5. Program Tangan Kanan dan Kepala
Listing  program  tangan  kanan  dan  kepala  ditunjukkan  pada  gambar  4.28.  Pada  saat fungsi  ini  dieksekusi,  mikrokontroler  akan  memberikan  logika  high  pada  relay  untuk
mengaktifkan  relay dimana relay akan mengaktifkan modul mp3.
Gambar 4.28. Listing program tangan kanan dan kepala
Proses  selanjutnya  mikrokontroler  memberikan  nilai  OCR  45  pada  motor  servo  1 agar  kepala  robot  bergerak  90
atau  menghadap  ke  kanan.  Setelah  itu  mikrokontroler memberikan  nilai OCR 70 pada  motor servo 4 agar telapak tangan kanan  berada pada posisi
tegak  lurus,  selanjutnya  mikrokontroler    memberikan  nilai  OCR  pada  motor  servo  2  dan  3 sebesar  94  agar  tangan  kanan  robot  terangkat  90
.  Selanjutnya  mikrokontroler  memberikan nilai  OCR  sebesar  45  dan  94  pada  motor  servo  4  agar  telapak  tangan  kanan  bergerak  90
, proses  ini  akan  dilakukan  selama  5  detik.  Jika  timer  sama  dengan  5  detik,  maka
mikrokontroler  akan  memberikan  logika  low  pada  relay.  Kemudian    mikrokontroler memberikan nilai OCR sebesar 70 pada motor servo 1 agar kepala robot kembali menghadap
ke depan. Proses selanjutnya mikrokontroler memberikan nilai OCR  sebesar 70  pada motor servo  4,  nilai  OCR  45  pada  motor  servo  2  dan  3  agar tangan  kanan  robot  kembali  ke  posisi
awal.
4.9.6. Program Tangan Kiri dan Kepala
Listing  program  tangan  kiri  dan  kepala  ditunjukkan  pada  gambar  4.29.  Pada  saat fungsi  ini  dieksekusi,  mikrokontroler  akan  memberikan  logika  high  pada  relay  untuk
mengaktifkan  relay dimana relay akan mengaktifkan modul mp3.
Gambar 4.29. Listing program tangan kiri dan kepala
Proses selanjutnya mikrokontroler memberikan nilai OCR 94 pada motor servo 1 agar kepala  robot  bergerak  90
atau  menghadap  ke  kiri.  Setelah  itu  mikrokontroler  memberikan nilai OCR pada motor servo 7 agar telapak tangan kiri tegak lurus, selanjutnya mikrokontroler
memberikan nilai OCR pada motor servo 5 dan 6 sebesar 45 agar tangan kiri robot terangkat 90
. Kemudian mikrokontroler memberikan nilai OCR sebesar 45 dan 94 pada motor servo 1 agar  telapak  tangan  kiri  bergerak  90
,  proses  ini  akan  dilakukan  selama  5  detik.  Jika  timer sama dengan 5 detik,  maka  mikrokontroler akan  memberikan  logika  low  pada relay. Setelah
itu  mikrokontroler  memberikan  nilai  OCR  sebesar  70  pada  motor  servo  1  agar  kepala  robot kembali  menghadap  ke  depan.  Proses  selanjutnya  mikrokontroler  memberikan  nilai  OCR
sebesar 70  pada motor servo 7, nilai OCR 94 pada motor servo 2 dan 3 agar tangan kiri robot kembali ke posisi awal.
4.9.7. Program Tangan Kanan dan Kiri
Listing  program  tangan  kanan  dan  kiri  ditunjukkan  pada  gambar  4.30.  Pada  saat fungsi  ini  dieksekusi,  mikrokontroler  akan  memberikan  logika  high  pada  relay  untuk
mengaktifkan  relay dimana relay akan mengaktifkan modul mp3.
Gambar 4.30. Listing program tangan kanan dan kiri
Proses selanjutnya mikrokontroler memberikan nilai OCR 70 pada motor servo 4 dan 7 agar telapak tangan kanan dan kiri tegak lurus, selanjutnya mikrokontroler memberikan nilai
OCR  pada  motor  servo  3  dan  2  sebesar  94  dan  pada  motor  servo  6  dan  5  sebesar  45  agar tangan kanan dan kiri robot terangkat 90
. Selanjutnya mikrokontroler memberikan nilai OCR sebesar 45 dan 94 pada motor servo 4 dan 7 agar telapak tangan kanan dan kiri bergerak 90
, proses  ini  akan  dilakukan  selama  5  detik.  Jika  timer  sama  dengan  5  detik,  maka
mikrokontroler  akan  memberikan  logika  low  pada  relay.  Proses  selanjutnya  mikrokontroler memberikan nilai OCR  sebesar 70  pada motor servo 7 dan 4, nilai OCR 94 pada motor servo
5 dan 6 dan 45 pada motor servo 2 dan 3  agar tangan kanan dan kiri robot kembali ke posisi awal.
4.9.8. Program Pengaturan Timer
Listing program pengaturan timer ditunjukkan pada gambar 4.31. Program timer pada perancangan  ini  berfungsi  untuk  menentukan  lama  waktu  untuk  mengaktifkan  modul  mp3.
Pada  pembuatan  tugas  akhir  ini  modul  mp3  akan  diaktifkan  selama  5  detik.  Untuk mendapatkan  waktu  5  detik  digunakan  fasilitas  timer  1  yang  terdapat  pada  mikrokontroler.