Jumat, 02 Juli 2010

Konversi Angka ASCII menjadi nilai

.
Interface dengan komputer menjadi hal yang wajib untuk aplikasi berbasis mikrokontroller, tetapi komunikasi yang terjadi khususnya data ASCII harus diolah terlebih dahulu. Pengolahan ASCII angka (string angka) penting jika data tersebut akan dikalkulasi pada proses perhitungan / aritmatika di mikrokontroller agar hasil perhitungannya tidak salah.
Oleh sebab itu dibutuhkan suatu fungsi mengubah data string (angka ASCII) menjadi nilai bertipe integer, float, atau char pada mikrokontroller.

Menerima Data ASCII
Sumber data ASCII yang datang ke mikrokontroller bisa dari berbagai macam seperti : Komputer, mikrokontroller lain, input keypad, perangkat wireless, dll, yang penting anda paham bahwa data yang dikomunikasikan adalah data ASCII. Oleh sebab itu sebaiknya anda memahami dan mengetahui apa itu data ASCII, jika tidak, akan susah untuk memahami selanjutnya. Searching di google atau di post-post sebelumnya.
Link tabel ASCII : ASCII

Pada kasus ini, data ASCII diterima dari komputer melalui port serial (COM) yaitu komunikasi secara serial asinkron (USART).
Baca link-link berikut : Tutorial komunikasi data.

Cara I : Buat Fungsi sendiri
Agar mudah saya menggunakan fungsi getchar() seperti pada coding berikut :









Misal data yang akan dikirim dari komputer adalah "12345" maka proses yang terjadi di MCU yaitu:
  1. Menunggu karakter dari komputer dengan fungsi getchar().
  2. Data diterima akan disimpan di variabel buf_rx[x] dengan nilai x yang bersesuaian.
  3. Data diterima adalah buf_rx[0]='1', buf_rx[1]='2', buf_rx[2]='3',buf _rx[3]='4', buf_rx[4]='5'.
  4. Ubah data ASCII angka menjadi nilai heksadesimal. ASCII '1' = 0x31 heks oleh sebab itu agar nilai heksadesimalnya menjadi 0x01, nilai tersebut harus dikurangi 0x30 sehingga '1'-0x30 = 0x01. Maka '1'-0x30=0x01, '2'-0x30=0x02, '3'-0x30=0x03, '4'-0x30=0x04, '5'-0x30=0x05.
  5. Gabungkan nilai tersebut sehingga di dapat nilai integer yang sebenarnya. Maka 1 x10000 + 2x1000 + 3x100 + 4x10 + 5 = 12345 (dua belas ribu tiga ratus empat puluh lima).
  6. Ambil data yang telah dikonversi lalu tampilkan data yang diterima di LCD (Optional).
  7. Selesai deh.
Cara II : Menggunakan Library stdlib.h
Fungsi strtoint ini memang terbatas yaitu komunikasi harus 5 buah data. Pada library CoViAVR telah ada fungsi atoi (Array to Integer) pada library stdlib.h. dan lebih sederhana tuh ^^.




Semoga manfaat ;)

Topik yang Populer