Proses Penyampaian Data Lampu Proses Pengiriman Pesan Proses Pemeriksaan Data Masuk

Tabel 3.3 Port Status dengan Input DTMF = 1 ~S7 S6 S5 S4 S3 - - - 0 1 0 0 1 1 1 1 Dari Tabel 3.3 diatas terlihat jelas bagaimana perbedaan antara nilai yang dikirim oleh DTMF dekoder dan yang terbaca pada port status alamat 379. Nilai tersebut yang kemudian dibaca oleh perangkat lunak yang digunakan sebagai antarmukanya untuk mengetahui perintah ekseskusi selanjutnya.

3.8 Proses Penyampaian Data Lampu

Data pada register status DB-25 tidaklah bersumber dari DTMF dekoder saja. Lampu yang dikendalikan juga berfungsi sebagai input bagi port paralel. Lampu yang terhubung ke port paralel DB-25 menyampaikan data ke register status secara kontinu. Data yang disampaikan ke port paralel masuk melalui pin 11 dan 10, yaitu ~S7 dan S6 pada register status, hal ini juga dapat dilihat lebih jelas pada Gambar 3.4.

3.9 Proses Pemilihan Data

Sumber data pada DB-25 tidaklah berasal dari satu sumber saja, namun ada 2 dua sumber data, yakni DTMF dekoder dan lampu. Pembacaan data pada register status dilakukan secara bersamaan bukan dari tiap-tiap pin, yang berarti bahwa data yang dikirimkan oleh lampu dan data yang dikirimkan oleh DTMF dekoder akan dibaca bersamaan dalam satu kesatuan waktu. Sumber data yang lebih dari satu menimbulkan permasalahan baru, yakni bagaimana cara membedakan apakah data yang masuk berupa data yang berasal dari DTMF dekoder atau dari perangkat elektronik yang dikontrol, dalam hal ini lampu. Seperti yang telah dijelaskan diatas bahwa input port paralel dilakukan pada register status. Dalam hal ini, port paralel DB-25 tidak bersifat bi-directional. Sehingga masukan port paralel hanya bisa dilakukan pada register status, dan pin pada register status digunakan untuk dua sumber data. Gambaran mengenai hubungan antara handphone, port paralel dan DTMF dekoder dijelaskan pada Gambar 3.7. 1 = port paralel 2 = DTMF decoder 3 = Handphone penerima panggilan = lampu Gambar 3.7 Hubungan antara DTMF, DB-25 dan Handphone Dari gambar diatas, dapat dilihat bahwa perangkat yang terkoneksi, dalam hal ini lampu tidak hanya menjadi perangkat yang diberikan data keluaran dari port paralel, namun juga sebagai sumber data bagi port paralel. Dengan menggunakan rancangan rangkaian tersebut, hanya memungkinkan untuk menghubungkan dua buah perangkat saja untuk dikendalikan dikontrol. Kemudian dalam pendefinisian data masukan, pendefinisian terbagi atas dua proses, yaitu pendefinisian mana data yang berasal dari DTMF dekoder, dan proses pendefinisian nilai data yang diberikan oleh lampu.

3.9.1 Pendefinisian Data DTMF

Untuk dapat memahami bagaimana proses ini terjadi, terlebih dahulu perlu diingat kembali mengenai tabel register status yang digambarkan pada Tabel 3.4. Tabel 3.4 Port Status alamat 379 ~S7 S6 S5 S4 S3 - - - ~Busy Ack PE Select Error - - - Ketika dalam rangkaian terbuka, atau tanpa pengaruh dari perangkat luar, register status bernilai 127, yang dalam biner adalah 01111111. Untuk mecari bagaimana cara memperoleh data hanya data DTMF saja, dicari satu operator dan operand yang dapat menghasilkan kemungkinan hanya S3, S4 dan S5 yang berpeluang bernilai logika 1 satu. Maka digunakanlah operasi AND dan operand 56. Dengan menggunakan operasi AND dengan operand 56, maka akan diperoleh data yang diinginkan, sedangkan data lain akan bernilai 0 nol, dimana untuk saluran status S0 dan S1 masih tercadang, S2 tidak dikeluarkan ke pin DB25. Ilustrasi proses yang terjadi, digambarkan dalam Tabel 3.5. Tabel 3.5 Rangkaian Proses Operasi Logika AND pada Register Status ~S7 S6 S5 S4 S3 S2 S1 S0 0 1 1 1 1 1 1 1 Keadaan default register status 0 1 1 0 1 1 1 1 Diberikan input dari DTMF decoder 1 1 1 Oprasi AND dengan operand 56 0 0 1 0 1 0 0 0 Hasil operasi AND Tabel 3.5 memperlihatkan gambaran yang jelas mengenai bagaimana pendefinisian nilai DTMF dekoder pada register status dapat dilakukan. Tabel 3.5 menggambarkan contoh pendefinisian data DTMF dekoder dengan nilai data 5 lima , 0101 dalam biner dari data keseluruhan pada register status. Melalui operasi AND akan dihasilkan nilai 1 satu hanya jika keduanya benilai 1satu. Sehingga hanya ada kemungkinan terbesar 3 tiga bit data yang bernilai logika 1 satu. Berikut algoritma yang digunakan dalam pendefinisian nilai DTMF dekoder dalam program: temp := Hwinterface1.InPort378; temp1 := Hwinterface1.InPort379; nilai := temp1 and 56; Dari algoritma diatas terlihat bahwa proses yang pertama kali dilakukan adalah membaca data yang ada pada register status dengan alamat 379, kemudian menyimpannya pada satu variabel, yaitu variabel temp. Kemudian nilai dari variabel temp di-AND kan dengan operand, yakni 56, dan kemudian disimpan dalam variabel nilai. Untuk melakukan operasi logika tersebut, nilai yang dalam desimal tidak perlu dirubah ke dalam biner terlebih dahulu karena bahasa pemrograman sudah memiliki kemampuan untuk melakukan operasi logika dengan nilai desimal. Gambaran alur proses pendefinisian nilai DTMF dijelaskan pada Gambar 3.8. Mengambil data dari register status alamat 379 Data DTMF AND 56 = nilai Nilai = nilai div 8 Pemrosesan delphi Gambar 3.8 Alur proses pendefinisian nilai DTMF

3.9.2 Pendefinisian Nilai Status Lampu

Berikutnya dicari operand dan operator yang digunakan untuk memproses data yang masuk dari lampu. Proses ini bertujuan untuk memilah dan mengetahui nilai yang dikirimkan oleh lampu. Untuk operasi pendefinisian nilai status lampu tidaklah seperti pada DTMF dekoder, operand yang digunakan untuk kedua lampu tidak bisa disamakan. Hal ini dikarenakan adanya operasi invers pada S7, ataupun sifat ‘active low’ pada S7, gambaran ini dapat dilihat kembali pada Gambar 2.4, yakni gambar port status.

3.9.2.1 Lampu -1

Lampu 1 adalah lampu yang terhubung dengan pin 11, yakni S7. S7 yang bersifat aktif low yang berarti memiliki sifat kebalikan dari sinyal listrik lain, akan aktif ketika sinyal low. Berikut algoritma yang digunakan untuk mengetahui nilai status lampu-1: temp1 := Hwinterface1.InPortlptdata; nilai := temp1 and 128; Nilai := nilai div 128; Penjelasan dari algoritma diatas adalah: hal yang pertama dilakukan adalah menyimpan nilai yang dibaca dari register status dalam sebuah variabel bernama temp1, kemudian dilakukan operasi logika dengan operator AND dengan operand 128. Operator AND digunakan karena operator AND hanya akan bernilai 1 satu jika kedua operand bernilai 1 satu. Sehingga hanya akan ada satu pin yang bernilai 1 satu, yaitu pin 11 yang terhubung ke lampu-1. Dengan demikian hasil operasi hanya mungkin memiliki dua nilai, yaitu 128 atau 0 nol. Nilai hasil opererasi AND tersebut selanjutnya di bagi dengan 128, yang memiliki kemungkinan hasil adalah 0 nol dan 1 satu. 0 nol dan 1 satu sudah jelas menggambarkan keadaan sinyal lampu. Hanya saja ada sedikit perbedaan dari sinyal listrik biasanya. Bila secara umum nilai 1 satu menyatakan lampu dalam keadaan menyala, maka pada lampu 1 satu, nilai 1 satu menyatakan bahwa lampu dalam keadaan padam, begitu juga sebaliknya.

3.9.2.2 Lampu-2

Lampu-2 memiliki kesamaan proses dengan lampu-1 dalam pendefinisian nilai status yang diberikan lampu. Hanya saja ada perbedaan yang lerletak pada nilai operand dan pendefinisian status. Berikut algoritma dalam pemrograman untuk pendefinisian nilai status lampu-2: temp1 := Hwinterface1.InPortlptdata; nilai := temp1 and 64; Nilai := nilai div 64; Dari algoritma program diatas terlihat bahwa nilai yang dibaca dari register status alamat 379 disimpan dalam sebuah variabel. Selanjutnya nilai dalam variabel tersebut di AND kan dengan operand 64. Hasil dari operasi tersebut disimpan kembali dalam satu variabel yang berbeda, dan dibagi dengan operand 64. Hasil yang mungkin keluar dari operasi tersebut adalah 1 satu dan 0 nol. Disinilah letak perbedaan kedua antara lampu-1 dengan lampu-2. Jika pada lampu-1 nilai 1 satu menyatakan bahwa lampu padam, pada lampu-2 nilai 1 satu menyatakan bahwa lampu menyala. Hasil akhir tersebut selanjutnya diproses oleh pemrograman.

3.10 Proses Penghidupan Lampu

Jika dibayangkan secara selintas mengenai cara penghidupan lampu, yang terbesit dibenak yaitu bahwa untuk menghidupkan lampu yang dikontrol melalui interface DB-25 sangatlah mudah. Hanya tinggal mengirimkan nilai 1 satu pada pin yang terhubung dengan lampu yang dikontrol. Namun keadaan itu hanya berlaku jika yang dikontrol hanya satu buah lampu saja. Hal ini tidak berlaku untuk pengontrolan lampu yang berjumlah lebih dari satu. Jika menggunakan prinsip seperti diatas, dalam satu keadaan dapat terjadi kemungkinan bahwa ketika dikirimkan nilai logika 1 satu untuk menghidupkan sebuah lampu dapat mengakibatkan lampu yang telah menyala sebelumnya menjadi padam. Kesalahan ini dapat diilustrasikan dengan rangkaian Tabel 3.6. Tabel 3.6 Ilustrasi Umum Proses Penghidupan Lampu pada Register Data D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0 0 0 Nilai awal 0 0 0 0 0 0 0 1 Perintah pertama 0 0 0 0 0 0 1 0 Perintah kedua 0 0 0 0 0 0 1 0 Keadaan akhir 0 0 0 0 0 0 1 1 Keadaan yang diharapkan Tabel 3.6 menggambarkan keadaan seperti berikut: Apabila pada keadaan awal tidak ada satupun lampu yang hidup, yang berarti, data yang dikirimkan pada register data adalah 0 nol. Selanjutnya, dikirimkan data untuk menghidupkan lampu-1, berarti data yang dikirimkan bernilai 1 satu. Beberapa saat kemudian, user memberikan perintah untuk menyalakan lampu-2 tanpa mematikan lampu yang sudah menyala sebelumnya. Dari tabel diatas, terlihat bahwa ketika dikirimkan data yang baru, maka data yang sebelumnya akan terhapus digantikan oleh data yang baru, yang berarti lampu yang telah menyala sebelumnya akan padam bersamaan dengan hidupnya lampu-2. Ketika diberikan perintah untuk menyalakan lampu, maka semua lampu yang telah menyala sebelumnya akan padam. Nilai data baru yang diterima secara menyeluruh langsung menggantikan data yang sebelumnya, sehingga lampu yang pada mulanya menyala akan padam dikarenakan oleh bit 1 satu hanya diberikan kepada pin yang dituju saja, sedangkan nilai pin yang lain akan ter-reset menjadi 0nol kembali. Oleh karena itu perlu ditambahkan proses logika ataupun aritmatika untuk mengatasi permasalahan tersebut. Berikut proses yang terjadi untuk menghidupkan lampu-1 dan lampu-2. Proses penghidupan lampu dalam diagram alur adalah seperti Gambar 3.9. Gambar 3. 9 Alur proses penghidupan lampu Keterangan: n = nilai operand yang berbeda-beda untuk tiap lampu.

3.10.1 Proses Menghidupkan Lampu-1

Algoritma untuk menghidupkan lampu dan membaca nilai DTMF pada dasarnya adalah hampir sama. Yakni menggunakan operator logika dan sebuah operand. Namun operand yang digunakan pada lampu-1 dan lampu-2 tidaklah sama. Hal pertama yang dilakukan adalah membaca nilai dari register data alamat 378 dan menyimpannya ke dalam sebuah variabel. Operator logika yang digunakan adalah operator OR. Operator OR hanya akan bernilai 0 nol apabila kedua operand bernilai 0 nol. Variabel yang berisikan nilai awal dari register data di OR kan dengan operand 1 satu. Karena nilai 0nol hanya akan hadir ketika kedua operand bernilai 0 nol, hal ini berarti bahwa nilai yang ada sebelumnya tidak akan terhapus ataupun berubah nilainya. Digunakan nilai 1 satu sebagai operand karena lampu-1 yang terhubung dengan D0 akan bernilai 1 satu bila diberi logika 1 satu pada pin D0. Gambaran proses kejadian untuk menghidupkan lampu diilustrasikan pada Tabel 3.7. Tabel 3.7 Ilustrasi Proses Penghidupan Lampu pada Register Data D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0 0 0 Nilai awal 0 0 0 0 0 0 1 0 Perintah pertama 0 0 0 0 0 0 0 1 Perintah kedua Apabila perintah petama telah dieksekusi, dan nilainya dibaca dan disimpan pada satu variabel dan kemudian variabel tersebut di OR kan dengan perintah kedua maka: 00000010 00000001 + 00000011 Dari perhitungan logika diatas terlihat bahwa hasil dari operasi logika OR nilai perintah pertama dan nilai perintah kedua dapat menghasilkan data yang diharapkan. Jadi apa yang sebenarnya dilakukan ketika perintah menghidupkan lampu pertama adalah proses mengirimkan data ke register data alamat 378, nilai yang dikirimkan adalah nilai hasil dari operasi logika OR antara variabel yang menyimpan nilai register data sebelumnya dengan operand 1 satu.

3.10.2 Proses Menghidupkan Lampu-2

Selanjutnya untuk proses menghidupkan lampu-2, proses yang dilakukan sama dengan menghidupkan lampu-1. Perbedaannya terletak pada operand yang digunakan. Jika lampu-1 menggunakan operand 1 satu, maka lampu-2 menggunakan operand 2 dua dalam prosesnya. Digunakan operand bernilai 2 dua karena pin yang dituju pada register data akan bernilai 2 dua jika diberi logika 1 satu untuk menghidupkan lampu-2. Sedangkan pin yang lain pada register data di OR kan dengan nilai 0 nol karena nilai 0 nol pada operasi logika OR tidak akan mempengaruhi nilai sesungguhnya. Berikut perhitungannya: 00000001 00000010 + 00000011 Dengan demikian rangkaian proses yang terjadi untuk menghidupkan lampu-2 adalah pengiriman sebuah nilai misal: X. Nilai variabel X tersebut merupakan hasil dari operasi logika OR antara nilai register data yang lama dengan operand 2. Hasil proses tersebutlah yang kemudian disampaikan kembali ke register data. Dengan demikian, variabel X sebenarnya berisikan : X = Y + Z Keterangan: Z = 2 Y = nilai register data yang lama

3.11 Proses Pemadaman Lampu

Permasalahan untuk menghidupkan lampu ditemukan ketika lampu yang dikontrol berjumlah lebih dari satu. Begitu juga dengan proses mematikan lampu apabila peralatan yang dikontrol dalam hal ini lampu berjumlah lebih dari satu. Secara umum, cara yang digunakan untuk mematikan lampu yang diinginkan adalah mengirimkan data 0 nol pada pin yang dituju. Hal ini digambarkan pada Tabel 3.8. Tabel 3.8 Proses pemadaman lampu - - Lamp6 Lamp5 Lamp4 Lamp3 Lamp2 Lamp1 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 1 0 0 0 0 Jika ingin mematikan lampu, hanya tinggal memberikan nilai 0 nol saja. Namun jika hal ini dilakukan, sudah sangat jelas apa yang akan terjadi. Tentu saja akan mengganggu nilai dari pin-pin yang kemungkinan telah terisi sebelumnya, yang berarti apabila lampu lain yang dalam keadaan menyala akan ikut padam bersamaan dengan padamnya lampu-5. Prinsip pemadaman ini digunakan hanya untuk memadamkan seluruh lampu sekaligus. Oleh karena itu, lagi-lagi dibutuhkan juga proses operasi aritmatik ataupun logika untuk proses pemadaman lampu. Proses pemadaman lampu secara umum digambarkan pada Gambar 3.10. Mengambil data dari register data alamat 378 Data DTMF AND n = hasil Pengiriman hasil ke port data alamat 378 Gambar 3.10 Alur proses pemadaman lampu Keterangan: n merupakan nilai operand yang berbeda-beda untuk masing-masing lampu.

3.11.1 Proses Pemadaman Lampu-1

Untuk memadamkan lampu-1 tanpa harus mengganggu lampu lainnya berarti dituliskan nilai logika 0 nol pada pin yang sesuai dengan pin pada alat yang diinginkan saja. Konsep dasar yang dilakukan adalah sama, yaitu membaca terlebih dahulu nilai data pada register data dengan alamat 378. kemudian nilai tersbut disimpan dalam sebuah variabel. Dalam pemadaman ini, operator logika yang digunakan adalah operator AND. Namun operand yang digunakan bukanlah nilai yang sama dengan nilai pin yang dituju pada register data ketika berlogika 1 satu. Untuk lampu-1 digunakan operand 2 dua dalam proses pemadamannya. Penggunaan operand 2 dua untuk memadamkan lampu-1 tidak akan menganggu nilai pin lain yang berada pada port data. Berikut ilustrasi pembuktiannya: Berikut dicontohkan keadaan yang mungkin terjadi. Apabila keadaan awal kedua lampu dalam keadaan menyala, berarti D0 dan D1 dalam keadaan logika 1 satu. Tabel 3.9 Gambaran Proses Ketika Lampu 2 Menyala - - - - - Lamp3 Lamp2 Lamp1 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0 1 1 Selanjutnya, dikirimkan data untuk memadamkan lampu-1, berarti data yang dikirimkan bernilai 0 nol. Tabel 3.10 Gambaran Nilai Saat Memadamkan Lampu - - - - - Lamp3 Lamp2 Lamp1 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0 0 0 Dari tabel 3.10 diatas, terlihat bahwa ketika dikirimkan data yang baru, maka data yang sebelumnya akan terhapus digantikan oleh data yang baru, yang berarti lampu yang telah menyala sebelumnya akan ikut padam bersamaan dengan padamnya lampu-1. Namun dengan menggunakan operasi AND dan operand 2 dua akan dihasilkan hal seperti Tabel 3.11. Diasumsikan keadaan awal adalah kedua lampu menyala seperti Tabel 3.11. Tabel 3.11 Ilustrasi Keadaan Register Data Bila Kedua Lampu Menyala - - - - - Lamp3 Lamp2 Lamp1 D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0 1 1 Selanjutnya, ketika datang perintah untuk mematikan lampu-1, yang terjadi adalah nilai register data di atas di OR kan dengan 2 seperti Tabel 3.12. Tabel 3.12 Ilustrasi Proses Operasi AND pada Register Data D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0 1 0 Keadaan yang diharapkan 1 1 1 1 1 1 1 1 Keadaan awal 0 0 0 0 0 0 1 0 Operand 2 0 0 0 0 0 0 1 0 Hasil operasi dengan AND 0 0 0 0 0 0 1 0 Keadaan akhir Tabel diatas menunjukkan bahwa dengan menggunakan operasi logika AND, maka hasil yang diperoleh sama dengan hasil yang ingin dicapai. Maka data yang akan dikirimkan untuk memadamkan lampu-1 adalah data hasil operasi logika tersebut.

3.11.2 Proses Pemadaman Lampu -2

Sama halnya dengan proses menghidupkan lampu-1 yang menyerupai proses menghidupkan lampu-2, bagitu juga dengan proses pemadaman. Proses pemadaman lampu-2 sejalan dengan proses pemadaman lampu-1, yang berbeda hanyalah operand yang digunakan. Bila memadamkan lampu-1 menggunakan operand 2 dua, maka untuk memadamkan lampu 2 digunakan operand 1 satu. Nilai hasil operasi logika OR tersebut lah yang kemudian dikirimkan ke register data alamat 378 untuk mematikan lampu-2. Oleh karena itu, yang dilakukan bukanlah mengirim nilai baru untuk mematikan, tetapi memproses nilai yang sebelumnya sudah ada di register data.

3.12 Proses Pengiriman Pesan

Segala hal mengenai pengiriman sms ditangani oleh Toxygensms. Sms dikirimkan dengan mengambil status dari edit text yang tersedia dari program. Pengiriman pesan dilakukan dengan perintah : OxygenSMS1.SendSMSMessageedit1.Text,balas.Text,167,true,false ,nil; Prosedur ini berfungsi untuk mengirimkan SMS. Adapun beberapa parameter yang terdapat dalam prosedur ini adalah edit1.text berisi nomor telepon yang dituju, balas.text berisi isi pesan yang akan dikirimkan, 167 merupakan lama validitas pesan tersebut, true menunjukkan laporan pengiriman diterima, nil bermakna tidak ada gambar yang dikirimkan.

3.13 Proses Pemeriksaan Data Masuk

Setelah masing-masing proses pengolahan data dijelaskan diatas, selanjutnya yang perlu dipahami dan diketahui adalah bagaimana sistem dapat mengetahui bahwasanya ada data yang masuk yang dikirimkan oleh sumber. Baik itu bersumber dari DTMF dekoder ataupun dari lampu. Sistem terus menerus melakukan pengecekan terhadap data yang masuk. Data yang diterima oleh port paralel bersifat latch. Latch berarti bahwa data yang ada tersebut akan terus ada hingga muncul data berikutnya. Seperti pada lampu, rangkaian lampu terhubung secara langsung sebagai sumber input pada register status yang berarti keadaan lampu akan terus menerus tersampaikan kepada register status. Agar respon terhadap data baru dan dilakukan secara cepat, maka dilakukanlah rutin pembacaan nilai register status dengan menggunakan komponen timer yang tersedia. Komponen timer bersifat non visual digunakan untuk menjalankan suatu event pada suatu saat ataupun secara berulang-ulang berdasarkan nilai interval tertentu. Secara tidak langsung, timer mempunyai peranan yang sangat penting dalam sistem ini. Dengan menggunakan timer, dapat dilakukan pengecekan secara terus menerus terhadap nilai yang disampaikan pada register status. BAB 4 IMPLEMENTASI DAN UJI COBA SISTEM Pada perancangan software ini digunakan bahasa pemrograman tingkat tinggi sebagai pengolah data dari dan ke rangkaian dan juga sebagai interface terhadap DB 25, dengan tambahan tools Hwinterface dan Toxygensms. Langkah pertama dalam merancang software adalah membuat algoritma program yang merupakan garis besar jalannya suatu program. Adapun algoritma software yang dirancang secara garis besar adalah sebagai berikut : 1. Mulai 2. User melakukan pengaktifan koneksi handphone- PClaptop 3. Melakukan pemeriksaan nilai DTMF 4. Eksekusi perintah 5. Jika tidak ada data yang baru kembali ke awal langkah 3 6. Selesai

4.1 Implementasi Perangkat Lunak Sistem Pengendali Perangkat Elektronik