BAB IV HASIL PENGAMATAN DAN PEMBAHASAN
4.3. Analisa dan Pembahasan Perangkat Lunak
4.3.2. Aplikasi Visual Basic
4.3.2.4. Proses Cetak Tiket dengan Perangkat Keras Printer
Proses pencetakan tiker masuk yang akan diterima oleh client saat akan masuk ke area parkir mobil dicetak melalui perangkat keras printer. Jenis tulisan yang akan tercetak pada struk parkir Times New Roman sehingga perintah berisi „Printer.Font = "Times New Roman"‟. Perintah printer.currentX dan printer.currentY merupakan perintah pada Visual Basic untuk menentukan posisi tulisan yang akan tercetak nanti atau sebagai koordinat X dan If parkir(2) < 15 And parkir(0) = 15 And parkir(1) = 15 And parkir(4) = 15 Then
Call garis For i = 0 To 3
If PC(i) = False Then
Form1.PC(i).FillColor = &HC000&
Form1.Text1.Text = "Silahkan Parkir Di:" & vbNewLine & "P.C" & i + 1 GoTo tampil4
Y. „Printer.FontSize = 10‟ adalah untuk ukuran tulisan yang akan tercetak. Tulisan yang akan tercetak pada kertas dilakukan dengan perintah „Printer.Print‟. Tiket yang tercetak berisi
ucapan “Selamat Datang” dan pesan informasi yang dituju untuk client yang berisi alamat blok parkir yang akan masih kosong dan terdekat yang terdapat pada form1 Visual Basic di menu toolbox text. Printer.Endcoc merupakan perintah untuk minta diakhiri untuk dicetak sehingga sistem tidak berulang terus untuk mencetak tiket.
Sub cetak()
Printer.Font = "Times New Roman" Printer.CurrentX = 0
Printer.CurrentY = 0 Printer.FontSize = 10
Printer.Print Tab(4); " Selamat Datang " Printer.Print Tab(2); "================" Printer.Print Tab(2); Form1.Text1
Printer.EndDoc End Sub
BAB V
KESIMPULAN DAN SARAN
5.1.
Kesimpulan
Dari hasil pengujian serta pengambilan data pada aplikasi penampil visual basic untuk optimasi ketersediaan tempat parkir mobil, dapat diambil kesimpulan:
1. Lokasi parkir yang telah terisi mobil dan lokasi yang belum terisi mobil dapat terdeteksi oleh sensor dan dapat ditampilkan pada penampil Visual Basic di komputer.
2. Metode optimasi dengan algoritma dijkstra untuk pencarian jalur terpendek dapat berfungsi sesuai rancangan dan sesuai dengan teori. Sistem berhasil mendeteksi jalur yang terdekat sesuai dengan kondisi mobil yang terdeteksi oleh sensor cahaya.
3. Sistem parkir mobil ini mempunyai fasilitas untuk mencetak tiket berupa informasi lokasi parkir yang dituju.
5.2.
Saran
Saran-saran bagi pengembangan selanjutnya adalah:
1. Komunikasi antara mikrokontroler dan PC dikembangkan dengan sistem
wirelessbluetooth sehingga sistem dapat menjadi lebih praktis dan efisien. 2. Karcis parkir yang diterima ditambahkan dengan waktu masuk parkir dan
nomor plat mobil yang dapat dideteksi dengan sensor kamera untuk meningkatkan keamanan.
3. Menambahkan sistem kode batang (barcode) pada karcis untuk pembayaran otomatis dengan mengakulasi waktu datang dengan waktu keluar sesuai dengan biaya yang ditentukan sesuai kebijakan.
DAFTAR PUSTAKA
[1] Ardiana, f., 2011, Sistem Ketersediaan Parkir Mobil Menggunakan SMS (Short Message Service), Institut Bisnis dan Informatika STIKOM Surabaya.
[2] ---,2009.Pengembangan Sistem Pakar Menggunakan Visual Basic. Yogyakarta:Andi Offset.
[3] ---, 2012, Bab III Dasar Teori LDR, STIKOM, Surabaya.
[4] ---, 2014, Data sheet Mikrokontroler Atmega8535, Atmel
[5] Bejo, A., 2008, C dan AVR Rahasia Kemudahan Bahasa C dalam Mikrokontroler ATMEGA32, 1st ed, GRAHA ILMU, Yogyakarta.
[6] Winoto, A., 2002, Mikrokontroler AVR ATEMEGA8/32/8535 dan Pemrogramannya dengan Bahasa C pada WinAVR, INFORMATIKA, Bandung.
[7] Heryanto M.A., ST., Ir. Wisni Adi P., 2008, Pemrograman Bahasa C untuk Mikrokontroler ATMEGA32, 1st ed, C.V ANDI OFFSET, Yogyakarta.
[8] Adrianto, H., 2008, Pemrograman Mikrokontroler AVR ATMEGA 16, 1st ed, INFORMATIKA, Bandung.
[9] Sumbodo, W., 2008, Jilid 3, Teknik Produksi Mesin Industri, Direktorat Pembinaan Sekolah Menengah Kejuruan, Dirjen Manajemen Pendidikan Dasar dan Menengah, Hak Cipta Depdiknas.
[10] Zuhal, dan Zhanggischan, 2004, Prinsip Dasar Elektroteknik, PT Gramedia Pustaka Utama, Jakarta.
[11] http://www.fairchildsemi.com/regulator7805, diakses 29 Oktober 2015.
[12] Honeycutt, R.A., 1988, Op Amps and Linear Integrated Circuits, Delmar Publishers Inc., New York.
[13] Fathoni, 2010, Unjuk Kerja Catu Daya 12 Volt 2A dengan Pass Element Transistor NPN dan PNP, Politeknik Negeri Malang.
[14] Suarga,M.Sc.,M.Math.,Ph.D., 2012, Algoritma dan Pemrograman, 2nd ed, C.V ANDI OFFSET, Yogyakarta.
[15] Suryadi,H.s,1996, "Teori Graf Dasar", Gunadarma, Jakarta.
Rangkaian Regulator
Rangkaian Light Dependent Resistor
Rangkaian Komparator
GUI Visual Basic Form 1
GUI Visual Basic Form 1 (Keadaan Parkir Penuh)
Listing Program CVAVR
/***************************************************** Chip type : ATmega32A
Program type : Application
AVR Core Clock frequency: 11.059200 MHz Memory model : Small
External RAM size : 0 Data Stack size : 512
*****************************************************/
#include <mega32a.h> #include <stdio.h> #include <stdlib.h>
#define P_A (~PINC.0*1+~PINC.1*2+~PINC.2*4+~PINC.3*8) #define P_B (~PINC.4*1+~PINC.5*2+~PINC.6*4+~PINC.7*8) #define P_C (~PINA.0*1+~PINA.1*2+~PINA.2*4+~PINA.3*8) #define P_D (~PINB.0*1+~PINB.1*2+~PINB.2*4+~PINB.3*8) #define P_E (~PINB.4*1+~PINB.5*2+~PINB.6*4+~PINB.7*8)
unsigned char cek, parkirA, parkirB, parkirC, parkirD, parkirE;
void cek_parkir() { parkirA=P_A; parkirB=P_B; parkirC=P_C; parkirD=P_D; parkirE=P_E; } void main(void) { DDRA=0x00; PORTA=0xFF; DDRB=0x00; PORTB=0xFF; DDRC=0x00; PORTC=0xFF; DDRD.0=0; PORTD.0=1; DDRD.1=1; PORTD.1=1; // USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On
// USART Transmitter: On // USART Mode: Asynchronous // USART Baud Rate: 9600 UCSRA=0x00;
UCSRB=0x18; UCSRC=0x06; UBRRH=0x00; UBRRL=0x47;
while (1) {
cek=getchar(); // terima data dari serial
if(cek=='M') // apakah data di terima sama dengan M?
{
cek_parkir(); // panggil fungsi cek keadaan parkir
printf("* %d %d %d %d %d #\n",parkirA, parkirB, parkirC, parkirD, parkirE); //
kirim keadaan parkir melalui serial
} } }
Listing Program GUI VISUAL BASIC Dim a, awal, akhir As String
Dim spasi(6), i, k As Byte Dim parkir(5) As Byte Dim waktu, j, x As Byte
Dim PA(4), PB(4), PC(4), PD(4), PE(4) As Boolean
Sub cetak()
Printer.Font = "Times New Roman" Printer.CurrentX = 0
Printer.CurrentY = 0 Printer.FontSize = 10
Printer.Print Tab(4); " Selamat Datang " Printer.Print Tab(2); "================" Printer.Print Tab(2); Form1.Text1
Printer.EndDoc End Sub Function parsing() k = 0 For i = 1 To Len(a) If Mid(a, i, 1) = " " Then spasi(k) = i k = k + 1 End If Next i
parkir(0) = Val(Mid(a, spasi(0), spasi(1) - spasi(0))) 'pakir a parkir(1) = Val(Mid(a, spasi(1), spasi(2) - spasi(1))) 'parkir b parkir(2) = Val(Mid(a, spasi(2), spasi(3) - spasi(2))) 'parkir c parkir(3) = Val(Mid(a, spasi(3), spasi(4) - spasi(3))) 'parkir d parkir(4) = Val(Mid(a, spasi(4), spasi(5) - spasi(4))) 'parkir e End Function
j = x biner = "" For i = 0 To 3 If (j Mod 2) = 1 Then Select Case k Case 0 PA(i) = True Form1.PA(i).FillColor = &H0& Case 1 PB(i) = True Form1.PB(i).FillColor = &H0& Case 2 PC(i) = True Form1.PC(i).FillColor = &H0& Case 3 PD(i) = True Form1.PD(i).FillColor = &H0& Case 4 PE(i) = True Form1.PE(i).FillColor = &H0& End Select Else: Select Case k Case 0 PA(i) = False Form1.PA(i).FillColor = &HFFFFFF Case 1 PB(i) = False Form1.PB(i).FillColor = &HFFFFFF Case 2 PC(i) = False Form1.PC(i).FillColor = &HFFFFFF Case 3 PD(i) = False Form1.PD(i).FillColor = &HFFFFFF Case 4 PE(i) = False Form1.PE(i).FillColor = &HFFFFFF End Select End If j = j \ 2 Next i End Function Function warna() For k = 0 To 4 x = parkir(k) Call konversi(x) Next k
End Function Function garis() For i = 0 To 4 Form1.Line1(i).Visible = Flase Next i End Function Function mencari_parkir() If parkir(0) < 15 Then Call garis For i = 0 To 3
If PA(i) = False Then
Form1.PA(i).FillColor = &HC000&
Form1.Text1.Text = "Silahkan Parkir Di:" & vbNewLine & "P.A" & i + 1 GoTo tampil1 End If Next i tampil1: cetak Form1.Line1(0).Visible = True End If
If parkir(1) < 15 And parkir(0) = 15 Then Call garis
For i = 0 To 3
If PB(i) = False Then
Form1.PB(i).FillColor = &HC000&
Form1.Text1.Text = "Silahkan Parkir Di:" & vbNewLine & "P.B" & i + 1 GoTo tampil2 End If Next i tampil2: cetak Form1.Line1(1).Visible = True End If
If parkir(4) < 15 And parkir(0) = 15 And parkir(1) = 15 Then Call garis
For i = 0 To 3
If PE(i) = False Then
Form1.PE(i).FillColor = &HC000&
Form1.Text1.Text = "Silahkan Parkir Di:" & vbNewLine & "P.E" & i + 1 GoTo tampil3 End If Next i tampil3: cetak Form1.Line1(1).Visible = True Form1.Line1(2).Visible = True End If
If parkir(2) < 15 And parkir(0) = 15 And parkir(1) = 15 And parkir(4) = 15 Then Call garis
For i = 0 To 3
If PC(i) = False Then
Form1.PC(i).FillColor = &HC000&
Form1.Text1.Text = "Silahkan Parkir Di:" & vbNewLine & "P.C" & i + 1 GoTo tampil4 End If Next i tampil4: cetak Form1.Line1(0).Visible = True Form1.Line1(3).Visible = True End If
If parkir(3) < 15 And parkir(0) = 15 And parkir(1) = 15 And parkir(4) = 15 And parkir(2) = 15 Then
Call garis For i = 0 To 3
If PD(i) = False Then
Form1.PD(i).FillColor = &HC000&
Form1.Text1.Text = "Silahkan Parkir Di:" & vbNewLine & "P.D" & i + 1 GoTo tampil5 End If Next i tampil5: cetak Form1.Line1(4).Visible = True End If End Function
Private Sub Cek_Click() waktu = 0 serial.Output = "M" a = "" Do USD = DoEvents() INSTRING$ = serial.Input a = a + INSTRING$ awal = Left(a, 1) akhir = Right(a, 1)
If awal = "*" And akhir = "#" Then
Call parsing ' memanggil fungsi untuk memisahkan data serial Call warna
If parkir(0) = 15 And parkir(1) = 15 And parkir(2) = 15 And parkir(3) = 15 And parkir(4) = 15 Then
Label1(1).Visible = True Label2.Visible = False Timer1.Enabled = True Else:
Form1.Visible = True Call mencari_parkir Timer1.Enabled = True End If
End If
Loop Until INSTRING$ = Chr$(13) End Sub
Private Sub Form_Load() Timer1.Enabled = False Label1(1).Visible = Flase Label2.Visible = True Form1.Visible = False serial.CommPort = 5 serial.Settings = "9600,N,8,1" serial.InputLen = 1 serial.PortOpen = True End Sub
Private Sub Timer1_Timer() If waktu < 6 Then
If parkir(0) = 15 And parkir(1) = 15 And parkir(2) = 15 And parkir(3) = 15 And parkir(4) = 15 Then
Label1(1).Visible = True Label2.Visible = False Else: Form1.Visible = True End If Else Label1(1).Visible = False Label2.Visible = True Form1.Visible = False Timer1.Enabled = False End If waktu = waktu + 1 End Sub
Listing Program Algoritma Dijkstra Pencarian Jalur Terpendek di Visual Basic Private Sub Command1_Click()
Dim panjang(5), panjangA(4), panjangB(3), panjangE(2), panjangD(1) As Integer Dim Min As Integer, i As Integer
Dim LA, LB, LD, LAB, LAC, LBE, LED, LDC As Integer
LA = Val(Text6(0).Text) LB = Val(Text7(2).Text) LD = Val(Text12(6).Text) LAB = Val(Text13(4).Text) LAC = Val(Text8(3).Text) LBE = Val(Text9(7).Text) LED = Val(Text11(5).Text) LDC = Val(Text10(1).Text) panjang(0) = LA 'LA panjang(1) = LB 'LB panjang(2) = 99 'LC panjang(3) = LD 'LD panjang(4) = 99 'LE
panjangA(0) = LAB 'LAB panjangA(1) = LAC 'LAC panjangA(2) = 99 'LAD panjangA(3) = 99 'LAE
panjangB(0) = 99 'LBC panjangB(1) = 99 'LBD panjangB(2) = LBE 'LBE
panjangE(0) = 99 'LEC panjangE(1) = LED 'LED
panjangD(0) = LDC 'LDC
MinA = 32767 'nilai maksimal untuk integer
'mencari minimal a For i = 0 To 4
If panjang(i) < MinA Then MinA = panjang(i) Else
MinA = MinA End If
'cari min bcde For i = 0 To 3
If panjang(i + 1) < panjangA(i) + panjang(0) Then Min = panjang(i + 1)
Else
Min = panjangA(i) + panjang(0) End If
panjang(i + 1) = Min Next i
MinB = 32767 'nilai maksimal untuk integer
'mencari minimal b For i = 1 To 4
If panjang(i) < MinB Then MinB = panjang(i) Else
MinB = MinB End If
Next i
'cari min cde For i = 0 To 2
If panjang(i + 2) < panjangB(i) + panjang(1) Then Min = panjang(i + 2)
Else
Min = panjangB(i) + panjang(1) End If
panjang(i + 2) = Min Next i
MinC = 32767 'nilai maksimal untuk integer
'mencari minimal e For i = 2 To 4
If panjang(i) < MinC Then MinC = panjang(i) Else MinC = MinC End If Next i 'cari min cd For i = 0 To 1
If panjang(i + 2) < panjangE(i) + panjang(4) Then Min = panjang(i + 2)
Else
Min = panjangE(i) + panjang(4) End If
panjang(i + 2) = Min Next i
MinD = 32767 'nilai maksimal untuk integer
'mencari min c For i = 2 To 3
If panjang(i) < MinD Then MinD = panjang(i) Else MinD = MinD End If Next i 'cari min d
If panjang(3) < panjangD(0) + panjang(2) Then MinD = panjang(3)
Else
MinD = panjangD(0) + panjang(2) End If panjang(3) = MinD If a = 1 Then panjang(0) = 99 End If Text1.Text = panjang(0) Text2.Text = panjang(1) Text3.Text = panjang(2) Text4.Text = panjang(3) Text5.Text = panjang(4) End Sub