Minggu, 20 Desember 2009

HELP Pada Aplikasi Mikrokontroller

.
Baca : Keypad Matriks 4x4 dan LCD 16x2.

Jika anda kesulitan memahami suatu sistem (Hardware) yang berbasis mikrokontroller mengenai cara penggunaan alat, pengoperasian alat, input apa yang harus diberikan, tombol apa saja yang ditekan, dst maka anda akan mencari Manual Book atau buku petunjuknya kemudian membaca secara perlahan.
Bagaimana jika buku itu hilang atau rusak atau halaman tertentu hilang (dan hal ini bisa terjadi bahkan sering) alat tersebut sulit dipahami dan bisa saja jadi tidak berguna karena takut rusak dan sebagainya.

Membuat Help pada aplikasi mikrokontroller bisa dilakukan dan tentu saja tidak bisa dibandingkan dengan Help pada komputer yang lengkap dan mudah, tapi Help yang dibuat pada aplikasi mikrokontroller dapat dibuat sehingga mudah dipahami meski digunakan oleh orang awam sekalipun.

Sebelumnya, ada 2 cara (yang saya ketahui) pembuatan HELP agar cara penggunaan alat yang dibuat dapat dipergunakan oleh orang lain, yaitu :

1. Sequensial (berurutan)
Dengan cara ini maka penggunaan alat haruslah berdasarkan urutan tertentu, yaitu langkah 1 harus dilakukan sebelum langkah 2 dijalankan, langkah 2 harus dilakukan sebelum ke langkah 3, dst. Sehingga langkah 2 tidak mungkin terjadi jika langkah 1 belum dilakukan, dst.
Cara ini sangat efektif untuk kasus tertentu dan kadang cara ini HARUS untuk sistem tertentu.

2. Branching (Percabangan)
Cara ini lebih fleksibel dibanding cara 1, yaitu langkah berapapun bisa dilakukan tergantung keinginan User (pengguna). Karena fleksibilitasnya maka sangat efektif untuk suatu sistem kontroller yang berfungsi untuk mengendalikan banyak sistem lainnya

Hal yang menarik jika menguasai cara menggunakan atau menggabungkan coding Sequensial dan Branching adalah anda bisa merancang sistem yang multi fungsi hanya dengan menggunakan 4 buah Push Button saja sebagai inputannya tanpa memerlukan keypad matrix.
Silahkan berkreasi.

Saya akan membahas tips menambahkan Nama Pembuat, Judul alat, Help, Link Web Site, dst yang bisa diimplementasikan pada mikrokontroller menggunakan gabungan cara ke-1 dan cara ke-2 pada Coding berikut.

Coding ini akan saya bagi menjadi 3 bagian yaitu:
* Main Coding : Coding utama sistem (Cabang Utama).
* State Coding: Coding kondisi pergantian menu help.
* System Coding : Coding tampilan menu Help setiap sistem.

Main Coding
Program utama terdiri dari Inisalisasi mikrokontroller, tampilan pembuka, dan pernyataan switch-case. Tampak sederhana bukan, dan mudah dipahami. Dengan membuat banyak fungsi dan tinggal memanggil fungsi tersebut maka program anda akan menjadi lebih sederhana, mudah dipahami, mudah dikoreksi, mudah dikembangkan, dan lebih terstruktur.

Program ini adalah coding yang akan selalu digunakan baik sebelum memasuki Help suatu sistem maupun sesudah keluar dari Help suatu sistem sehingga disebut sebagai cabang utama. Pada Coding diatas sistem yang ditampilkan Help-nya antara lain : About, Main Help, Help LED, Help UART, Help motor Stepper, Help motor DC, dan Help Buzzer. Setiap sistem menggunakan case tersendiri yang saya beri nama : ABOUT_help, MAIN_help, LED_help, UART_help, STEPPER_help, MTRDC_help, dan BUZZER_help.

State Coding
Program ini terdiri dari : Scanning Keypad matrix 4x4 dan perubahan nilai memori help_mode yang menunjukkan State (kondisi) apa yang sedang diaktifkan. Karena menggunakan keypad matrix 4x4 maka bisa hingga 16 kemungkinan mode yang dapat dipergunakan (tentu saja bisa hingga 999 atau lebih).

Untuk percabangan atau pergantian state dan merupakan inti dari Posting Help pada aplikasi mikrokontroller terletak pada State Coding karena pada bagian inilah yang mengatur pergantian kondisi atau mode HELP pada sistem keseluruhan. Oleh sebab itu jika anda memahami pada State Coding ini akan sangat memungkinkan untuk dikembangkan untuk fungsi lain dan tidak hanya sebagai HELP saja.

Perhatikan pada fungsi SCAN_help(), fungsi ini selain sebagai scanning keypad juga sebagai delay atau tundaan. Diantara pergantian tampilan LCD harus ada delay tertentu agar tampilan LCD dapat terlihat oleh user akan tetapi harus ada pula scanning keypad terus-menerus untuk pergantian mode (state).
Jika menggunakan fungsi delay_ms(1500) akan kesulitan karena
  • keypad tidak akan bisa di scan selama 1500 ms.
  • mencari waktu (timing) yang tepat untuk penekanan keypad akan sulit bagi pengguna.
Oleh sebab itu scanning keypad terus menerus selama 30 kali dan delay antar scanning adalah 50 ms sehingga total delay yang disebabkan scanning keypad adalah 30x50 = 1500 ms.

Scanning keypad menggunakan looping 30 kali dan delay 50ms sehingga 1500 ms tetapi fungsi break akan menyebabkan keluar dari scannig keypad ketika user menekan keypad meskipun belum mencapai 1500 ms, hal inilah yang menyebabkan perubahan tampilah HELP dan perubahan mode (state) bisa kapan saja dan bersifat fleksibel tanpa perlu menunggu suatu event harus selesai.

Oiya saya hampir lupa, Biasanya cara lain yang digunakan untuk mendeteksi penekanan keypad yaitu menggunakan interupsi tetapi disini saya menggunakan cara scanning keypad sehingga keypad memang harus di scan terus menerus dan pada kasus ini tidaklah masalah. Silahkan mencoba dengan cara interupsi.

System Coding
Bagian ini adalah menampilkan Help-help setiap mode (state) yang diaktifkan. Tentu saja bisa digantikan dengan yang lain misalkan anda ingin menampilkan Help-nya sekaligus menjalankan sistem tersebut.

Bagian tersulit adalah "dimana dan kapan harus memanggil fungsi SCAN_help()" untuk setiap sistem karena setiap sistem berbeda-beda. Pemanggilan fungsi SCAN_help() haruslah tepat agar tidak terjadi kesalahan, oleh sebab itu pahami karakteristik sistem anda, kapan sistem "istirahat dan waktunya SCAN_help()".

Fungsi SEQUEN_help() belum saya cantumkan pada Main Coding maupun State Coding, Silahkan anda coba sisipkan beberapa coding sehingga SEQUEN_help() jadi berfungsi dan bandingkan...

Help ini memang belum rumit masih yang sederhana saja, tapi meskipun rumit asal dipahami konsepnya maka Help-nya bisa dibuat.
Cara saya menguji Coding ini yaitu orang baru (awam elektro/anak teknik arsitek) saya minta menyalakan alatnya dan mengoperasikannya tanpa saya bantu and it's work, dia bilang "Wah gampang dipahami nih." (untung IQ yang nyobain ga jongkok Xixixixixi......).

met mencoba ;)

Topik yang Populer