• Tidak ada hasil yang ditemukan

LAMPIRAN A. Prosedur Pengoperasian Sistem. xxi

N/A
N/A
Protected

Academic year: 2021

Membagikan "LAMPIRAN A. Prosedur Pengoperasian Sistem. xxi"

Copied!
62
0
0

Teks penuh

(1)

xxi 

LAMPIRAN A

Prosedur Pengoperasian Sistem

(2)

xxii 

LA.1. Prosedur Pengoperasian Alat

Bagian ini menjelaskan tentang bagaimana cara mengoperasikan alat pengukur tingkat kematangan buah yang telah dirancang.Komponen yang diperlukan adalah alat pengukur tingkat kematangan buah dan driver (CP210x_VCP_Windows) untuk alat tersebut.

Pertama, sambungkan listrik PLN pada soket 220VAC. Kemudian, sambungkan alat pengukur tingkat kematangan buah dengan komputer menggunakan kabel USB melalui USB Port.Perhatikan lampu indicator.Jika lampu indicator menyala berarti alat sudah mendapatkan arus listrik.Komputer akan melakukan auto detect terhadap alat tersebut. Kemudian, install driver (CP210x_VCP_Windows) untuk alat pengukur tingkat kematangan buah.

Gambar LA.1. Soket 220V AC

Setelah driver terpasangkan, lepaskan kabel USB dari

komputer.Kemudian, pasang kembali, 3 buah lampu indikator pada alat akan berkedip yang menandakan proses inisialisasi alat.Lalu, pasangkan sensor ultrasonik sesuai dengan simbol “T” dan “R”.

(3)

xxiii 

Gambar LA.2. Lampu Indikator dan USB Port

Lakukan koneksi dari program MatLab ke alat dan tunggu lampu indikator “C”yang menandakan alat sudah terhubung dengan program MatLab menyala. Tempelkan probe transduser pada buah dengan posisi berseberangan pada buah. Kemudian tekan tombol“Trigger” yang berada di kananlampu kontol untuk memulai proses pembacaan buah.

(4)

xxiv 

Setelah tombol ditekan, lampu “P”akan menyala yang menandakan proses pembacaan tingkat kandungan air dan tekstur buah serta proses Analog to Digital Converter sedang berlangsung. Setelah lampu proses padam, disusul dengan lampu “S” menyala yang menandakan proses pengiriman data hasil pengukuran buah sedang dikirimkan ke program MatLab. Setelah pengiriman data selesai, alat kembali dalam posisi standby dan siap untuk melakukan pengukuran kembali pada buah lainnya.

Untuk melepas alat dari komputer, lakukan disconnect dari program MatLab atau tutup program MatLab terlebih dahulu dan tunggu hingga lampu “C” tidak lagi menyala yang menandakan alat sudah tidak terkoneksi dengan program MatLab. Setelah lampu koneksi padam, maka alat sudah dapat dilepaskan dari komputer dengan mencabut kabel USB dan mencabut soket 220VAC.

LA.2. Prosedur Penggunaan Program MatLab

Bagian ini menjelaskan tentang bagaimana cara menggunakan program MatLab yang telah dirancang. Lakukan install terhadap program stand alone MatLab pada komputer dan kemudian buka program tersebut.

Setelah alat dihubungkan dengan komputer, lakukan pemilihan terhadap port yang menjadi koneksi dari komputer ke alat.Kemudian, tekan tombol connect untuk melakukan koneksi dengan alat. Koneksi berhasil ditandai dengan berubahnya tombol connect menjadi disconnect.

Selanjutnya, melakukan pemilihan terhadap jenis buah yang ingin dilakukan pembacaan tingkat kematangannya.Jenis buah yang dapat dipilih

(5)

xxv 

terdapat pada bagian “Pilih Buah”. Tidak tepatnya pemilihan jenis buah akan mengalami pembacaan tingkat kematangan buah tidak tepat.

Kemudian, menunggu alat memulai proses pembacaan dan mengirimkan datanya ke program MatLab. Ketika data diterima, maka akan ditampilkan pada program MatLab sehingga pengguna dapat melihat tingkat kematangan buah. Jika ingin melakukan pembacaan berikutnya, cukup menunggu saja data dari alat. Tapilan akan dibersihkan dan diganti dengan data pembacaan yang baru.

Ketika selesai menggunakan program, lakukan disconnect terlebih dahulu dan kemudian keluar dari program atau dapat langsung menekan tombol “Exit” atau menggunakan tanda silang yang terdapat pada kanan atas dari tampilan program tanpa melakukan disconnect terlebih dahulu.

(6)

xxvi 

LAMPIRAN B

Data Hasil Penelitian

(7)

xxvii 

LB.1. Uji Lab Model empiris

(8)

xxviii 

LB.2. Data Percobaan

(9)

xxix 

Tabel LB.1. Data Uji Pengetahuan Manusia Buah Alpukat.

Sampel

Hasil Pembacaan Alat Hasil Analisa Manusia Kadar Air (%) Kekerasan Kematangan Persentase Kematangan Kematangan 1 87.74 0.55 Lewat Matang 142.73 Lewat Matang 86.21 0.58 Matang 124.84 88.11 0.54 Lewat Matang 145.85 2 85.47 0.63 Matang 102.43 Matang 85.89 0.71 Matang 100 86.32 0.6 Matang 103.38 3 87.45 0.75 Matang 99.32 Matang 86.94 0.77 Matang 98.43 85.71 0.8 Mengkal 87.83 4 87.53 0.57 Lewat Matang 132.41 Lewat Matang error error error error

85.79 0.6 Matang 102.63 5 86.23 0.7 Matang 100 Matang 86.92 0.68 Matang 98.65 87.53 0.66 Matang 99.42 8 87.42 0.71 Matang 98.63 Matang 86.59 0.74 Matang 97.49 86.75 0.69 Matang 102.48 9 87.45 0.73 Mengkal 94.83 Matang 86.9 0.73 Matang 97.82 87.65 0.7 Matang 98.64 10 85.74 0.79 Mengkal 89.94 Mengkal 85.93 0.77 Matang 96.26 86.74 0.8 Mengkal 88.58 11 87.86 0.55 Lewat Matang 138.95 Lewat Matang 87.65 0.57 Lewat Matang 133.56 86.25 0.6 Matang 119.28 12 86.73 0.69 Matang 104.58 Matang 87.86 0.71 Matang 101.37 86.61 0.75 Matang 97.94 13

error error error error error error error error

(10)

xxx  14 86.38 0.57 Matang 126.84 Lewat Matang 87.95 0.6 Matang 120.36 88.74 0.57 Lewat Matang 128.48 16 86.94 0.68 Matang 106.48 Matang 86.16 0.7 Matang 100 85.86 0.7 Mengkal 97.53 17 86.94 0.71 Matang 101.28 Matang 86.16 0.73 Matang 102.83 85.86 0.68 Matang 105.39 18 87.34 0.74 Matang 96.48 Matang 87.91 0.77 Matang 94.2 87.2 0.71 Matang 98.35 19 86.92 0.67 Matang 107.28 Matang 86.96 0.7 Matang 100 87.42 0.7 Matang 101.47 20

error error error error

86.23 0.56 Lewat Matang 128.93 Lewat Matang 85.58 0.59 Lewat Matang 124.57 21 86.74 0.68 Matang 106.48 Matang 86.92 0.71 Matang 98.67 85.94 0.7 Matang 101.24 23 87.75 0.58 Matang 127.85 Lewat Matang 88.02 0.56 Lewat Matang 131.39 87.3 0.6 Matang 117.48 24 86.49 0.73 Matang 97.36 Matang 86.63 0.75 Matang 95.86 86.93 0.74 Matang 96.46 25 85.94 0.74 Matang 95.86 Matang 86.62 0.76 Matang 94.67 86.09 0.73 Matang 98.42 26 87.43 0.54 Lewat Matang 134.83 Lewat Matang 87.82 0.55 Lewat Matang 132.45 88.03 0.57 Matang 131.57 27 88.31 0.59 Matang 126.78 Lewat Matang 88.72 0.56 Lewat Matang 126.46

(11)

xxxi  28 87.67 0.56 Lewat Matang 132.78 Lewat Matang 87.38 0.59 Matang 118.37 87.95 0.59 Lewat Matang 124.92 29 85.48 0.79 Mengkal 88.85 Mengkal 85.93 0.81 Mengkal 86.48 84.99 0.78 Matang 93.47

Tabel LB.2. Data Uji Lab IPB Buah Alpukat.

No. Sampel

Hasil Pembacaan Alat Hasil Analisa Lab IPB Kadar

Air (%) Kekerasan Kematangan

Persentase Kematangan Kematangan Kadar Air (%) Kekerasan 6 84.51 0.65 Matang 121.03 Matang 85.99 0.55 85.12 0.68 Matang 123.51 86.08 0.77 Mentah 79.71 85.23 0.61 Matang 115.91 84.89 0.51 Matang 134.48 85.42 0.45 Lewat Matang 157.61

error error error error

86.55 0.63 Lewat

Matang 152.43

error error error error

85.24 0.6 Lewat Matang 147.89 7 87.99 0.55 Matang 124.89 Matang 88.77 0.65 86.51 0.61 Matang 103.73 89.34 0.79 Matang 100

error error error error

88.21 0.77 Mengkal 84.71 86.87 0.7 Mentah 80.43 87.37 0.69 Matang 98.01 87.83 0.59 Lewat Matang 139.04 85.98 0.63 Matang 119.32 87.31 0.66 Matang 106.87 15 87.01 0.6 Matang 97.89 Matang 87.38 0.69

error error error error

error error error error

(12)

xxxii 

86.71 0.65 Matang 98.41 87.98 0.71 Mengkal 85.49 88.01 0.63 Mengkal 87.34

error error error error

87.67 0.68 Matang 97.99 87.34 0.66 Matang 98.51 22 85.55 0.79 Mengkal 87.56 Matang 86.35 0.72 85.98 0.8 Mengkal 85.31 87.03 0.76 Matang 98.54 86.71 0.75 Matang 99.87

error error error error

86.88 0.69 Matang 97.5

86.01 0.74 Matang 98.13

87.02 0.75 Matang 100

86.91 0.71 Matang 99.52

error error error error

30 84.4 0.69 Matang 93.47 Matang 83.95 0.59 83.56 0.65 Matang 96.77 84.23 0.61 Matang 97.62 82.99 0.41 Lewat Matang 124.03 83.76 0.57 Matang 100 84.55 0.64 Mengkal 89.33 84.32 0.64 Mengkal 87.51

error error error error

84.14 0.65 Matang 91.05

error error error error

Tabel LB.3. Data Uji Pengetahuan Manusia Buah Mangga.

Sampel

Hasil Pembacaan Alat Hasil Analisa Manusia Kadar Air (%) Kekerasan Kematangan Persentase Kematangan Kematangan 1 87.14 0.77 Matang 101.83 Matang 86.93 0.8 Matang 100 86.84 0.83 Matang 98.43 3 86.12 0.82 Matang 102.23 Matang 86.58 0.8 Matang 101.89 87.84 0.76 Matang 104.27 4 85.54 0.9 Mengkal 80.29 Matang 86.34 0.88 Matang 96.39

(13)

xxxiii  87.58 0.79 Matang 102.64 6 87.89 0.67 Lewat Matang 134.87 Lewat Matang error error error error

87.43 0.7 Matang 108.34 7 86.86 0.79 Matang 105.84 Matang 86.69 0.8 Matang 99.75 86.21 0.84 Matang 97.48 8 86.31 0.85 Matang 96.86 Matang 86.03 0.81 Matang 98.63 86.99 0.79 Matang 104.83 9

error error error error

86.4 0.88 Matang 95.38 Matang 86.23 0.85 Matang 96.49 10 87.69 0.78 Matang 102.48 Matang 87.36 0.76 Matang 105.39 86.31 0.83 Matang 98.92 11 86.46 0.8 Matang 98.29 Matang 86.68 0.8 Matang 98.58

error error error error 12 84.92 0.97 Mentah 82.94 Mentah 85.37 0.95 Mengkal 89.84 85.98 0.94 Mengkal 91.27 13 86.86 0.75 Matang 106.48 Matang error error error error

87.2 0.78 Matang 103.38 14 84.68 0.97 Mentah 83.49 Mentah 84.93 0.96 Mentah 85.94 85.87 0.93 Mengkal 92.64 15 85.03 0.96 Mentah 86.53 Mentah 84.98 0.95 Mengkal 88.35 84.67 0.97 Mentah 85.47 17 86.64 0.87 Matang 95.37 Matang 86.69 0.85 Matang 97.25 86.31 0.84 Matang 97.79 18 87.98 0.79 Matang 103.64 Matang 86.34 0.8 Matang 97.3 86.54 0.83 Matang 96.68 19

error error error error

88.02 0.66 Lewat

Matang 130.38 Lewat Matang

(14)

xxxiv  Matang 20 87.79 0.79 Matang 102.48 Matang 86.56 0.82 Matang 96.69 87.74 0.77 Matang 104.58 21 87.47 0.76 Matang 107.59 Matang 87.68 0.78 Matang 104.51 87.36 0.74 Matang 110.58 23 85.84 0.97 Mentah 85.79 Mentah 85.31 0.96 Mentah 88.39 86.02 0.94 Mengkal 90.28 24 86.63 0.87 Matang 98.48 Matang 86.32 0.85 Matang 98.59 86.78 0.88 Mengkal 96.46 25 86.61 0.86 Matang 100 Matang 85.84 0.9 Mengkal 94.84

error error error error 27 85.57 0.9 Mengkal 93.98 Mentah 84.78 0.93 Mengkal 91.38 86.21 0.88 Matang 97.58 28 87.98 0.79 Matang 105.39 Matang 86.58 0.83 Matang 98.36 86.39 0.81 Matang 100 29 87.84 0.75 Matang 104.68 Matang 87.53 0.76 Matang 103.57 86.93 0.79 Matang 100 30 85.68 0.9 Mengkal 95.38 Mentah 86.13 0.88 Matang 97.46 85.99 0.89 Mengkal 97.98

Tabel LB.4. Data Uji Lab IPB Buah Mangga.

No. Sampel

Hasil Pembacaan Alat Hasil Analisa Lab IPB Kadar

Air (%) Kekerasan Kematangan

Persentase Kematangan Kematangan Kadar Air (%) Kekerasan 2 81.31 0.87 Matang 100 Matang 80.8 0.86 82.45 0.75 Matang 102.47

error error error error

80.44 0.78 Matang 101.57 82.39 0.87 Matang 118.55 81.64 0.78 Matang 101.98

(15)

xxxv  80.51 0.78 Lewat Matang 102.5 79.77 0.88 Mengkal 89.66 78.45 0.87 Matang 97.82 81.6 0.87 Matang 100 5 83.32 0.78 Matang 98.55 Matang 83.45 0.76 86.64 0.68 Lewat Matang 142.71 83.39 0.81 Matang 95.99

error error error error

84.44 0.64 Lewat

Matang 125.41

83.62 0.74 Matang 110.61 83.78 0.75 Matang 110.98 83.33 0.68 Matang 111.83

error error error error

84.87 0.61 Lewat Matang 129.76 16 85.47 0.79 Matang 103.28 Mengkal 85.91 0.93 84.42 0.88 Matang 93.48 84.78 0.87 Matang 100 86.33 0.95 Mengkal 87.47

error error error error

85.73 0.89 Matang 99.56 86.54 0.89 Matang 101.34 84.99 0.91 Mengkal 92.67 86.23 0.9 Mengkal 93.2 85.66 0.85 Matang 97.93 22 86.8 0.88 Matang 101.25 Matang 86.76 0.89 86.53 0.7 Matang 109.47 85.99 0.85 Matang 100 85.98 0.92 Mengkal 89.35 86.34 0.91 Mengkal 92.98

error error error error

86.51 0.86 Matang 102.74 87.2 0.81 Matang 101.38 86.89 0.83 Matang 103.32 87.03 0.9 Mengkal 90.02 26 86.05 0.69 Lewat Matang 135.34 Matang 85.98 0.77 85.06 0.72 Matang 104.77 85.51 0.75 Matang 102.39

(16)

xxxvi  85.78 0.8 Matang 97.74 86.98 0.82 Mengkal 92.21 86.23 0.8 Matang 95.98 85.43 0.79 Matang 100 84.99 0.73 Matang 96.21 86.21 0.8 Matang 94.8

error error error error

Tabel LB.5. Data Uji Pengetahuan Manusia Buah Pepaya.

Sampel Kadar Air

(%) Kekerasan Kematangan Persentase Kematangan Kematangan 1 87.39 0.83 Matang 102.37 Matang 86.85 0.8 Matang 107.29 86.95 0.84 Matang 101.48 2 90.54 0.49 Busuk 163.29 Busuk 91.23 0.53 Busuk 154.75

error error error error 3 88.91 0.89 Matang 98.27 Matang 87.49 0.88 Matang 96.48 87.12 0.88 Matang 97.38 4 86.48 0.85 Matang 100 Matang 87.13 0.87 Matang 98.38 87.69 0.84 Matang 102.64 5

error error error error

88.43 0.89 Matang 95.39 Matang 90.28 0.92 Mengkal 89.29 7 87.84 0.79 Lewat Matang 128.38 Lewat Matang 87.12 0.82 Matang 109.32 88.48 0.75 Lewat Matang 131.49 8 89.54 0.73 Lewat Matang 137.28 Lewat Matang 88.29 0.77 Lewat Matang 127.45 88.47 0.76 Lewat Matang 130.28 9 87.59 0.84 Matang 103.72 Matang 86.43 0.81 Matang 108.63 87.56 0.78 Lewat Matang 127.39

(17)

xxxvii  11 86.98 0.86 Matang 98.74 Matang 87.01 0.84 Matang 100 87.26 0.84 Matang 101.84 12

error error error error

89.46 0.9 Mengkal 89.72 Mengkal

error error error error

13 88.59 0.76 Lewat Matang 128.38 Lewat Matang 87.39 0.8 Matang 110.92 88.46 0.79 Lewat Matang 126.47 14 87.95 0.76 Lewat Matang 129.94 Lewat Matang 87.88 0.77 Lewat Matang 127.38 89.47 0.74 Lewat Matang 130.28 15 88.38 0.72 Lewat Matang 131.74 Lewat Matang 87.19 0.74 Lewat Matang 129.93 89.74 0.75 Lewat Matang 127.48 16 87.5 0.81 Matang 105.26 Matang 86.95 0.83 Matang 103.85 87.64 0.84 Matang 102.19 18 87.59 0.88 Matang 97.39 Matang 88.14 0.85 Matang 100 88.36 0.86 Matang 98.38 20 89.03 0.96 Mengkal 85.18 Mentah 90.72 0.99 Mentah 80.57 90.43 0.99 Mentah 79.98 21 88.92 0.75 Lewat Matang 129.38 Lewat Matang 87.59 0.77 Lewat Matang 128.84 87.28 0.75 Lewat Matang 128.59 22 87.35 0.83 Matang 104.28 Matang 87.64 0.82 Matang 106.85

error error error error

23 86.89 0.79

Lewat

Matang 127.83 Lewat Matang

(18)

xxxviii  Matang 87.37 0.8 Matang 107.64 24 90.83 0.93 Mengkal 89.34 Mengkal 89.26 0.91 Mengkal 92.55 87.94 0.88 Matang 96.39 25 87.38 0.86 Matang 98.27 Matang 87.99 0.86 Matang 98.77 88.38 0.89 Matang 95.39 26 87.59 0.84 Matang 102.38 Matang 87.89 0.85 Matang 100 86.28 0.87 Matang 96.37 27 88.48 0.89 Matang 96.29 Matang 90.26 0.9 Mengkal 93.22 87.39 0.86 Matang 97.84 28 87.59 0.83 Matang 106.62 Matang 88.39 0.81 Matang 106.39 87.94 0.8 Matang 108.64 30

error error error error

89.74 0.77 Lewat

Matang 130.26 Matang

87.29 0.8 Matang 107.75

Tabel LB.6. Data Uji Lab IPB Buah Pepaya.

No. Sampel

Hasil Pembacaan Alat Hasil Analisa Lab IPB Kadar

Air (%) Kekerasan Kematangan

Persentase Kematangan Kematangan Kadar Air (%) Kekerasan 6 88.06 0.72 Lewat Matang 135.92 Lewat Matang 89.24 0.7 88.67 0.65 Lewat Matang 145.62 89.21 0.66 Lewat Matang 146.28 88.38 0.74 Lewat Matang 133.87 89.52 0.8 Matang 119.63 88.79 0.79 Matang 121.29 89.33 0.81 Matang 117.78 89.57 0.75 Lewat Matang 130.63

error error error error

(19)

xxxix  10 86.86 0.8 Matang 105.23 Matang 87.63 0.85 86.97 0.82 Matang 108.8 87.42 0.89 Matang 98.23 87.53 0.85 Matang 100 87.97 0.9 Mengkal 89.38 86.79 0.92 Mengkal 92.64 88.02 0.84 Matang 100

error error error error

86.99 0.9 Mengkal 88.82 87.78 0.83 Matang 98.73 17 87.55 0.7 Lewat Matang 135.83 Lewat Matang 87.24 0.74 87.67 0.63 Lewat Matang 144.34 87.91 0.69 Lewat Matang 141.85

error error error error

86.69 0.78 Matang 120.36 88.03 0.75 Matang 122.84 87.7 0.75 Lewat Matang 132.75 87.82 0.8 Matang 105.73 86.87 0.74 Lewat Matang 134.52

error error error error

19

88.68 0.9 Mengkal 89.64

Mengkal 90.67 0.98 89.03 0.92 Mengkal 90.53

89.64 0.85 Matang 100

error error error error

89.85 0.87 Matang 98.75 89.63 0.91 Mengkal 89.92 88.85 0.88 Matang 103.62 88.03 0.9 Mengkal 88.97

error error error error

88.95 0.8 Matang 109.64 29 89.9 0.89 Mengkal 91.93 Mengkal 90.23 0.91 90.31 0.95 Mengkal 84.62 88.86 0.9 Mengkal 88.64

error error error error

90.43 0.86 Matang 97.88 89.75 0.91 Mengkal 88.23 88.9 0.85 Matang 100

(20)

xl 

89.85 0.89 Mengkal 93.72 89.94 0.88 Matang 95.83 88.87 0.84 Matang 101.23

(21)

xli 

LAMPIRAN C

Dokumentasi Penelitian

(22)

xlii 

(23)

xliii 

(24)

xliv 

(25)

xlv 

(26)

xlvi 

Gambar LC.5. Foto 1 Uji Buah Berdasarkan Pengetahuan Manusia

(27)

xlvii 

LAMPIRAN D

Coding Peranti Lunak

(28)

xlviii 

LD.1. Coding Alat

Modul Main #include <mega8.h> #include <delay.h> #include <string.h> #include <UARTlib.h> #include <Ultrasoniclib.h> #include <ADClib.h> #include <stdio.h> #define TRUE 1 #define FALSE 0 #define LED_ON 0 #define LED_OFF 1

#define CONNECT PORTB.0 #define PROCESS PORTB.4 #define SENDING PORTB.5 #define TRIGGER PIND.3

void Initialization(void);

void Processing(unsigned char *Data1, unsigned char *Data2, unsigned char *Data3, unsigned char *Data4, unsigned char *Data5, unsigned char *Data6); unsigned char Connecting(void);

(29)

xlix 

unsigned char Sending(unsigned char *Data1, unsigned char *Data2, unsigned char *Data3, unsigned char *Data4, unsigned char *Data5, unsigned char *Data6);

void main(void) {

unsigned char Tries, Status=FALSE; unsigned char Texture1[4], Water1[4]; unsigned char Texture2[4], Water2[4]; unsigned char Texture3[4], Water3[4];

Initialization(); while(1) { while(Connecting() == FALSE); Status = TRUE; while(1) { while(TRIGGER == TRUE) { if(Disconnect() == TRUE) {

(30)

l  Status = FALSE; break; } } if(Status == FALSE) break;

Processing(Texture1, Water1, Texture2, Water2, Texture3, Water3);

for(Tries=0;Tries<3;Tries++) {

if(Sending(Texture1, Water1, Texture2, Water2, Texture3, Water3) == TRUE) break; } if(Tries == 3) SENDING = LED_OFF; while(TRIGGER == FALSE); } } }

(31)

li  void Initialization(void) { DDRB = 0xFF; //DDRC = 0xFF; DDRD = 0x00; CONNECT = LED_ON; PROCESS = LED_ON; SENDING = LED_ON; delay_ms(250); CONNECT = LED_OFF; PROCESS = LED_OFF; SENDING = LED_OFF; //PORTC = 0x00; PORTD = 0xFF; Init_UART(9600); ADMUX = 0x00; ADCSRA = 0x81; PORTB.1 = 0; PORTB.2 = 0; //TCCR1A = 0xA2; //TCCR1B = 0x18; //OCR1A = 0x0000;

(32)

lii  //OCR1B = 0x0000;

}

unsigned char Connecting(void) {

unsigned char Chk_Con;

Chk_Con = Receive_Data(0); if(Chk_Con == 'C') { Send_Data("C"); Chk_Con = Receive_Data(500); if(Chk_Con == 'Y') { CONNECT = LED_ON; return TRUE; } else return FALSE; } else return FALSE; }

(33)

liii  unsigned char Disconnect(void)

{

unsigned char Chk_Con;

Chk_Con = Receive_Data(5); if(Chk_Con == 'D') { Send_Data("D"); CONNECT = LED_OFF; return TRUE; } else return FALSE; }

void Processing(unsigned char *Data1, unsigned char *Data2, unsigned char *Data3, unsigned char *Data4, unsigned char *Data5, unsigned char *Data6) {

int TryCalc;

unsigned char tmpData1[2]; unsigned char tmpData2[2]; unsigned char tmpData3[2]; unsigned char tmpData4[2]; unsigned char tmpData5[2];

(34)

liv  unsigned char tmpData6[2];

PROCESS = LED_ON;

TryCalc = 0;

memset(tmpData1, 0x00, sizeof(tmpData1));

while((tmpData1[0] == 0x00) && (tmpData1[1] == 0x00) && (TryCalc < 3)) {

Frequency_35KHz(); Read_ADC(0, tmpData1); TryCalc++;

}

delay_ms(1000); // need delay to clear the sound first

TryCalc = 0;

memset(tmpData2, 0x00, sizeof(tmpData2));

while((tmpData2[0] == 0x00) && (tmpData2[1] == 0x00) && (TryCalc < 3)) {

Frequency_45KHz();

Read_ADC(0, tmpData2); TryCalc++;

(35)

lv 

delay_ms(1000); // need delay to clear the sound first

TryCalc = 0;

memset(tmpData3, 0x00, sizeof(tmpData3));

while((tmpData3[0] == 0x00) && (tmpData3[1] == 0x00) && (TryCalc < 3)) {

Frequency_35KHz(); Read_ADC(0, tmpData3); TryCalc++;

}

delay_ms(1000); // need delay to clear the sound first

TryCalc = 0;

memset(tmpData4, 0x00, sizeof(tmpData4));

while((tmpData4[0] == 0x00) && (tmpData4[1] == 0x00) && (TryCalc < 3)) {

Frequency_45KHz();

Read_ADC(0, tmpData4); TryCalc++;

}

(36)

lvi  TryCalc = 0;

memset(tmpData5, 0x00, sizeof(tmpData5));

while((tmpData5[0] == 0x00) && (tmpData5[1] == 0x00) && (TryCalc < 3)) {

Frequency_35KHz(); Read_ADC(0, tmpData5); TryCalc++;

}

delay_ms(1000); // need delay to clear the sound first

TryCalc = 0;

memset(tmpData6, 0x00, sizeof(tmpData6));

while((tmpData6[0] == 0x00) && (tmpData6[1] == 0x00) && (TryCalc < 3)) { Frequency_45KHz(); Read_ADC(0, tmpData6); TryCalc++; } memset(Data1, 0x00, sizeof(Data1));

sprintf(Data1, "%X%X", tmpData1[0], tmpData1[1]); memset(Data2, 0x00, sizeof(Data2));

(37)

lvii  memset(Data3, 0x00, sizeof(Data3));

sprintf(Data3, "%X%X", tmpData3[0], tmpData3[1]); memset(Data4, 0x00, sizeof(Data4));

sprintf(Data4, "%X%X", tmpData4[0], tmpData4[1]);

memset(Data5, 0x00, sizeof(Data5));

sprintf(Data5, "%X%X", tmpData5[0], tmpData5[1]); memset(Data6, 0x00, sizeof(Data6));

sprintf(Data6, "%X%X", tmpData6[0], tmpData6[1]);

PROCESS = LED_OFF; }

unsigned char Sending(unsigned char *Data1, unsigned char *Data2, unsigned char *Data3, unsigned char *Data4, unsigned char *Data5, unsigned char *Data6) {

unsigned char ACK;

SENDING = LED_ON;

Send_Data(Data1);

ACK = Receive_Data(500); if(ACK != 'S')

(38)

lviii  return FALSE; Send_Data(Data2); ACK = Receive_Data(500); if(ACK != 'S') return FALSE; Send_Data(Data3); ACK = Receive_Data(500); if(ACK != 'S') return FALSE; Send_Data(Data4); ACK = Receive_Data(500); if(ACK != 'S') return FALSE; Send_Data(Data5); ACK = Receive_Data(500); if(ACK != 'S') return FALSE; Send_Data(Data6); ACK = Receive_Data(500);

(39)

lix  if(ACK != 'S') return FALSE; SENDING = LED_OFF; return TRUE; } Modul ADClib #include <mega8.h> #include <delay.h> #include <string.h>

#define mode_ADC 0x00 // 0x00 for ADLAR = 0, 0x20 for ADLAR = 1

void Read_ADC(unsigned char pin_adc, unsigned char *Data) {

unsigned char pADCH, pADCL;

//DDRC = 0x00; //PORTC = 0x00; delay_ms(2000); memset(Data, 0x00, sizeof(Data)); while(1) {

(40)

lx  ADMUX = pin_adc | mode_ADC; ADCSRA |= 0x40;

while((ADCSRA & 0x10) == 0); ADCSRA |= 0x10;

pADCL = ADCL;

pADCH = ADCH & 0x03;

if(Data[0] < pADCH) Data[1] = 0x00;

if((Data[0] <= pADCH) && (Data[1] < pADCL)) { Data[0] = pADCH; Data[1] = pADCL; } else { TCCR1A = 0x00; TCCR1B = 0x00; PORTB.1 = 0; PORTB.2 = 0; //TCCR1B = 0x18; break;

(41)

lxi  } delay_ms(500); } //DDRC = 0xFF; //PORTC = 0x00; } Modul Ultrasoniclib #include <mega8.h> void Frequency_35KHz(void) { TCCR1A = 0xA2; //TCCR1B = 0x18; TCCR1B = 0x1A; ICR1 = 0x001B; OCR1A = 0x0018; OCR1B = 0x0018; } void Frequency_45KHz(void) { TCCR1A = 0xA2;

(42)

lxii  //TCCR1B = 0x18; TCCR1B = 0x1A; //ICR1 = 0x0018; ICR1 = 0x0015; OCR1A = 0x0012; OCR1B = 0x0012; } Modul UARTlib #include <mega8.h> #include <stdio.h> #include <delay.h>

void Init_UART(unsigned long int baud_rate) {

const long int oscilator = 8000000; unsigned long int UBRR;

UBRR = (oscilator/(16*baud_rate))-1; UBRRL = UBRR; UBRRH = UBRR>>8; UCSRB = 0x18; UCSRC = 0x86; }

(43)

lxiii  unsigned char Receive_Data(int Delay) {

if(Delay > 0) {

while( !(UCSRA & 0x80) ) { delay_ms(1); Delay--; if(Delay == 0) return 0; } return UDR; } else return getchar(); }

void Send_Data(unsigned char *Data) {

delay_ms(10); // need delay to clear the transmition puts(Data);

}

(44)

lxiv 

function varargout = SoftComputing(varargin)

% SOFTCOMPUTING MATLAB code for SoftComputing.fig

% SOFTCOMPUTING, by itself, creates a new SOFTCOMPUTING or raises the existing

% singleton*. %

% H = SOFTCOMPUTING returns the handle to a new SOFTCOMPUTING or the handle to

% the existing singleton*. %

% SOFTCOMPUTING('CALLBACK',hObject,eventData,handles,...) calls the local

% function named CALLBACK in SOFTCOMPUTING.M with the given input arguments.

%

% SOFTCOMPUTING('Property','Value',...) creates a new SOFTCOMPUTING or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before SoftComputing_OpeningFcn gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to SoftComputing_OpeningFcn via varargin.

%

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)". %

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help SoftComputing % Last Modified by GUIDE v2.5 15-Sep-2013 11:28:53

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @SoftComputing_OpeningFcn, ...

'gui_OutputFcn', @SoftComputing_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

(45)

lxv 

function SoftComputing_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn. % hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA) % varargin command line arguments to SoftComputing (see VARARGIN)

% Choose default command line output for SoftComputing

handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

% UIWAIT makes SoftComputing wait for user response (see UIRESUME) % uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.

function varargout = SoftComputing_OutputFcn(hObject, eventdata, handles)

% varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure

varargout{1} = handles.output;

% Create Own Function --Start

function Main_Idle(hObject, eventdata, handles) handles = guidata(handles)

RetVal = open_serial(handles.com)

if RetVal == 0

set(handles.pushbutton1, 'String', 'Connect') handles.con_stat = false stop(handles.idle_loop) guidata(handles.guifig, handles) return end Water1 = fgetl(handles.com) if isempty(Water1) fclose(handles.com) return end fwrite(handles.com, 'S') Texture1 = fgetl(handles.com) if isempty(Texture1) fclose(handles.com) return end fwrite(handles.com, 'S')

(46)

lxvi  Water2 = fgetl(handles.com) if isempty(Water2) fclose(handles.com) return end fwrite(handles.com, 'S') Texture2 = fgetl(handles.com) if isempty(Texture2) fclose(handles.com) return end fwrite(handles.com, 'S') Water3 = fgetl(handles.com) if isempty(Water3) fclose(handles.com) return end fwrite(handles.com, 'S') Texture3 = fgetl(handles.com) if isempty(Texture3) fclose(handles.com) return end fwrite(handles.com, 'S') fclose(handles.com)

TextureDec = (hex2dec(Texture1) + hex2dec(Texture2) + hex2dec(Texture3)) / 3

WaterDec = (hex2dec(Water1) + hex2dec(Water2) + hex2dec(Water3)) / 3

if (WaterDec > 50) || (TextureDec > 50)

fis_figure = readfis(strcat(handles.fruit_choose, '_Air')) result_water = evalfis(WaterDec, fis_figure)

fis_figure = readfis(strcat(handles.fruit_choose, '_Tekstur')) result_texture = evalfis(TextureDec, fis_figure)

fis_figure = readfis(handles.fruit_choose)

result_analysis = evalfis([TextureDec WaterDec], fis_figure)

switch handles.fruit_choose

case'Mangga'

if result_analysis < 70

text_result = 'Mentah'

elseif (result_analysis >= 70) && (result_analysis < 80) text_result = 'Mengkal'

elseif (result_analysis >= 80) && (result_analysis < 145) text_result = 'Matang'

elseif (result_analysis >= 145) && (result_analysis < 180) text_result = 'Lewat Matang'

else text_result = 'Busuk' end case'Alpukat' if result_analysis < 80 text_result = 'Mentah'

elseif (result_analysis >= 80) && (result_analysis < 90) text_result = 'Mengkal'

(47)

lxvii 

text_result = 'Matang'

elseif (result_analysis >= 110) && (result_analysis < 130) text_result = 'Lewat Matang'

else text_result = 'Busuk' end case'Pepaya' if result_analysis < 75 text_result = 'Mentah'

elseif (result_analysis >= 75) && (result_analysis < 90) text_result = 'Mengkal'

elseif (result_analysis >= 90) && (result_analysis < 115) text_result = 'Matang'

elseif (result_analysis >= 115) && (result_analysis < 165) text_result = 'Lewat Matang'

else

text_result = 'Busuk'

end end

set(handles.edit1, 'String', strcat(sprintf('%0.2f', result_water), ' %'))

set(handles.edit2, 'String', sprintf('%0.2f', result_texture)) set(handles.edit3, 'String', strcat(sprintf('%0.2f',

result_analysis), ' %'))

set(handles.edit4, 'String', text_result)

else

set(handles.edit1, 'String', 'ERROR') set(handles.edit2, 'String', 'ERROR') set(handles.edit3, 'String', 'ERROR') set(handles.edit4, 'String', 'ERROR')

end

guidata(handles.guifig, handles)

function Ret = open_serial(serial_port)

try

fopen(serial_port)

catch

Ret = 0

figure = msgbox('Open Port Failed', 'Communication', 'error') uiwait(figure)

return end

Ret = 1

% Create Own Function --End

% --- Executes during object creation, after setting all properties.

function figure1_CreateFcn(hObject, eventdata, handles)

% hObject handle to figure1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

handles.fruit_choose = 'Mangga'

handles.con_stat = false

(48)

lxviii 

handles.guifig = gcf handles.idle_loop = timer

set(handles.idle_loop, 'ExecutionMode', 'fixedSpacing')

set(handles.idle_loop, 'TimerFcn', {@Main_Idle, handles.guifig}) set(handles.idle_loop, 'Period', 0.1)

guidata(hObject, handles)

% --- Executes on selection change in popupmenu1.

function popupmenu1_Callback(hObject, eventdata, handles)

% hObject handle to popupmenu1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA) % Hints: contents = cellstr(get(hObject,'String')) returns popupmenu1 contents as cell array

% contents{get(hObject,'Value')} returns selected item from popupmenu1

com = get(hObject, 'Value')

switch com case 1 com = 'COM1' case 2 com = 'COM2' case 3 com = 'COM3' case 4 com = 'COM4' case 5 com = 'COM5' case 6 com = 'COM6' case 7 com = 'COM7' case 8 com = 'COM8' case 9 com = 'COM9' end

set(handles.com, 'Port', com) guidata(hObject, handles)

% --- Executes during object creation, after setting all properties.

function popupmenu1_CreateFcn(hObject, eventdata, handles)

% hObject handle to popupmenu1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: popupmenu controls usually have a white background on Windows.

% See ISPC and COMPUTER.

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

(49)

lxix 

set(hObject,'BackgroundColor','white');

end

% --- Executes on button press in pushbutton1.

function pushbutton1_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

if handles.con_stat == false RetVal = open_serial(handles.com) if RetVal == 0 return end fwrite(handles.com, 'C') Data = fgetl(handles.com) if Data ~= 'C'

msgbox('Connection Failed', 'Communication', 'error')

return end

fwrite(handles.com, 'Y') fclose(handles.com)

set(handles.pushbutton1, 'String', 'Disconnect') handles.con_stat = true start(handles.idle_loop) else stop(handles.idle_loop) RetVal = open_serial(handles.com) if RetVal == 0 return end fwrite(handles.com, 'D') Data = fgetl(handles.com) if Data ~= 'D'

msgbox('Connection Failed', 'Communication', 'error')

return end

fclose(handles.com)

set(handles.pushbutton1, 'String', 'Connect') handles.con_stat = false

end

guidata(hObject, handles)

% --- Executes when user attempts to close figure1.

function figure1_CloseRequestFcn(hObject, eventdata, handles)

% hObject handle to figure1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA) % Hint: delete(hObject) closes the figure

if handles.con_stat == true stop(handles.idle_loop) RetVal = 1;

try

(50)

lxx  catch RetVal = 0 end if RetVal == 1 fwrite(handles.com, 'D') fclose(handles.com) end end delete(hObject);

% --- Executes on button press in pushbutton2.

function pushbutton2_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

close

% --- Executes when selected object is changed in uipanel2.

function uipanel2_SelectionChangeFcn(hObject, eventdata, handles)

% hObject handle to the selected object in uipanel2 % eventdata structure with the following fields (see UIBUTTONGROUP)

% EventName: string 'SelectionChanged' (read only)

% OldValue: handle of the previously selected object or empty if none was selected

% NewValue: handle of the currently selected object

% handles structure with handles and user data (see GUIDATA)

switch get(eventdata.NewValue, 'Tag')

case'radiobutton1' handles.fruit_choose = 'Mangga' case'radiobutton2' handles.fruit_choose = 'Alpukat' case'radiobutton3' handles.fruit_choose = 'Pepaya' end guidata(hObject, handles)

(51)

lxxi 

LAMPIRAN E

Datasheet

(52)
(53)
(54)

lxxiv 

LE.2. Datasheet ATMEGA8

(55)
(56)
(57)

lxxvii 

LE.3. Datasheet CA3130

(58)
(59)
(60)
(61)

lxxxi 

LE.4. Datasheet IRF840

(62)

Gambar

Gambar LA.1. Soket 220V AC
Gambar LA.2. Lampu Indikator dan USB Port
Gambar LB.1. Uji Laboratorium Model empiris
Gambar LB.2. Uji Laboratorium Data Percobaan
+7

Referensi

Dokumen terkait

Puji dan syukur kehadirat Allah SWT atas rahmat dan karunia-Nya sehingga dapat menyelesaikan Skripsi yang berjudul Pengelolaan Air Kolam Tambang Untuk Mendukung Perencanaan

Manfaat PHBS di lingkungan sekolah yaitu agar terwujudnya sekolah yang bersih dan sehat sehingga siswa, guru dan masyarakat lingkungan sekolah terlindungi dari berbagai

Dari indikator kejelasan tujuan yang hendak dicapai, rata-rata tanggapan responden menyatakan sudah sangat baik; Dari indikator kejelasan strategi pencapaian

[r]

Dengan kamera diletakkan di depan suatu kendaraan yang bertujuan untuk mempermudah dalam scanning jalan raya untuk dilakukan pengolahan citra, serta GPS yang akan

• Hukuman finansial kepada para legislator dan swasta cenderung lebih rendah daripada kerugian negara yang diakibatkan.. Hukuman Finansial Menurut

Program berikut ini menggunakan fungsi Distance Transform yang digunakan untuk menghitung zero pixel terdekat dari semua non-zero pixel dari sebuah gambar...

Hal pertama yang semestinya dilakukan oleh pemerintah setelah mereka resmi menyandang gelar sebagai pejabat adalah memikirkan bagaimana cara mensejahterkan rakyat,