Fungsi kode_data Penentuan Error Sudut

30 menggunakan modul socket sama seperti perancangan dengan menggunakan port 13000 untuk menerima dan port 14000 untuk mengirim data. data, addr = UDPSock.recvfrombuf print data diterima \t: + strdata data, addr = UDPSock.recvfrombuf merupakan perintah untuk menerima data yang di kirim oleh coach computer.

4.1.3.2 Fungsi kode_data

Fungsin kode_data merupakan fungsi untuk memilah data diterima menjadi data variabel sesuai dengan tabel format penerimaan data. Program ini meneteksi array alamat ke nol menjadi patokan data apa yang diterima. Berikut listing dari fungsi kode_data def kode_datadata: global kon, j_error, pv_sudut, sp_sudut, tendang, enab if data[0] == 5: enab = intdata[1] elif data[0] == 6: tendang = intdata[1] elif data[0] == 7: print koreksi sudut pv_sudut = intdata[1]+data[2]+data[3]+data[4] sp_sudut = intdata[5]+data[6]+data[7]+data[8] elif data[0] == 8: j_error = intdata[1]+data[2]+data[3] print jarak elif data[0] == 9: kon = strdata[1] print kondisi

4.1.3.3 Penentuan Error Sudut

Penentuan error sudut tidak lepas dari penentuan letak sudut. Gambar 4.2 merupakan gambar Letak sudut ditentukan oleh coach computer, maka robot harus menentukan error sudut berdasarkan gambar 4.2. Penentuan error dilakukan untuk mengetahui seberapa menyimpang robot dengan tujuan dan menentukan gerakan robot. Jika pv_sudut adalah -45 dan sp_sudut adalah +45 maka error adalah +90, dan sebaliknyab pv_sudut adalah -135 dan sp_sudut adalah +135 maka error sudut harus sama dengan -90. Penentuan error sudut pada robot dilakukan oleh fungsi olah_data. Dengan menentukan variabel ‘batas’. Batas adalah sudut yang membentuk garis lurus melewati 31 pusat sudut. s_error akan bernilai -180 sampai dengan +180 maka untuk mengperkecil nilai error sudut yang ada maka s_error dibagi dengan 9.5. dengan demikian range error adalah -18,95 sampai 18,95. Tabel 4.1 merupakan contoh-contoh nilai error sudut. kemudian diubah menjadi -10 sampai 10. Gambar 4.11 Denah Sudut Diterima. Tabel 4.1 Daftar Contoh Error pv_sudut sp_sudut s_error -45 -180 -135 -45 -135 -90 -45 -90 -45 -45 -45 -45 +45 -45 +45 +90 -45 +90 +135 -45 +135 +180 -45 +170 -145 -45 +180 -135 def olah_data: global error, pv_sudut, sp_sudut batas = 0 s_error = 0 if sp_sudut 0: 32 batas = -180 + sp_sudut if sp_sudut 0: batas = 180 + sp_sudut if sp_sudut = 0: if pv_sudut = sp_sudut: for i in rangesp_sudut, pv_sudut, 1: s_error = s_error - 1 if pv_sudut sp_sudut: if pv_sudut = batas: for i in rangepv_sudut, sp_sudut, 1: s_error = s_error + 1 if pv_sudut batas: for i in rangepv_sudut, sp_sudut, 1: s_error = s_error - 1 if sp_sudut 0: if pv_sudut sp_sudut: for i in rangepv_sudut, sp_sudut, 1: s_error = s_error + 1 if pv_sudut = sp_sudut: if pv_sudut = batas: for i in rangesp_sudut, pv_sudut, 1: s_error = s_error + 1 if pv_sudut batas: for i in rangesp_sudut, pv_sudut, 1: s_error = s_error - 1 error = s_error 9.5 untuk 10 derajat = 1 error if 3 s_error -3: error = 0 if error 10: error = 10 elif error -10: error = -10

4.1.3.4 Fungsi PID