Gambar 4.20. Listing Program ADC Pada listing program yang ditunjukan gambar 4.15, menggunakan PORTA.0
sebagai PORT masukan untuk mengubah tegangan analog menjadi tegangan digital. Agar nilai desimal ADC maksimal yaitu 1023 dibagi 2 yaitu 511. Sehingga apabila tegangan
masukan 0 Volt sampai 5 Volt, akan diubah melalui ADC menjadi 0 desimal hingga 511 desimal.
Gambar 4.21. Listing Program Pengendali Conveyor Pada bagian listing program gambar 4.21 fungsinya yaitu untuk mengendalikan
motor penggerak conveyor yang dikontrol menggunakan PORTA.0. Terdapat nilai pd1 900 ini dimaksudkan untuk membuat PORTA
.0 bernilai “1”yang mengidentifikasi adanya benda dan jika nilai sensor kurang dari atau sama dengan 900 maka tidak ada objek yang
menghalang yang artinya motor conveyor akan terus berputar sampai ada benda yang menghalang.
ADC initialization ADC Clock frequency: 691.200 kHz
ADC Voltage Reference: AVCC pin ADMUX=ADC_VREF_TYPE 0xff;
ADCSRA=0x84; SPI initialization
SPI disabled SPCR=0x00;
TWI initialization TWI disabled
TWCR=0x00;
= Ada Objek di PD 1 pd1=read_adc0;
ifpd1=900{ flag1=1;
} else ifpd1900{ flag1=0;
} PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Konveyor1ON void konOn{
relay5ON; }
Konveyor 1OFF void konOff{
relay5OFF; }
4.3.1.2. Pengendali Komunikasi USART
Pada bagian ini berfungsi sebagai komunikasi serial USART untuk menghubungkan antara mikrokontroler ATmega32 dengan laptop. Baudrate yang
digunakan yaitu 9600 bps. Fungsi “getString” yaitu untuk menjalankan fungsi baca
komunikasi dari laptop agar mikrokontroler dapat mengerti apa yang dimaksud oleh laptop saat mengirimkan karakter yang mendefinisikan bentuk benda. Sedangkan fungsi
“bacasensor” yaitu untuk menjalankan fungsi baca sensor dan untuk terakhirnua “kondisi”untuk mengkondisikan sensor yang terbaca apakah ada objek atau tidak ada
objek yang terdeteksi. Listing program dapat dilihat pada gambar 4.22.
Gambar 4.22. Listing Program Komunikasi USART
4.3.1.3. Pengendali Motor DC
Program pengendali motor dc. Ini lisiting program untuk mengerakan motor 1 dan 2 sesuai dengan input yang di kenali. Listing program pengendali motor dc ditunjukan pada
gambar 4.23.
Gambar 4.23 Program Pengerak Conveyor Fungsi Komunikasi USART
Membersihkan variabel penampung untuk menerima data selanjutnya
void clearStringBuffer{ unsigned char i=0;
for i=0;i16;i++{ dataString[i]=;
} PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 4.23 Lanjutan Program Pengerak Conveyor
Listing program pada gambar 4.21 adalah pergerakan motor dc untuk conveyor 1
dan conveyor 2 dalam kegiatan memilah benda . “Void” adalah perintah untuk membuat
suatu fungsi agar ketika dieksekusi salam proses tidak perlu menulis ulang subrutin yang terdapat didalam void. Gambar 4.24 merupakan listing program untuk memilah benda
reject , Gambar 4.25 merupakan listing program untuk memilah bola benda, Gambar 4.26
merupakan listing program untuk memilah bola hijau, Gambar 4.27 merupakan listing program untuk memilah benda kotak merah, Gambar 4.28 merupakan listing program
untuk memilah benda kotak hijau.
Gambar 4.24 Listing Program Benda Reject Motor Searah Jarum Jam ON
void kananOn{ relay1ON;
relay2ON; }
Motor Searah Jarum Jam OFF void kananOff{
relay1OFF; relay2OFF;
} Motor Berlawanan Arah Jarum Jam ON
void kiriOn{ relay3ON;
relay4ON; }
Barang Reject void barangReject{
Jika Limit switch ditekan if flag7==1{
kiriOff; Motor OFF - konOn; Jalankan kembali konveyor 1
cleanObjek; Menjauhkan objek dari sensor k=0; Keluar dari rutin while
Jika limit switch tidak ditekan else ifflag7==0{
kiriOn; Motor ON - PLAGIAT MERUPAKAN TINDAKAN TIDAK TERPUJI
Gambar 4.25 Listing Program Benda Bola Merah
Gambar 4.26 Listing Program Benda Bola Hijau Bola Merah
void bolaMerah{ Jika Limit Switch ditekan
ifflag7==1{ kiriOff; Motor OFF -
kananOn; Motor ON - x=1; Mengatur objek
} Jika Limit Switch tidak ditekan
else ifflag7==0{ Jika Objek belum diatur
ifx==0{ kiriOn; Motor ON -
} Jika Objek telah diatur
else ifx==1{ Jika tidak ada objek di PD2 dan ada objek di PD1
ifflag1==1{ cleanObjek; Menjauhkan objek dari sensor
kananOff; Motor OFF - kiriOff; Motor OFF -
konOn; Jalankan kembali konveyor 1 cleanObjek; Menjauhkan objek dari sensor
l=0; Keluar dari while x=0; Mengaktifkan kembali prosedur mengatur objek
} }
Bola Hijau void bolaHijau{
Jika Limit switch tertekan ifflag7==1{
kiriOff; Motor OFF - kananOn; Motor ON -
x=1; Mengatur Objek }
Jika limit switch tidak ditekan else ifflag7==0{
Gambar 4.26 Lanjutan Listing Program Benda Bola Hijau
Gambar 4.27 Listing Program Benda Kotak Merah Jika objek belum teratur
ifx==0{ kiriOn; Motor ON -
} Jika objek telah diatur
else ifx==1{ Jika Objek telah berada pada PD2
ifflag2==1{ cleanObjek; Delay untuk menjauhkan objek dengan sensor
kananOff; Motor OFF - kiriOff; Motor OFF -
konOn; Jalankan kembali konveyor 1 cleanObjek; Menjauhkan objek dari sensor
m=0; Keluar dari rutin while x=0; Mengaktifkan fungsi mengatur objek
Kotak Merah void kotakMerah{
Jika limit switch tertekan ifflag7==1{
kiriOff; kananOn;
x=1; }
Jika limit switch tidak ditekan else ifflag7==0{
ifx==0{ kiriOn;
} else ifx==1{
ifflag3==1{ cleanObjek;
kananOff; kiriOff;