• Tidak ada hasil yang ditemukan

Perancangan dan Realisasi EDC Berbasis Mikrokontroler Arduino Untuk Sistem Pembayaran Berbasis ISO 8583.

N/A
N/A
Protected

Academic year: 2017

Membagikan "Perancangan dan Realisasi EDC Berbasis Mikrokontroler Arduino Untuk Sistem Pembayaran Berbasis ISO 8583."

Copied!
98
0
0

Teks penuh

(1)

1

Universitas Kristen Maranatha

PERANCANGAN DAN REALISASI EDC BERBASIS

MIKROKONTROLER ARDUINO UNTUK SISTEM

PEMBAYARAN BERBASIS ISO 8583

ABSTRAK

Hans Alexander (0822013)

Jurusan Teknik Elektro Universitas Kristen Maranatha

Email : atomical@rocketmail.com

Dengan teknologi yang sudah ada sekarang, banyak sekali variasi dan

metode berbeda yang dipakai untuk membuat sesuatu dengan menggabungkan

antara hardware dan software. Tugas akhir ini adalah suatu penggabungan antara

hardware (mikrokontroler, PC, keypad, LCD, RFID, kabel penghubung, dll) dan

software (VB NET, SQL Server, dan Arduino Software) dalam suatu sistem

pembayaran yang berbasiskan standarisasi internasional untuk sistem pembayaran

yang disebut ISO 8583.

VDb dan VCM adalah fitur tambahan yang terdapat didalam sistem

pembayaran, baik metoda maupun pemakaiannya. VDb digunakan untuk

menyimpan data user secara offline, ketika SQL Server digunakan untuk

menyimpan data secara online. Sedangkan VCM berupa metoda untuk

penyimpanan data sementara didalam suatu variable atau tools untuk

mempermudah proses data ketika sistem pembayaran dilakukan.

Data yang didapat ketika menguji waktu siklus yang dibutuhkan untuk

menyelesaikan sistem pembayaran sangat variatif, bergantung kepada user itu

sendiri. Waktu yang didapat untuk setiap prosesnya berbeda-beda, tetapi yang

pasti adalah waktu yang dibutuhkan lebih lama daripada waktu yang sudah

ditentukan dalam kode program menggunakan delay untuk setiap prosesnya.

Kata kunci : Virtual Database, Virtual Cache Memory, EDC, ISO 8583, Sistem

(2)

2

Universitas Kristen Maranatha

DESIGN AND REALIZATION OF EDC BASED ON

ARDUINO MICROCONTROLLER FOR PAYMENT

SYSTEM BASED ON ISO 8583

ABSTRACT

Hans Alexander (0822013)

Jurusan Teknik Elektro Universitas Kristen Maranatha

Email : atomical@rocketmail.com

In currently technologies, there are so many variations and different

methods are used to create something that combined hardware and software. This

final project is combined hardware and software (microcontroller, PC, keypad,

LCD, RFID, connector wire, etc) in a payment system based on international

standardization for payment system is called ISO 8583.

VDb and VCM are features that rarely found on payment system, either

method or it usage. VDb is used for offline data saving, while SQL Server is used

for online data saving. Whereas VCM is a method for temporary data saving in a

variable, tools (in VB.NET likes textbox, listbox, label, etc), etc, which its

purpose is to simplified data process when payment system is running.

Data that received when testing cycle time that needed to finished payment

system is varied, depends on its user itself. Time that needed for each process are

differents, but one that certainly is time that needed are longer than time which

determined in program code using delay for each process.

Keywords : Virtual Database, Virtual Cache Memory, EDC, ISO 8583,

(3)

i

Universitas Kristen Maranatha

DAFTAR ISI

HALAMAN JUDUL, LEMBAR PENGESAHAN DAN PERNYATAAN

DAFTAR ISI... i-iii

DAFTAR GAMBAR………. iv-vii

DAFTAR TABEL………. viii

ABSTRAK... 1

ABSTRACT………...……. 2

KATA PENGANTAR... 3-4

BAB I PENDAHULUAN

I.1 Latar belakang... 5

I.2 Rumusan Masalah... 5

I.3 Tujuan... 6

I.4 Batasan Masalah... 6

BAB II DASAR TEORI

II.1 ISO 8583……….. 7

II.1.1 Konsep ISO 8583……….………. 7-8

II.2 HARDWARE

II.2.1 Mikrokontroler Arduino……… 8-10

II.2.2 SPI LCD Module………... 10-12

II.2.3 RFID (Radio Frequency IDentification)…….……...………... 12-13

II.2.4 Smart Card……….………... 13-14

II.2.5 Keypad……….……….... 15

II.3 SOFTWARE

II.3.1 Microsoft Visual Studio 2010 (VB.NET)……….…... 16

II.3.2 Arduino Software……….. 17

(4)

ii

Universitas Kristen Maranatha

BAB III PERANCANGAN DAN REALISASI

III.1 PERANCANGAN HARDWARE………... 19-20

III.1.1 Perancangan Proses Personifikasi…….………..…… 21

III.1.2 Perancangan Sistem Pembayaran……… 21-24

III.2 PERANCANGAN SOFTWARE

III.2.1 Flowchart Proses Personifikasi……….………….…. 25

III.2.2 Sub-Flowchart Penyimpanan Data User Proses Personifikasi... 26

III.2.3 Flowchart Sistem Pembayaran……….……….…... 26-27

III.2.4 Flowchart Pengiriman Data User dari Arduino ke PC Server……… 28

III.2.5 Flowchart Penerimaan Data dari Arduino ke PC Server………. 29

III.2.6 Flowchart Penerimaan Data String ID dari Arduino oleh PC Server

Dan Pengiriman Respon Dari PC Server ke Arduino……….. 29-30

III.2.7 Flowchart Penerimaan Data Restart dari Arduino oleh PC Ser-

-ver dan Pengiriman Respon dari PC Server ke Arduino……..……. 30

III.2.8 Flowchart Penerimaan Data Password dari Arduino oleh PC Ser-

-ver dan Pengiriman Respon dari PC Server ke Arduino……… 31

III.2.9 Flowchart Penerimaan Data Balance dari Arduino oleh PC Ser-

-ver dan Pengiriman Respon dari PC Server ke Arduino……… 32

III.2.10 Flowchart Penerimaan Data Top Up / Top Down dari Arduino

oleh PC Server dan Pengiriman Respon dari PC Server ke Arduino…. 33

III.3 KODE PROGRAM……….………... 34

(5)

iii

Universitas Kristen Maranatha

III.3.2 Kode Program VB.NET………. 35

III.3.2.1 Proses Login……….………... 35-37

III.3.2.2 Proses Personifikasi………..………... 37-50

III.3.2.3 Hubungan Serial………..………... 50-52

III.3.2.3.1 Activities Form………. 52-55

III.3.2.3.2 Observing Form……… 55-59

III.3.3 Kode Program Arduino………...……….. 59-60

III.3.3.1 Proses Scanning………...…………..……….…………... 60

III.3.3.2 Proses Konfirmasi Password………..………... 60-61

III.3.3.3 Proses Top Up, Top Down, dan Balance…..………... 61

III.3.3.4 Hubungan Serial………..…… 61-62

BAB IV DATA PENGAMATAN DAN ANALISA

IV.1.1 Proses Personifikasi………..…………... 63

IV.1.2 Proses Scanning……….……….. 63-64

IV.1.3 Proses Konfirmasi Password………..………. 65-66

IV.1.4 Proses Top Up, Top Down, dan Balance………... 66-67

IV.2 Hasil Pengujian……… 67-68

BAB V PENUTUP

V.1 Kesimpulan………... 69

V.2 Saran………. 69

(6)

iv

Universitas Kristen Maranatha

DAFTAR GAMBAR

Gambar 2.1 Mesin EDC……….… 8

Gambar 2.2 DFRduino Mega 2560 V2.0………... 9

Gambar 2.3 Tampak depan SPI LCD Module……….. 11

Gambar 2.4 Tampak belakang SPI LCD Module………. 11

Gambar 2.5 RFID Reader CR013A R/W RFID Module 13.56 MHz +

Antenna……… 12

Gambar 2.6 Chip / Label RFID bersebelahan dengan sebutir beras……... 13

Gambar 2.7 Smart Card untuk keperluan asuransi kesehatan di Perancis…. 14

Gambar 2.8 Mifare Card ( salah satu contoh smart card )……… 14

Gambar 2.9 DI-Smart Keypad 4x4 Input……….….. 15

Gambar 2.10 Skematik rangkaian DI-Smart Keypad 4x4 Input……… 15

Gambar 2.11 Tampilan Microsoft Visual Studio 2010……….. 16

Gambar 2.12 Tampilan Arduino Software………. 17

Gambar 2.13 Toolbar buttons pada Arduino Software……….. 17

Gambar 2.14 Tampilan Microsoft SQL Server 2008 Express………... 18

Gambar 3.1 Diagram blok proses personifikasi………. 19

Gambar 3.2 Diagram blok keseluruhan sistem……….. 19

Gambar 3.3 Skematik keseluruhan hardware dalam sistem pembayaran…. 20

Gambar 3.4 Proses personifikasi User dengan Operator……… 21

(7)

v

Universitas Kristen Maranatha

PC Server setelah personifikasi user selesai……… 21

Gambar 3.6 Proses identifikasi kartu user………... 22

Gambar 3.7 Proses pengiriman no ID yang berupa string dari RFID

Reader ke Mikrokontroler Arduino………. 22

Gambar 3.8 Proses pengiriman data dari arduino ke PC Server……….. 23

Gambar 3.9 Proses pengiriman respon untuk konfirmasi dari data string

ID user yang ditampilkan pada LCD………... 23

Gambar 3.10 Proses user memasukkan password……….. 24

Gambar 3.11 Flowchart proses personifikasi………... 25

Gambar 3.12 Flowchart penyimpanan data user……….... 26

Gambar 3.13 Flowchart sistem pembayaran………. 27

Gambar 3.14 Flowchart pengiriman data dari arduino ke PC Server………. 28

Gambar 3.15 Flowchart penerimaan data dari arduino oleh PC Server…… 29

Gambar 3.16 Flowchart penerimaan dan pengiriman data string ID

antara Arduino dan PC Server………. 30

Gambar 3.17 Flowchart penerimaan dan pengiriman data restart antara

Arduino dan PC Server………..… 30

Gambar 3.18 Flowchart penerimaan dan pengiriman data password antara

Arduino dan PC Server………... 31

Gambar 3.19 Flowchart penerimaan dan pengiriman data balance antara

Arduino dan PC Server………. 32

(8)

vi

Universitas Kristen Maranatha

/ Top Down antara Arduino dan PC Server……… 33

Gambar 3.21 Query SQL Server dan penjelasannya……….. 34

Gambar 3.22 Tampilan form login pada aplikasi VB.NET yang dipakai

Operator untuk proses login……….. 35

Gambar 3.23 Pilihan sebelum exit program dan ucapan terima kasih

ketika program berhasil ditutup………. 36

Gambar 3.24 Peringatan saat login gagal……….. 37

Gambar 3.25 Progress bar sedang dalam proses loading………. 37

Gambar 3.26 Data yang dibutuhkan operator untuk registration form…….. 38

Gambar 3.27 Tampilan registration form secara keseluruhan………... 38

Gambar 3.28 Tampilan tombol clear, clear all, VDb, dan history pada

registration form……… 39

Gambar 3.29 Tampilan Recent Registrated User Form……… 40

Gambar 3.30 Tampilan Virtual Cache Memory Form……….. 42

Gambar 3.31 Peringatan bahwa operator telah berhasil melakukan log out. 42

Gambar 3.32 Bindingnavigator………. 43

Gambar 3.33 Tombol-tombol pada bindingnavigator dan pengertiannya.... 43

Gambar 3.34 Membuat koneksi antara tool pada VB.NET dan database

di SQL Server……… 44

Gambar 3.35 UsersBindingSource Tool yang muncuk ketika koneksi antara

tools ( datagridview, textbox, dan bindingnavigator ) dan

database pada SQL Server berhasil……….. 44

(9)

vii

Universitas Kristen Maranatha

Gambar 3.37 UsersTableAdapter tool……… 46

Gambar 3.38 TableAdapterManager tool………. 50

Gambar 3.39 Tampilan Starting form………. 51

Gambar 3.40 Observing form………... 52

Gambar 3.41 Activities form………. 52

Gambar 3.42 Tools yang dipakai didalam Observing form……… 55

Gambar 3.43 Nilai pointer untuk proses dalam arduino……… 60

Gambar 3.44 Variabel yang dikirim dari arduino ke VB. NET.

Gambar 4.1 Proses Scanning kartu yang tidak terdaftar dalam database…… 64

Gambar 4.2 Proses Scanning kartu yang terdaftar dalam database…………. 64

Gambar 4.3 Scanning kartu yang dilakukan User……… 64

Gambar 4.4 Proses dimana user harus memasukkan password (kiri) dan

Proses pengecekan password yang telah dimasukkan user…… 65

Gambar 4.5 Proses dimana user memasukkan password yang kedua kalinya

(kiri) dan pemberitahuan bahwa password yang telah dimasukkan

sudah benar……….. 65

Gambar 4.6 Tampilan menu utama pada arduino………... 66

Gambar 4.7 Tampilan menu untuk top up………. 66

Gambar 4.8 Tampilan menu untuk top down………...………. 67

(10)

viii

Universitas Kristen Maranatha

DAFTAR TABEL

Tabel 4.1 Delay yang ditentukan dalam kode progra………….……..……… 68

(11)

LAMPIRAN A

(12)

1

A

Proses Top Up, Top Down, dan Registration

Private Sub Timer3_Tick(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Timer3.Tick If TextBox11.Text = "" Then

SerialPort1.Open()

TextBox11.Text = SerialPort1.ReadLine() SerialPort1.Close()

If Mid(TextBox11.Text, 1, 7) = "balance" Then

If TextBox7.Text = "100000" Then

Timer3.Stop()

Timer5.Interval = 2000 Timer5.Start()

MsgBox("User is checking balance.") ElseIf TextBox7.Text = "90000" Then

Timer3.Stop()

Timer5.Interval = 2000 Timer5.Start()

MsgBox("User is checking balance.") ElseIf TextBox7.Text = "80000" Then

Timer3.Stop()

Timer5.Interval = 2000 Timer5.Start()

MsgBox("User is checking balance.") ElseIf TextBox7.Text = "70000" Then

Timer3.Stop()

Timer5.Interval = 2000 Timer5.Start()

MsgBox("User is checking balance.") ElseIf TextBox7.Text = "60000" Then

Timer3.Stop()

Timer5.Interval = 2000 Timer5.Start()

MsgBox("User is checking balance.") ElseIf TextBox7.Text = "50000" Then

Timer3.Stop()

Timer5.Interval = 2000 Timer5.Start()

(13)

2

A

Timer3.Stop()

Timer5.Interval = 2000 Timer5.Start()

MsgBox("User is checking balance.") ElseIf TextBox7.Text = "30000" Then

Timer3.Stop()

Timer5.Interval = 2000 Timer5.Start()

MsgBox("User is checking balance.") ElseIf TextBox7.Text = "20000" Then

Timer3.Stop()

Timer5.Interval = 2000 Timer5.Start()

MsgBox("User is checking balance.") ElseIf TextBox7.Text = "10000" Then

Timer3.Stop()

Timer5.Interval = 2000 Timer5.Start()

MsgBox("User is checking balance.") Else

End If

ElseIf Mid(TextBox11.Text, 1, 8) = "tu100000" Then

If MessageBox.Show("User is requesting for tu100k", "TOP UP", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then

Timer3.Stop()

Timer5.Interval = 2000 Timer5.Start()

Else

MessageBox.Show("TOP UP Canceled") End If

ElseIf Mid(TextBox11.Text, 1, 7) = "tu50000" Then

If MessageBox.Show("User is requesting for tu50k", "TOP UP", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then

Timer3.Stop()

Timer5.Interval = 2000 Timer5.Start()

(14)

3

A

MessageBox.Show("TOP UP Canceled") End If

ElseIf Mid(TextBox11.Text, 1, 7) = "tu20000" Then

If MessageBox.Show("User is requesting for tu20k", "TOP UP", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then

Timer3.Stop()

Timer5.Interval = 2000 Timer5.Start()

Else

MessageBox.Show("TOP UP Canceled") End If

ElseIf Mid(TextBox11.Text, 1, 7) = "tu10000" Then

If MessageBox.Show("User is requesting for tu10k", "TOP UP", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then

Timer3.Stop()

Timer5.Interval = 2000 Timer5.Start()

Else

MessageBox.Show("TOP UP Canceled") End If

ElseIf Mid(TextBox11.Text, 1, 8) = "td100000" Then

If MessageBox.Show("User is requesting for td100k", "TOP DOWN", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then

Timer3.Stop()

Timer5.Interval = 2000 Timer5.Start()

Else

MessageBox.Show("TOP DOWN Canceled") End If

ElseIf Mid(TextBox11.Text, 1, 7) = "td50000" Then

If MessageBox.Show("User is requesting for td50k", "TOP DOWN", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then

Timer3.Stop()

Timer5.Interval = 2000 Timer5.Start()

(15)

4

A

MessageBox.Show("TOP DOWN Canceled") End If

ElseIf Mid(TextBox11.Text, 1, 7) = "td20000" Then

If MessageBox.Show("User is requesting for td20k", "TOP DOWN", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then

Timer3.Stop()

Timer5.Interval = 2000 Timer5.Start()

Else

MessageBox.Show("TOP DOWN Canceled") End If

ElseIf Mid(TextBox11.Text, 1, 7) = "td10000" Then

If MessageBox.Show("User is requesting for td10k", "TOP DOWN", MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes Then

Timer3.Stop()

Timer5.Interval = 2000 Timer5.Start()

Else

MessageBox.Show("TOP DOWN Canceled") End If

ElseIf TextBox11.Text = "restart" Then

Timer3.Stop()

Timer1.Interval = 2000 Timer1.Start()

Else

MsgBox("TOP UP / TOP DOWN Failed!")

Form2.ListBox1.Items.Add(Me.TextBox1.Text + "'s request for TOP UP / TOP DOWN is failed at " +

Form2.DateTimePicker1.Text + " , " + TimeOfDay) SerialPort1.Open()

SerialPort1.WriteLine("0") SerialPort1.Close()

Timer3.Stop() End If

Else

End If

(16)

5

A

Private Sub Timer5_Tick(ByVal sender As System.Object, ByVal e As

System.EventArgs) Handles Timer5.Tick If TextBox13.Text = "" Then

SerialPort1.Open()

TextBox13.Text = SerialPort1.ReadLine() SerialPort1.Close()

If Mid(TextBox13.Text, 1, 7) = "balance" Then

If TextBox7.Text = "100000" Then

SerialPort1.Open()

SerialPort1.WriteLine("0") SerialPort1.Close()

Form2.ListBox1.Items.Add(TextBox1.Text + " is checking balance...")

ElseIf TextBox7.Text = "90000" Then

SerialPort1.Open()

SerialPort1.WriteLine("9") SerialPort1.Close()

Form2.ListBox1.Items.Add(TextBox1.Text + " is checking balance...")

ElseIf TextBox7.Text = "80000" Then

SerialPort1.Open()

SerialPort1.WriteLine("8") SerialPort1.Close()

Form2.ListBox1.Items.Add(TextBox1.Text + " is checking balance...")

ElseIf TextBox7.Text = "70000" Then

SerialPort1.Open()

SerialPort1.WriteLine("7") SerialPort1.Close()

Form2.ListBox1.Items.Add(TextBox1.Text + " is checking balance...")

ElseIf TextBox7.Text = "60000" Then

SerialPort1.Open()

SerialPort1.WriteLine("6") SerialPort1.Close()

Form2.ListBox1.Items.Add(TextBox1.Text + " is checking balance...")

ElseIf TextBox7.Text = "50000" Then

SerialPort1.Open()

(17)

6

A

SerialPort1.Close()

Form2.ListBox1.Items.Add(TextBox1.Text + " is checking balance...")

ElseIf TextBox7.Text = "40000" Then

SerialPort1.Open()

SerialPort1.WriteLine("4") SerialPort1.Close()

Form2.ListBox1.Items.Add(TextBox1.Text + " is checking balance...")

ElseIf TextBox7.Text = "30000" Then

SerialPort1.Open()

SerialPort1.WriteLine("3") SerialPort1.Close()

Form2.ListBox1.Items.Add(TextBox1.Text + " is checking balance...")

ElseIf TextBox7.Text = "20000" Then

SerialPort1.Open()

SerialPort1.WriteLine("2") SerialPort1.Close()

Form2.ListBox1.Items.Add(TextBox1.Text + " is checking balance...")

ElseIf TextBox7.Text = "10000" Then

SerialPort1.Open()

SerialPort1.WriteLine("1") SerialPort1.Close()

Form2.ListBox1.Items.Add(TextBox1.Text + " is checking balance...")

Else

End If

ElseIf Mid(TextBox13.Text, 1, 8) = "tu100000" Then

TextBox7.Text = Val(TextBox7.Text) + 100000 If Val(TextBox7.Text) > 100000 Then

MsgBox("Top Up Failed!") Else

Dim balanceconfirmation As New System.IO.StreamWriter("E:\Data laptop\TA\Virtual Database TA\balanceconfirmation\" + TextBox1.Text + ".txt")

balanceconfirmation.WriteLine(TextBox7.Text) balanceconfirmation.Close()

(18)

7

A

SerialPort1.WriteLine("1") SerialPort1.Close()

Timer5.Stop()

Form2.ListBox1.Items.Add(TextBox1.Text + " is doing Top Up for 100k balance")

If System.IO.File.Exists("E:\Data

Laptop\TA\Virtual Database TA\" + Me.TextBox1.Text + ".txt") = True Then

Dim readinguserdata As New

System.IO.StreamReader("E:\Data Laptop\TA\Virtual Database TA\" +

Me.TextBox1.Text + ".txt")

ListBox1.Items.Add(readinguserdata.ReadToEnd) ListBox1.Items.Add("")

readinguserdata.Close()

ListBox1.Items.Add("ID Number " +

Me.TextBox1.Text)

ListBox1.Items.Add(Me.TextBox1.Text) ListBox1.Items.Add(Me.TextBox2.Text) ListBox1.Items.Add(Me.TextBox3.Text) ListBox1.Items.Add(Me.TextBox4.Text) ListBox1.Items.Add(Me.TextBox5.Text) ListBox1.Items.Add(Me.TextBox7.Text) ListBox1.Items.Add(Me.TextBox8.Text)

ListBox1.Items.Add(Form2.DateTimePicker1.Text + ", " + TimeOfDay)

ListBox1.Items.Add("") Dim a As Integer

Dim savinguserdata As New

System.IO.StreamWriter("E:\Data Laptop\TA\Virtual Database TA\" +

Me.TextBox1.Text + ".txt")

For a = 0 To ListBox1.Items.Count - 1

savinguserdata.WriteLine(ListBox1.Items.Item(a)) Next

savinguserdata.Close() Dim d As Integer

d = DataGridView1.CurrentRow.Index

DataGridView1.Item(6, d).Value = TextBox7.Text Me.Validate()

Me.UsersBindingSource.EndEdit()

(19)

8

A

MsgBox("TOP UP Success!") End If

End If

ElseIf Mid(TextBox13.Text, 1, 7) = "tu50000" Then

TextBox7.Text = Val(TextBox7.Text) + 50000 If Val(TextBox7.Text) > 100000 Then

MsgBox("Top Up Failed!") Else

Dim balanceconfirmation As New System.IO.StreamWriter("E:\Data laptop\TA\Virtual Database TA\balanceconfirmation\" + TextBox1.Text + ".txt")

balanceconfirmation.WriteLine(TextBox7.Text) balanceconfirmation.Close()

SerialPort1.Open()

SerialPort1.WriteLine("1") SerialPort1.Close()

Timer5.Stop()

Form2.ListBox1.Items.Add(TextBox1.Text + " is doing Top Up for 50k balance")

If System.IO.File.Exists("E:\Data

Laptop\TA\Virtual Database TA\" + Me.TextBox1.Text + ".txt") = True Then

Dim readinguserdata As New

System.IO.StreamReader("E:\Data Laptop\TA\Virtual Database TA\" +

Me.TextBox1.Text + ".txt")

ListBox1.Items.Add(readinguserdata.ReadToEnd) ListBox1.Items.Add("")

readinguserdata.Close()

ListBox1.Items.Add("ID Number " +

Me.TextBox1.Text)

ListBox1.Items.Add(Me.TextBox1.Text) ListBox1.Items.Add(Me.TextBox2.Text) ListBox1.Items.Add(Me.TextBox3.Text) ListBox1.Items.Add(Me.TextBox4.Text) ListBox1.Items.Add(Me.TextBox5.Text) ListBox1.Items.Add(Me.TextBox7.Text) ListBox1.Items.Add(Me.TextBox8.Text)

ListBox1.Items.Add(Form2.DateTimePicker1.Text + ", " + TimeOfDay)

(20)

9

A

Dim a As Integer

Dim savinguserdata As New

System.IO.StreamWriter("E:\Data Laptop\TA\Virtual Database TA\" +

Me.TextBox1.Text + ".txt")

For a = 0 To ListBox1.Items.Count - 1

savinguserdata.WriteLine(ListBox1.Items.Item(a)) Next

savinguserdata.Close() Dim d As Integer

d = DataGridView1.CurrentRow.Index

DataGridView1.Item(6, d).Value = TextBox7.Text Me.Validate()

Me.UsersBindingSource.EndEdit()

Me.TableAdapterManager1.UpdateAll(Me.TA_HanzDataSet) End If

End If

ElseIf Mid(TextBox13.Text, 1, 7) = "tu20000" Then

TextBox7.Text = Val(TextBox7.Text) + 20000 If Val(TextBox7.Text) > 100000 Then

MsgBox("Top Up Failed!") Else

Dim balanceconfirmation As New System.IO.StreamWriter("E:\Data laptop\TA\Virtual Database TA\balanceconfirmation\" + TextBox1.Text + ".txt")

balanceconfirmation.WriteLine(TextBox7.Text) balanceconfirmation.Close()

SerialPort1.Open()

SerialPort1.WriteLine("1") SerialPort1.Close()

Timer5.Stop()

Form2.ListBox1.Items.Add(TextBox1.Text + " is doing Top Up for 20k balance")

If System.IO.File.Exists("E:\Data

Laptop\TA\Virtual Database TA\" + Me.TextBox1.Text + ".txt") = True Then

Dim readinguserdata As New

System.IO.StreamReader("E:\Data Laptop\TA\Virtual Database TA\" +

Me.TextBox1.Text + ".txt")

(21)

10

A

readinguserdata.Close()

ListBox1.Items.Add("ID Number " +

Me.TextBox1.Text)

ListBox1.Items.Add(Me.TextBox1.Text) ListBox1.Items.Add(Me.TextBox2.Text) ListBox1.Items.Add(Me.TextBox3.Text) ListBox1.Items.Add(Me.TextBox4.Text) ListBox1.Items.Add(Me.TextBox5.Text) ListBox1.Items.Add(Me.TextBox7.Text) ListBox1.Items.Add(Me.TextBox8.Text)

ListBox1.Items.Add(Form2.DateTimePicker1.Text + ", " + TimeOfDay)

ListBox1.Items.Add("") Dim a As Integer

Dim savinguserdata As New

System.IO.StreamWriter("E:\Data Laptop\TA\Virtual Database TA\" +

Me.TextBox1.Text + ".txt")

For a = 0 To ListBox1.Items.Count - 1

savinguserdata.WriteLine(ListBox1.Items.Item(a)) Next

savinguserdata.Close() Dim d As Integer

d = DataGridView1.CurrentRow.Index

DataGridView1.Item(6, d).Value = TextBox7.Text Me.Validate()

Me.UsersBindingSource.EndEdit()

Me.TableAdapterManager1.UpdateAll(Me.TA_HanzDataSet) MsgBox("TOP UP Success!")

End If

End If

ElseIf Mid(TextBox13.Text, 1, 7) = "tu10000" Then

TextBox7.Text = Val(TextBox7.Text) + 10000 If Val(TextBox7.Text) > 100000 Then

MsgBox("Top Up Failed!") Else

Dim balanceconfirmation As New System.IO.StreamWriter("E:\Data laptop\TA\Virtual Database TA\balanceconfirmation\" + TextBox1.Text + ".txt")

(22)

11

A

SerialPort1.Open()

SerialPort1.WriteLine("1") SerialPort1.Close()

Timer5.Stop()

Form2.ListBox1.Items.Add(TextBox1.Text + " is doing Top Up for 10k balance")

If System.IO.File.Exists("E:\Data

Laptop\TA\Virtual Database TA\" + Me.TextBox1.Text + ".txt") = True Then

Dim readinguserdata As New

System.IO.StreamReader("E:\Data Laptop\TA\Virtual Database TA\" +

Me.TextBox1.Text + ".txt")

ListBox1.Items.Add(readinguserdata.ReadToEnd) ListBox1.Items.Add("")

readinguserdata.Close()

ListBox1.Items.Add("ID Number " +

Me.TextBox1.Text)

ListBox1.Items.Add(Me.TextBox1.Text) ListBox1.Items.Add(Me.TextBox2.Text) ListBox1.Items.Add(Me.TextBox3.Text) ListBox1.Items.Add(Me.TextBox4.Text) ListBox1.Items.Add(Me.TextBox5.Text) ListBox1.Items.Add(Me.TextBox7.Text) ListBox1.Items.Add(Me.TextBox8.Text)

ListBox1.Items.Add(Form2.DateTimePicker1.Text + ", " + TimeOfDay)

ListBox1.Items.Add("") Dim a As Integer

Dim savinguserdata As New

System.IO.StreamWriter("E:\Data Laptop\TA\Virtual Database TA\" +

Me.TextBox1.Text + ".txt")

For a = 0 To ListBox1.Items.Count - 1

savinguserdata.WriteLine(ListBox1.Items.Item(a)) Next

savinguserdata.Close() Dim d As Integer

d = DataGridView1.CurrentRow.Index

DataGridView1.Item(6, d).Value = TextBox7.Text Me.Validate()

(23)

12

A

Me.TableAdapterManager1.UpdateAll(Me.TA_HanzDataSet) MsgBox("TOP UP Success!")

End If

End If

ElseIf Mid(TextBox13.Text, 1, 8) = "td100000" Then

TextBox7.Text = Val(TextBox7.Text) - 100000 If Val(TextBox7.Text) < 0 Then

MsgBox("Top Down Failed!") Else

Dim cek_balance As Integer

If balanceconfirmation.Text =

DataGridView1.Item(6, cek_balance).Value Then

SerialPort1.Open()

SerialPort1.WriteLine("1") SerialPort1.Close()

Timer5.Stop()

Form2.ListBox1.Items.Add(TextBox1.Text + " is doing Top Down for 100k balance")

If System.IO.File.Exists("E:\Data

Laptop\TA\Virtual Database TA\" + Me.TextBox1.Text + ".txt") = True Then

Dim readinguserdata As New

System.IO.StreamReader("E:\Data Laptop\TA\Virtual Database TA\" +

Me.TextBox1.Text + ".txt")

ListBox1.Items.Add(readinguserdata.ReadToEnd) ListBox1.Items.Add("")

readinguserdata.Close()

ListBox1.Items.Add("ID Number " +

Me.TextBox1.Text)

ListBox1.Items.Add(Me.TextBox1.Text) ListBox1.Items.Add(Me.TextBox2.Text) ListBox1.Items.Add(Me.TextBox3.Text) ListBox1.Items.Add(Me.TextBox4.Text) ListBox1.Items.Add(Me.TextBox5.Text) ListBox1.Items.Add(Me.TextBox7.Text) ListBox1.Items.Add(Me.TextBox8.Text)

ListBox1.Items.Add(Form2.DateTimePicker1.Text + ", " + TimeOfDay)

(24)

13

A

Dim savinguserdata As New

System.IO.StreamWriter("E:\Data Laptop\TA\Virtual Database TA\" +

Me.TextBox1.Text + ".txt")

For a = 0 To ListBox1.Items.Count - 1

savinguserdata.WriteLine(ListBox1.Items.Item(a)) Next

savinguserdata.Close() Dim d As Integer

d = DataGridView1.CurrentRow.Index

DataGridView1.Item(6, d).Value = TextBox7.Text Me.Validate()

Me.UsersBindingSource.EndEdit()

Me.TableAdapterManager1.UpdateAll(Me.TA_HanzDataSet) MsgBox("TOP DOWN Success!")

End If Else

End If

End If

ElseIf Mid(TextBox13.Text, 1, 7) = "td50000" Then

TextBox7.Text = Val(TextBox7.Text) - 50000 If Val(TextBox7.Text) < 0 Then

MsgBox("Top Down Failed!") Else

If balanceconfirmation.Text = DataGridView1.Item(6, cek_balance).Value

Then

SerialPort1.Open()

SerialPort1.WriteLine("1") SerialPort1.Close()

Timer5.Stop()

Form2.ListBox1.Items.Add(TextBox1.Text + " is doing Top Down for 50k balance")

If System.IO.File.Exists("E:\Data

Laptop\TA\Virtual Database TA\" + Me.TextBox1.Text + ".txt") = True Then

Dim readinguserdata As New

System.IO.StreamReader("E:\Data Laptop\TA\Virtual Database TA\" +

Me.TextBox1.Text + ".txt")

(25)

14

A

ListBox1.Items.Add("") readinguserdata.Close()

ListBox1.Items.Add("ID Number " +

Me.TextBox1.Text)

ListBox1.Items.Add(Me.TextBox1.Text) ListBox1.Items.Add(Me.TextBox2.Text) ListBox1.Items.Add(Me.TextBox3.Text) ListBox1.Items.Add(Me.TextBox4.Text) ListBox1.Items.Add(Me.TextBox5.Text) ListBox1.Items.Add(Me.TextBox7.Text) ListBox1.Items.Add(Me.TextBox8.Text)

ListBox1.Items.Add(Form2.DateTimePicker1.Text + ", " + TimeOfDay)

ListBox1.Items.Add("") Dim a As Integer

Dim savinguserdata As New

System.IO.StreamWriter("E:\Data Laptop\TA\Virtual Database TA\" +

Me.TextBox1.Text + ".txt")

For a = 0 To ListBox1.Items.Count - 1

savinguserdata.WriteLine(ListBox1.Items.Item(a)) Next

savinguserdata.Close() Dim d As Integer

d = DataGridView1.CurrentRow.Index

DataGridView1.Item(6, d).Value = TextBox7.Text Me.Validate()

Me.UsersBindingSource.EndEdit()

Me.TableAdapterManager1.UpdateAll(Me.TA_HanzDataSet) MsgBox("TOP DOWN Success!")

End If Else

End If

End If

ElseIf Mid(TextBox13.Text, 1, 7) = "td20000" Then

TextBox7.Text = Val(TextBox7.Text) - 20000 If Val(TextBox7.Text) < 0 Then

MsgBox("Top Down Failed!") Else

If balanceconfirmation.Text = DataGridView1.Item(6, cek_balance).Value

(26)

15

A

SerialPort1.Open()

SerialPort1.WriteLine("1") SerialPort1.Close()

Timer5.Stop()

Form2.ListBox1.Items.Add(TextBox1.Text + " is doing Top Down for 20k balance")

TextBox7.Text = Val(TextBox7.Text) - 20000 If System.IO.File.Exists("E:\Data

Laptop\TA\Virtual Database TA\" + Me.TextBox1.Text + ".txt") = True Then

Dim readinguserdata As New

System.IO.StreamReader("E:\Data Laptop\TA\Virtual Database TA\" +

Me.TextBox1.Text + ".txt")

ListBox1.Items.Add(readinguserdata.ReadToEnd) ListBox1.Items.Add("")

readinguserdata.Close()

ListBox1.Items.Add("ID Number " +

Me.TextBox1.Text)

ListBox1.Items.Add(Me.TextBox1.Text) ListBox1.Items.Add(Me.TextBox2.Text) ListBox1.Items.Add(Me.TextBox3.Text) ListBox1.Items.Add(Me.TextBox4.Text) ListBox1.Items.Add(Me.TextBox5.Text) ListBox1.Items.Add(Me.TextBox7.Text) ListBox1.Items.Add(Me.TextBox8.Text) ListBox1.Items.Add(Form2.DateTimePicker1.Text + ", " + TimeOfDay)

ListBox1.Items.Add("") Dim a As Integer

Dim savinguserdata As New

System.IO.StreamWriter("E:\Data Laptop\TA\Virtual Database TA\" +

Me.TextBox1.Text + ".txt")

For a = 0 To ListBox1.Items.Count - 1 savinguserdata.WriteLine(ListBox1.Items.Item(a)) Next

savinguserdata.Close() Dim d As Integer

(27)

16

A

Me.Validate()

Me.UsersBindingSource.EndEdit()

Me.TableAdapterManager1.UpdateAll(Me.TA_HanzDataSet) MsgBox("TOP DOWN Success!")

End If Else

End If

End If

ElseIf Mid(TextBox13.Text, 1, 7) = "td10000" Then

TextBox7.Text = Val(TextBox7.Text) - 10000 If Val(TextBox7.Text) < 0 Then

MsgBox("Top Down Failed!") Else

If balanceconfirmation.Text = DataGridView1.Item(6, cek_balance).Value

Then

SerialPort1.Open()

SerialPort1.WriteLine("1") SerialPort1.Close()

Timer5.Stop()

Form2.ListBox1.Items.Add(TextBox1.Text + " is doing Top Down for 10k balance")

TextBox7.Text = Val(TextBox7.Text) - 10000 If System.IO.File.Exists("E:\Data

Laptop\TA\Virtual Database TA\" + Me.TextBox1.Text + ".txt") = True Then

Dim readinguserdata As New

System.IO.StreamReader("E:\Data Laptop\TA\Virtual Database TA\" +

Me.TextBox1.Text + ".txt")

ListBox1.Items.Add(readinguserdata.ReadToEnd) ListBox1.Items.Add("")

readinguserdata.Close()

ListBox1.Items.Add("ID Number " +

Me.TextBox1.Text)

(28)

17

A

ListBox1.Items.Add(Form2.DateTimePicker1.Text + ", " + TimeOfDay)

ListBox1.Items.Add("") Dim a As Integer

Dim savinguserdata As New

System.IO.StreamWriter("E:\Data Laptop\TA\Virtual Database TA\" +

Me.TextBox1.Text + ".txt")

For a = 0 To ListBox1.Items.Count - 1 savinguserdata.WriteLine(ListBox1.Items.Item(a))

Next

savinguserdata.Close() Dim d As Integer

d = DataGridView1.CurrentRow.Index DataGridView1.Item(6, d).Value = TextBox7.Text

Me.Validate()

Me.UsersBindingSource.EndEdit()

Me.TableAdapterManager1.UpdateAll(Me.TA_HanzDataSet) MsgBox("TOP DOWN Success!")

End If Else

End If

End If

ElseIf TextBox13.Text = "restart" Then

Timer5.Stop()

Timer1.Interval = 2000 Timer1.Start()

Else

MsgBox("TOP UP / TOP DOWN Failed!")

Form2.ListBox1.Items.Add(Me.TextBox1.Text + "'s request for TOP UP / TOP DOWN is failed at " +

Form2.DateTimePicker1.Text + " , " + TimeOfDay) SerialPort1.Open()

(29)

LAMPIRAN B

(30)

1

B

Kode program pada arduino untuk memulai sistem pembayaran

#include "LCD12864RSPI.h"

#include "menu.h"

#include "greet.h"

#define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] )

#define ledPin 13

#define rfid Serial1

int baris1=30;

int baris2=31;

int baris3=32;

int baris4=33;

int kolom1=34;

int kolom2=35;

int kolom3=36;

int kolom4=37;

int Str1[12];

int Str2[14];

int a = 999;

String data_kirim;

String data_terima;

//password

String password1 = "1";

String password2 = "2";

(31)

2

B

String password4 = "4";

String password5 = "5";

String password6 = "6";

String password7 = "7";

String password8 = "8";

String password9 = "9";

String passworda = "a";

String passwordb = "b";

String passwordc = "c";

String passwordd = "d";

String password0 = "0";

void setup()

{LCDA.Initialise();

delay(100);

// LCDA.DisplayString(0,0,g1,16);

// delay(300);

// LCDA.DisplayString(1,0,g2,16);

// delay(300);

// LCDA.DisplayString(2,0,g3,16);

// delay(300);

// LCDA.DisplayString(3,0,g4,16);

// delay(5000);

// LCDA.CLEAR();

(32)

3

B

LCDA.DisplayString(0,0,g7,16);

LCDA.DisplayString(1,0,g5,16);

LCDA.DisplayString(2,0,g6,16);

LCDA.DisplayString(3,0,g7,16);

Serial.begin(9600);

rfid.begin(19200);

pinMode(baris1,OUTPUT);

pinMode(baris2,OUTPUT);

pinMode(baris3,OUTPUT);

pinMode(baris4,OUTPUT);

pinMode(kolom1,INPUT);

pinMode(kolom2,INPUT);

pinMode(kolom3,INPUT);

pinMode(kolom4,INPUT);

pinMode(ledPin, OUTPUT);

digitalWrite(ledPin, LOW);}

void loop()

{ if (a==21)

{ reading_topdown_confirmation();}

else if (a==20)

{reading_topup_confirmation();} else if (a==19)

{ reading_current_balance_confirmation_td(); }

(33)

4

B

{ reading_current_balance_confirmation_tu();} else if (a==17)

{reading_current_balance_confirmation();} else if (a==16)

{ inserting_password_confirmation();} else if (a==101)

{terima_konfirmasi_password(); } else if (a==997)

{kirim_konfirmasi_password(); } else if (a==998)

{password(); } else if (a==100)

{terima_data_string_id();} else if (a==999)

{rfid();} else if (a==0)

{//setting the columns as high initially

digitalWrite(kolom1,HIGH);

digitalWrite(kolom2,HIGH);

digitalWrite(kolom3,HIGH);

digitalWrite(kolom4,HIGH);

//checking everything one by one

//case 1: col1 =0 while other col as 1

(34)

5

B

digitalWrite(baris2,HIGH);

digitalWrite(baris3,HIGH);

digitalWrite(baris4,HIGH);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{//Serial.println("key 1 pressed"); }

else if(digitalRead(kolom2)==0)

{//Serial.println("key 2 pressed"); }

else if(digitalRead(kolom3)==0)

{ //Serial.println("key 3 pressed"); }

else if(digitalRead(kolom4)==0)

{ LCDA.CLEAR();

delay(50);

LCDA.DisplayString(0,0,tu1,16);

LCDA.DisplayString(1,0,tu2,16);

LCDA.DisplayString(2,0,tu3,16);

LCDA.DisplayString(3,0,tu4,16);

a = 1;

//Serial.println("key A pressed"); //klo yang dipilih TOP UP }

//case 2: col2 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,LOW);

digitalWrite(baris3,HIGH);

(35)

6

B

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{ //Serial.println("key 4 pressed"); }

else if(digitalRead(kolom2)==0)

{//Serial.println("key 5 pressed"); }

else if(digitalRead(kolom3)==0)

{ //Serial.println("key 6 pressed"); }

else if(digitalRead(kolom4)==0)

{ LCDA.CLEAR();

delay(50);

LCDA.DisplayString(0,0,td1,16);

LCDA.DisplayString(1,0,td2,16);

LCDA.DisplayString(2,0,td3,16);

LCDA.DisplayString(3,0,td4,16);

a = 8;

//Serial.println("key B pressed"); }

//case 3: col3 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,HIGH);

digitalWrite(baris3,LOW);

digitalWrite(baris4,HIGH);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

(36)

7

B

else if(digitalRead(kolom2)==0)

{ //Serial.println("key 8 pressed"); }

else if(digitalRead(kolom3)==0)

{ //Serial.println("key 9 pressed"); }

else if(digitalRead(kolom4)==0)

{ LCDA.CLEAR();

delay(50);

data_kirim = "balance";

Serial.println(data_kirim);

LCDA.DisplayString(0,0,b1,16);

LCDA.DisplayString(1,0,b2,16);

delay(100);

a = 17;

//Serial.println("key C pressed"); }

//case 1: col1 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,HIGH);

digitalWrite(baris3,HIGH);

digitalWrite(baris4,LOW);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{ //Serial.println("key F pressed"); }

else if(digitalRead(kolom2)==0)

(37)

8

B

data_kirim = "restart";

Serial.println(data_kirim);

delay(100);

LCDA.CLEAR();

delay(50);

LCDA.DisplayString(0,0,g7,16);

LCDA.DisplayString(1,0,g5,16);

LCDA.DisplayString(2,0,g6,16);

LCDA.DisplayString(3,0,g7,16);

digitalWrite(ledPin, LOW);

//Serial.println("key 0 pressed"); }

else if(digitalRead(kolom3)==0)

{ //Serial.println("key E pressed"); }

else if(digitalRead(kolom4)==0)

{ //Serial.println("key D pressed"); }

//giving delay between keypress

(38)

9

B

Proses Scanning

void read_serial()

{ mifare_request();

get_response ();

mifare_anticollision();

parse ();

print_serial();

delay(100); }

void mifare_request()

{ rfid.write(0xAA);

rfid.write(0xBB);

rfid.write(0x06);

rfid.write((uint8_t)0);

rfid.write((uint8_t)0);

rfid.write((uint8_t)0);

rfid.write(0x01);

rfid.write(0x02);

rfid.write(0x52);

rfid.write(0x51);

delay (10);}

void get_response()

{ while(rfid.available())

{for(int i=0;i<12;i++)

(39)

10

B

delay (10); }}}

void mifare_anticollision()

{rfid.write(0xAA);

rfid.write(0xBB);

rfid.write(0x05);

rfid.write((uint8_t)0);

rfid.write((uint8_t)0);

rfid.write((uint8_t)0);

rfid.write(0x02);

rfid.write(0x02);

rfid.write((uint8_t)0);

delay (10); }

void parse()

{ while(rfid.available()>0)

{ for(int i=0;i<14;i++)

{Str2[i]= rfid.read();

delay(10);}}}

void print_serial()

{ //print to serial port

if (Str2[10] == 0x00 && Str2[9] == 0x00)

{ }

else

{Serial.println(Str2[10] + Str2[9],DEC);

(40)

11

B

Proses Konfimasi Password

void password()

{ //setting the columns as high initially

digitalWrite(kolom1,HIGH);

digitalWrite(kolom2,HIGH);

digitalWrite(kolom3,HIGH);

digitalWrite(kolom4,HIGH);

//checking everything one by one

//case 1: col1 =0 while other col as 1

digitalWrite(baris1,LOW);

digitalWrite(baris2,HIGH);

digitalWrite(baris3,HIGH);

digitalWrite(baris4,HIGH);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{ LCDA.DisplayString(2,0,p3,16);

data_kirim = password1;

a = 16;

//Serial.println("key 1 pressed"); }

else if(digitalRead(kolom2)==0)

{ LCDA.DisplayString(2,0,p3,16);

data_kirim = password2;

a = 16;

(41)

12

B

else if(digitalRead(kolom3)==0)

{ LCDA.DisplayString(2,0,p3,16);

data_kirim = password3;

a = 16;

//Serial.println("key 3 pressed");}

else if(digitalRead(kolom4)==0)

{LCDA.DisplayString(2,0,p3,16);

data_kirim = passworda;

a = 16;

//Serial.println("key A pressed"); //klo yang dipilih TOP UP }

//case 2: col2 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,LOW);

digitalWrite(baris3,HIGH);

digitalWrite(baris4,HIGH);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{ LCDA.DisplayString(2,0,p3,16);

data_kirim = password4;

a = 16;

//Serial.println("key 4 pressed"); }

else if(digitalRead(kolom2)==0)

{LCDA.DisplayString(2,0,p3,16);

(42)

13

B

a = 16;

//Serial.println("key 5 pressed"); }

else if(digitalRead(kolom3)==0)

{ LCDA.DisplayString(2,0,p3,16);

data_kirim = password6;

a = 16;

//Serial.println("key 6 pressed"); }

else if(digitalRead(kolom4)==0)

{ LCDA.DisplayString(2,0,p3,16);

data_kirim = passwordb;

a = 16;

//Serial.println("key B pressed"); }

//case 3: col3 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,HIGH);

digitalWrite(baris3,LOW);

digitalWrite(baris4,HIGH);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{ LCDA.DisplayString(2,0,p3,16);

data_kirim = password7;

a = 16;

//Serial.println("key 7 pressed"); }

(43)

14

B

{ LCDA.DisplayString(2,0,p3,16);

data_kirim = password8;

a = 16;

//Serial.println("key 8 pressed"); }

else if(digitalRead(kolom3)==0)

{ LCDA.DisplayString(2,0,p3,16);

data_kirim = password9;

a = 16;

//Serial.println("key 9 pressed"); }

else if(digitalRead(kolom4)==0)

{ LCDA.DisplayString(2,0,p3,16);

data_kirim = passwordc;

a = 16;

//Serial.println("key C pressed"); }

//case 1: col1 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,HIGH);

digitalWrite(baris3,HIGH);

digitalWrite(baris4,LOW);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{LCDA.CLEAR();

a = 999;

(44)

15

B

Serial.println(data_kirim);

delay(100);

LCDA.DisplayString(0,0,g7,16);

LCDA.DisplayString(1,0,g5,16);

LCDA.DisplayString(2,0,g6,16);

LCDA.DisplayString(3,0,g7,16);

//Serial.println("key F pressed");}

else if(digitalRead(kolom2)==0)

{ LCDA.DisplayString(2,0,p3,16);

data_kirim = password0;

a = 16;

//Serial.println("key 0 pressed");}

else if(digitalRead(kolom3)==0)

{LCDA.CLEAR();

LCDA.DisplayString(1,0,p6,16);

delay(2000);

LCDA.DisplayString(0,0,p1,16);

LCDA.DisplayString(1,0,p2,16);

a = 998;

//Serial.println("key E pressed"); }

else if(digitalRead(kolom4)==0)

{ LCDA.DisplayString(2,0,p3,16);

data_kirim = passwordd;

(45)

16

B

//Serial.println("key D pressed"); }

//giving delay between keypress

delay(50);}

void inserting_password_confirmation()

{ //setting the columns as high initially

digitalWrite(kolom1,HIGH);

digitalWrite(kolom2,HIGH);

digitalWrite(kolom3,HIGH);

digitalWrite(kolom4,HIGH);

//checking everything one by one

//case 1: col1 =0 while other col as 1

digitalWrite(baris1,LOW);

digitalWrite(baris2,HIGH);

digitalWrite(baris3,HIGH);

digitalWrite(baris4,HIGH);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{ //Serial.println("key 1 pressed"); }

else if(digitalRead(kolom2)==0)

{ //Serial.println("key 2 pressed"); }

else if(digitalRead(kolom3)==0)

{ //Serial.println("key 3 pressed"); }

else if(digitalRead(kolom4)==0)

(46)

17

B

//case 2: col2 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,LOW);

digitalWrite(baris3,HIGH);

digitalWrite(baris4,HIGH);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{ //Serial.println("key 4 pressed"); }

else if(digitalRead(kolom2)==0)

{ //Serial.println("key 5 pressed"); }

else if(digitalRead(kolom3)==0)

{ //Serial.println("key 6 pressed");}

else if(digitalRead(kolom4)==0)

{ //Serial.println("key B pressed");}

//case 3: col3 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,HIGH);

digitalWrite(baris3,LOW);

digitalWrite(baris4,HIGH);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{ //Serial.println("key 7 pressed");}

else if(digitalRead(kolom2)==0)

(47)

18

B

else if(digitalRead(kolom3)==0)

{ //Serial.println("key 9 pressed");}

else if(digitalRead(kolom4)==0)

{ //Serial.println("key C pressed");}

//case 1: col1 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,HIGH);

digitalWrite(baris3,HIGH);

digitalWrite(baris4,LOW);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{ LCDA.CLEAR();

LCDA.DisplayString(0,0,p1,16);

LCDA.DisplayString(1,0,p2,16);

a = 998;

//Serial.println("key F pressed");}

else if(digitalRead(kolom2)==0)

{ //Serial.println("key 0 pressed");}

else if(digitalRead(kolom3)==0)

{ a = 997;

//Serial.println("key E pressed");}

else if(digitalRead(kolom4)==0)

{ //Serial.println("key D pressed");}

(48)

19

B

delay(50);}

void kirim_konfirmasi_password()

{Serial.println(data_kirim);

delay(100);

a = 101;}

void terima_konfirmasi_password()

{ if (Serial.available()>0)

{ data_terima = Serial.read() - '0';

if (data_terima==1)

{ LCDA.CLEAR();

delay(50);

LCDA.DisplayString(1,0,p8,16);

delay(2000);

LCDA.DisplayString(0,0,m1,16);

LCDA.DisplayString(1,0,m2,16);

LCDA.DisplayString(2,0,m3,16);

LCDA.DisplayString(3,0,m4,16);

a = 0;}

else if (data_terima==0)

{LCDA.CLEAR();

delay(50);

LCDA.DisplayString(1,0,p5,16);

delay(2000);

(49)

20

B

LCDA.DisplayString(1,0,p2,16);

a = 998; }

else

{ LCDA.CLEAR();

delay(50);

LCDA.DisplayString(1,0,p4,16);

delay(2000);

LCDA.DisplayString(0,0,p7,16);

LCDA.DisplayString(1,0,p2,16);

(50)

21

B

Proses Top Up, Top Down, dan Balance

Top Up

Kode program berikut berada didalam void loop().

else if (a==1)

{ //setting the columns as high initially

digitalWrite(kolom1,HIGH);

digitalWrite(kolom2,HIGH);

digitalWrite(kolom3,HIGH);

digitalWrite(kolom4,HIGH);

//checking everything one by one

//case 1: col1 =0 while other col as 1

digitalWrite(baris1,LOW);

digitalWrite(baris2,HIGH);

digitalWrite(baris3,HIGH);

digitalWrite(baris4,HIGH);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{ //Serial.println("key 1 pressed"); }

else if(digitalRead(kolom2)==0)

{ //Serial.println("key 2 pressed"); }

else if(digitalRead(kolom3)==0)

{ //Serial.println("key 3 pressed"); }

else if(digitalRead(kolom4)==0)

(51)

22

B

delay(50);

LCDA.DisplayString(1,0,c1,16);

LCDA.DisplayString(2,0,c2,16);

a = 2;

//Serial.println("key A pressed"); //klo yang dipilih TOP UP}

//case 2: col2 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,LOW);

digitalWrite(baris3,HIGH);

digitalWrite(baris4,HIGH);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{//Serial.println("key 4 pressed"); }

else if(digitalRead(kolom2)==0)

{ //Serial.println("key 5 pressed"); }

else if(digitalRead(kolom3)==0)

{ //Serial.println("key 6 pressed"); }

else if(digitalRead(kolom4)==0)

{LCDA.CLEAR();

delay(50);

LCDA.DisplayString(1,0,c1,16);

LCDA.DisplayString(2,0,c2,16);

a = 3;

(52)

23

B

//case 3: col3 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,HIGH);

digitalWrite(baris3,LOW);

digitalWrite(baris4,HIGH);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{ //Serial.println("key 7 pressed"); }

else if(digitalRead(kolom2)==0)

{ //Serial.println("key 8 pressed"); }

else if(digitalRead(kolom3)==0)

{ //Serial.println("key 9 pressed"); }

else if(digitalRead(kolom4)==0)

{LCDA.CLEAR();

delay(50);

LCDA.DisplayString(1,0,c1,16);

LCDA.DisplayString(2,0,c2,16);

a = 4;

//Serial.println("key C pressed"); }

//case 1: col1 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,HIGH);

digitalWrite(baris3,HIGH);

(53)

24

B

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{ a = 0;

LCDA.CLEAR();

delay(50);

LCDA.DisplayString(0,0,m1,16);

LCDA.DisplayString(1,0,m2,16);

LCDA.DisplayString(2,0,m3,16);

LCDA.DisplayString(3,0,m4,16);

//Serial.println("key F pressed"); }

else if(digitalRead(kolom2)==0)

{ a = 999;

data_kirim = "restart";

Serial.println(data_kirim);

delay(100);

LCDA.CLEAR();

delay(50);

LCDA.DisplayString(0,0,g7,16);

LCDA.DisplayString(1,0,g5,16);

LCDA.DisplayString(2,0,g6,16);

LCDA.DisplayString(3,0,g7,16);

digitalWrite(ledPin, LOW);

//Serial.println("key 0 pressed"); }

(54)

25

B

{ //Serial.println("key E pressed"); }

else if(digitalRead(kolom4)==0)

{ LCDA.CLEAR();

delay(50);

LCDA.DisplayString(0,0,tu1,16);

LCDA.DisplayString(1,0,tu5,16);

LCDA.DisplayString(2,0,tu6,16);

a = 7;

//Serial.println("key D pressed");}

//giving delay between keypress

delay(50); }

else if (a==2)

{ //setting the columns as high initially

digitalWrite(kolom1,HIGH);

digitalWrite(kolom2,HIGH);

digitalWrite(kolom3,HIGH);

digitalWrite(kolom4,HIGH);

//case 1: col1 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,HIGH);

digitalWrite(baris3,HIGH);

digitalWrite(baris4,LOW);

//checking each column for row1 one by one

(55)

26

B

{ LCDA.CLEAR();

delay(50);

LCDA.DisplayString(0,0,tu1,16);

LCDA.DisplayString(1,0,tu2,16);

LCDA.DisplayString(2,0,tu3,16);

LCDA.DisplayString(3,0,tu4,16);

a = 1;

//Serial.println("key F pressed"); }

else if(digitalRead(kolom3)==0)

{ LCDA.CLEAR();

delay(50);

LCDA.DisplayString(1,0,tu10,16);

data_kirim = "tu100000";

Serial.println(data_kirim);

delay(100);

a = 20;

//Serial.println("key E pressed"); }

//giving delay between keypress

delay(50); }

else if (a==3)

{ //setting the columns as high initially

digitalWrite(kolom1,HIGH);

digitalWrite(kolom2,HIGH);

(56)

27

B

digitalWrite(kolom4,HIGH);

//case 1: col1 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,HIGH);

digitalWrite(baris3,HIGH);

digitalWrite(baris4,LOW);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{LCDA.CLEAR();

delay(50);

LCDA.DisplayString(0,0,tu1,16);

LCDA.DisplayString(1,0,tu2,16);

LCDA.DisplayString(2,0,tu3,16);

LCDA.DisplayString(3,0,tu4,16);

a = 1;

//Serial.println("key F pressed"); }

else if(digitalRead(kolom3)==0)

{ LCDA.CLEAR();

delay(50);

LCDA.DisplayString(1,0,tu10,16);

data_kirim = "tu50000";

Serial.println(data_kirim);

delay(100);

(57)

28

B

//Serial.println("key E pressed"); }

//giving delay between keypress

delay(50); }

else if (a==4)

{ //setting the columns as high initially

digitalWrite(kolom1,HIGH);

digitalWrite(kolom2,HIGH);

digitalWrite(kolom3,HIGH);

digitalWrite(kolom4,HIGH);

//case 1: col1 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,HIGH);

digitalWrite(baris3,HIGH);

digitalWrite(baris4,LOW);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{ LCDA.CLEAR();

delay(50);

LCDA.DisplayString(0,0,tu1,16);

LCDA.DisplayString(1,0,tu2,16);

LCDA.DisplayString(2,0,tu3,16);

LCDA.DisplayString(3,0,tu4,16);

a = 1;

(58)

29

B

else if(digitalRead(kolom3)==0)

{LCDA.CLEAR();

delay(50);

LCDA.DisplayString(1,0,tu10,16);

data_kirim = "tu20000";

Serial.println(data_kirim);

delay(100);

a = 20;

//Serial.println("key E pressed"); }

//giving delay between keypress

delay(50); }

else if (a==5)

{ //setting the columns as high initially

digitalWrite(kolom1,HIGH);

digitalWrite(kolom2,HIGH);

digitalWrite(kolom3,HIGH);

digitalWrite(kolom4,HIGH);

//case 1: col1 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,HIGH);

digitalWrite(baris3,HIGH);

digitalWrite(baris4,LOW);

//checking each column for row1 one by one

(59)

30

B

{LCDA.CLEAR();

delay(50);

LCDA.DisplayString(1,0,tu10,16);

data_kirim = "tu10000";

Serial.println(data_kirim);

delay(100);

a = 20;

//Serial.println("key F pressed"); }

else if(digitalRead(kolom3)==0)

{LCDA.CLEAR();

delay(50);

LCDA.DisplayString(1,0,tu9,16);

a = 0;

delay(2000);

LCDA.DisplayString(0,0,m1,16);

LCDA.DisplayString(1,0,m2,16);

LCDA.DisplayString(2,0,m3,16);

LCDA.DisplayString(3,0,m4,16);

//Serial.println("key E pressed"); }

//giving delay between keypress

delay(50); }

else if (a==6)

{ //setting the columns as high initially

(60)

31

B

digitalWrite(kolom2,HIGH);

digitalWrite(kolom3,HIGH);

digitalWrite(kolom4,HIGH);

//case 1: col1 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,HIGH);

digitalWrite(baris3,HIGH);

digitalWrite(baris4,LOW);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{ LCDA.CLEAR();

delay(50);

LCDA.DisplayString(0,0,tu1,16);

LCDA.DisplayString(1,0,tu2,16);

LCDA.DisplayString(2,0,tu3,16);

LCDA.DisplayString(3,0,tu4,16);

a = 1;

//Serial.println("key F pressed"); }

else if(digitalRead(kolom3)==0)

{ LCDA.CLEAR();

delay(50);

LCDA.DisplayString(0,0,tu1,16);

LCDA.DisplayString(1,0,tu2,16);

(61)

32

B

LCDA.DisplayString(3,0,tu4,16);

a = 1;

//Serial.println("key E pressed"); }

//giving delay between keypress

delay(50);}

else if (a==7)

{ //setting the columns as high initially

digitalWrite(kolom1,HIGH);

digitalWrite(kolom2,HIGH);

digitalWrite(kolom3,HIGH);

digitalWrite(kolom4,HIGH);

//checking everything one by one

//case 1: col1 =0 while other col as 1

digitalWrite(baris1,LOW);

digitalWrite(baris2,HIGH);

digitalWrite(baris3,HIGH);

digitalWrite(baris4,HIGH);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{ //Serial.println("key 1 pressed"); }

else if(digitalRead(kolom2)==0)

{ //Serial.println("key 2 pressed"); }

else if(digitalRead(kolom3)==0)

(62)

33

B

else if(digitalRead(kolom4)==0)

{ LCDA.CLEAR();

delay(50);

LCDA.DisplayString(1,0,c1,16);

LCDA.DisplayString(2,0,c2,16);

a = 5;

//Serial.println("key A pressed"); //klo yang dipilih TOP UP }

//case 2: col2 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,LOW);

digitalWrite(baris3,HIGH);

digitalWrite(baris4,HIGH);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{ //Serial.println("key 4 pressed"); }

else if(digitalRead(kolom2)==0)

{ //Serial.println("key 5 pressed"); }

else if(digitalRead(kolom3)==0)

{ //Serial.println("key 6 pressed"); }

else if(digitalRead(kolom4)==0)

{ LCDA.CLEAR();

delay(50);

data_kirim = "balance";

(63)

34

B

LCDA.DisplayString(0,0,b1,16);

LCDA.DisplayString(1,0,b2,16);

delay(100);

a = 18;

//Serial.println("key B pressed"); }

//case 3: col3 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,HIGH);

digitalWrite(baris3,LOW);

digitalWrite(baris4,HIGH);

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{ //Serial.println("key 7 pressed"); }

else if(digitalRead(kolom2)==0)

{ //Serial.println("key 8 pressed"); }

else if(digitalRead(kolom3)==0)

{ //Serial.println("key 9 pressed"); }

else if(digitalRead(kolom4)==0)

{ //Serial.println("key C pressed"); }

//case 1: col1 =0 while other col as 1

digitalWrite(baris1,HIGH);

digitalWrite(baris2,HIGH);

digitalWrite(baris3,HIGH);

(64)

35

B

//checking each column for row1 one by one

if(digitalRead(kolom1)==0)

{ a = 0;

LCDA.CLEAR();

delay(50);

LCDA.DisplayString(0,0,m1,16);

LCDA.DisplayString(1,0,m2,16);

LCDA.DisplayString(2,0,m3,16);

LCDA.DisplayString(3,0,m4,16);

//Serial.println("key F pressed"); }

else if(digitalRead(kolom2)==0)

{ a = 999;

data_kirim = "restart";

Serial.println(data_kirim);

delay(100);

LCDA.CLEAR();

delay(50);

LCDA.DisplayString(0,0,g7,16);

LCDA.DisplayString(1,0,g5,16);

LCDA.DisplayString(2,0,g6,16);

LCDA.DisplayString(3,0,g7,16);

digitalWrite(ledPin, LOW);

//Serial.println("key 0 pressed"); }

(65)

36

B

{ //Serial.println("key E pressed"); }

else if(digitalRead(kolom4)==0)

{ LCDA.CLEAR();

delay(50);

LCDA.DisplayString(0,0,tu1,16);

LCDA.DisplayString(1,0,tu2,16);

LCDA.DisplayString(2,0,tu3,16);

LCDA.DisplayString(3,0,tu4,16);

a = 1;

//Serial.println("key D pressed"); }

//giving delay between keypress

delay(50); }

Setelah nilai pointer “a” bernilai 20, maka kode program dilanjutkan ke

kode program dibawah ini.

void reading_topup_confirmation()

{ if (Serial.available()>0)

{data_terima = Serial.read() - '0';

if (data_terima == 1)

{ delay(1000);

LCDA.DisplayString(1,0,tu9,16);

delay(2000);

LCDA.DisplayString(0,0,m1,16);

LCDA.DisplayString(1,0,m2,16);

LCDA.DisplayString(2,0,m3,16);

LCDA.DisplayString(3,0,m4,16);

a = 0;}

else if (data_terima == 0) <

Gambar

Tabel Posisi kedua MTI
Tabel Posisi tiga dari MTI
Tabel Wewenang Pengaksesan Database

Referensi

Dokumen terkait

Pernyataan ini didukung oleh hasil penelitian ini yang menunjukkan bahwa format desain pesan dengan karakteristik tertentu yang dipresentasikan melalui media dengan karakteristik

1. Pola komunikasi suami istri pada pasangan poligami. Komunikasi merupakan salah satu unsur penting dan tidak dapat dipisahkan dalam kehidupan. Tidak ada seorang pun

HUBUNGAN UMUR DAN PARITAS IBU BERSALIN DENGAN KEJADIAN PERSALINAN SECTIO CAESAREA DI RSUD.. PANEMBAHAN SENOPATI BANTUL YOGYAKARTA

Setelah melewati beberapa tahapan analisa terhadap sistem inforrmasi pembelian dan penjualan makanan dan minuman yang sedang berjalan pada Gossip Café &amp; Resto,

Hasil pemantauan suhu dari setiap sensor node kemudian dikumpulkan dalam sebuah Base Stasion Controller (BSC) yang menjadi pusat pengendali dan pengolahan datanya,

Hama dan penyakit akan berdampak pada jumlah produksi yang dimana akan mempengaruhi pada penerimaan dan keuntungan peternak Berdasarkan itu menimbulkan ketertarikan

(1) Seksi Kesehatan Hewan mempunyai tugas melakukan penyiapan bahan perencanaan, perumusan kebijakan teknis, pembinaan dan koordinasi serta pelaksanaan

- Alat dan bahan sesuai kegiatan “Mana yang lebih cepat panas?”. Peserta didik dapat menyelidiki faktor-faktor yang memengaruhi kenaikan suhu benda akibat pemberian kalor... j.