Category: Bahasa Indonesia

Perlukah Membuat Digital Module pada FPGA?

Pada paper design-of-an-fpga-based-vlc-system telah disebutkan bahwa digital module diimplementasikan agar sinyal MII dapat diubah menjadi encoded signal yang siap ditransmisikan yang sesuai dengan standar IEEE 802.3 Ethernet. Pada gambar 1, diperlihatkan bahwa digital module merupakan bagian dari PHY layer sistem.

blokdiagram

Kabel ethernet pada sambungan internet sebetulnya merupakan physical layer juga. Pada titik ini, MAC layer sudah ada di bagian MAC chip di router/switch ethernet. PHY layer juga sudah diimplementasikan pada router/switch. Sehingga sinyal kabel ethernet pada dasarnya adalah sinyal luaran dari blok biru digital module di atas.

Kecuali capstone design akan menggunakan USB-to-MII sebagai sumber koneksi, kita sudah tidak perlu lagi untuk membuat digital module dan MAC layer. Sayangnya, pada posisi tersebut kita tidak lagi membutuhkan FPGA. FPGA sama sekali tidak digunakan.

Terdapat paper lain (ethernet-signal-transmission-via-vlc-lighting)  yang membahas transmisi sinyal ethernet melalui VLC. Di dalamnya hanya terdapat analog circuit yang menerima input berupa sinyal ethernet, dan output dihubungkan ke AFE. Perlu diketahui pula bahwa sistem pada paper tersebut adalah full-duplex, yaitu komunikasi dua arah.

twoway

Media Independent Interface (MII)

Media Independent Interface (MII)

Pada paper design-of-an-fpga-based-vlc-system diuraikan cara interfacing antara PC dengan Analog Front End (AFE) menggunakan chip USB-to-Ethernet. Chip yang digunakan menyediakan pin untuk sinyal MII. Di bawah ini adalah blok diagram sistem dari paper di atas:
blokdiagram

Sementara Board DE2-115 menyediakan chip PHY untuk interfacing ethernet ke FPGA:

blokdiagram2Chip tersebut menyediakan pin MII pula. Sehingga untuk proyek capstone design ini akan digunakan diagram blok sebagai berikut:

untitled-diagram-2

Dikutip dari laman wikipedia, MII memiliki sinyal transmitter dan receiver sebagai berikut:

Transmitter signals

  • TX_CLK Transmit clock (PHY to MAC)
  • TXD0 Transmit data bit 0 (MAC to PHY) (transmitted first)
  • TXD1 Transmit data bit 1 (MAC to PHY)
  • TXD2 Transmit data bit 2 (MAC to PHY)
  • TXD3 Transmit data bit 3 (MAC to PHY)
  • TX_EN Transmit enable (MAC to PHY)
  • TX_ER Transmit error (MAC to PHY, optional)

Receiver signals

  • RX_CLK Receive clock (PHY to MAC)
  • RXD0 Receive data bit 0 (PHY to MAC) (received first)
  • RXD1 Receive data bit 1 (PHY to MAC)
  • RXD2 Receive data bit 2 (PHY to MAC)
  • RXD3 Receive data bit 3 (PHY to MAC)
  • RX_DV Receive data valid (PHY to MAC)
  • RX_ER Receive error (PHY to MAC)
  • CRS Carrier sense (PHY to MAC)
  • COL Collision detect (PHY to MAC)
Menimbang Keberagaman Gerakan Dakwah Islam

Menimbang Keberagaman Gerakan Dakwah Islam

“Dan hendaklah di antara kamu ada segolongan orang yang menyeru kepada kebajikan, menyuruh (berbuat) yang ma’ruf, dan mencegah dari yang munkar. Dan mereka itulah orang-orang yang beruntung.”[1]

Gerakan Islam adalah usaha untuk menegakkan agama Islam di muka bumi; amar ma’ruf nahi munkar. Ada banyak kelompok gerakan Islam di dunia berikut dengan metode dakwahnya masing-masing.

Di level dunia kita mendengar nama Hizbut Tahrir, Ikhwanul Muslimin, Al Qaeda. Sedangkan di Indonesia kita mengenal Nahdlatul Ulama, Muhammadiyah, Partai Keadilan Sejahtera, dan seterusnya. Cara berdakwah yang dipakai masing-masing kelompok beragam: masuk parlemen; aksi massa; membentuk opini Islam dengan media massa, dan sebagainya.

Dalam tulisan ini saya tidak hendak membanding-bandingkan kelompok mana yang lebih unggul dari kelompok lain. Tulisan ini hanya akan mengangkat ide tentang bagaimana upaya kelompok gerakan dakwah Islam tersebut dalam menegakkan Islam.

Kita sepakat bahwa selama suatu kelompok merujuk kepada Al-Qur’an dan Sunnah, maka kita dapat mempertimbangkan untuk ikut berjuang bersama kelompok tersebut. Namun yang sulit adalah ketika suatu kelompok dituding macam-macam—ini tentu harus kita sendiri yang mengembalikan persoalan kepada Al-Qur’an dan Sunnah, dan sudah semestinya kita memakai standar yang jelas apakah gerakan dakwah tersebut benar atau tidak. Setidaknya kita sudah memiliki standar itu—10 ciri aliran sesat menurut MUI[2].

Berikut ini akan saya paparkan sedikit mengenai beberapa organisasi gerakan Islam, saya tidak dapat merinci setiap informasi karena yang demikian memerlukan penelusuran dan penelitian yang baik, agar tidak terjadi salah interpretasi.

Nahdlatul Ulama

Membangkitkan masyakarat dari keterpurukan akibat penjajahan menjadi motivasi utama Nahdlatul Ulama dibentuk. Dalam perjalanannya, NU dibentuk untuk menaungi organisasi-organisasi kecil yang bervisi sama seperti Nahdlatul Tujjar, Nahdlatul Fikri, dan Nadhlatul Wathan.

Paham keagamaan yang dianut NU adalah Ahlusunnah Waljama’ah, ini benar. NU juga mengintegrasikan tasawuf dengan syariat, inilah yang perlu dikritisi, apakah tasawuf berasal dari Islam? Perlu dikaji lebih lanjut dan pembahasannya diluar skop tulisan ini.

Ikhwanul Muslimin

Ikhwanul Muslimin adalah jamaah gerakan Islam yang dibentuk di Mesir, yang kemudian menyebar ke seluruh dunia. Berangkat dari pemikiran bahwa agama Islam bukan agama ritual yang hanya mengatur urusan ibadah saja, namun mencakup seluruh aspek kehidupan, Ikhwanul Muslimin mengajak dan menuntut ditegakkannya syariat Allah.

Partai Keadilan Sejahtera

PKS adalah partai politik berbasis Islam di Indonesia. Asal mula PKS dapat ditelusuri pada tahun 80-an, PKS berawal dari gerakan dakwah kampus yang berkembang hingga didirikannya Partai Keadilan (PK) dan berganti nama menjadi PKS.

Penegakkan Islam di Indonesia

Islam di Indonesia adalah yang terbesar, namun penegakkan syariat Islam sangat lemah. Indonesia—walaupun menyatakan diri sebagai negara demokrasi—nyatanya adalah sebuah negara yang menerapkan pemikiran sekuler. Dilihat dari peraturan, keputusan, dan gerakan yang ditempuh Indonesia cukup membuktikan ke-sekuler-an negara ini.

Gerakan/jamaah yang demikian banyak di Indonesia bergerak sendiri-sendiri: dengan uslub dakwah, ideologi, dan tujuan dakwah yang tidak sama persis. Penyatuan jamaah ini—untuk saat ini—secara umum tidak akan berhasil, sebab akan terjadi bentrok kepentingan. Hal ini jika berlangsung terus akan memperlama kebenaran hadits Nabi SAW yang menyatakan dunia akan dinaungi kekhilafahan Islam.

Masalah kita saat ini adalah fanatik kekelompokan, juga arogansi diri. Kita seringkali tidak mentolerir perbuatan orang lain—yang menurut kita salah, yang sebetulnya disebabkan karena ketidaktahuan kita mengenai Islam sendiri.

Selain itu marak pula saling tuding antar kelompok—yang justru membahayakan Islam, sebab kaum sekularis dan liberalis memanfaatkan celah ini untuk memecah Islam dari dalam.

Keberagaman diantara gerakan dakwah tidak seharusnya membuat kita semakin terkotak-kotak, dan justru meningkatkan pergesekan antar umat Islam. Dari sinilah kita perlu toleransi, dan belajar bertoleransi.

[1]      TQS. ‘Ali Imran: 104

[2]      http://al-islam-indonesia.blogspot.com/2013/08/10-ciri-aliran-sesat-dan-penjelasannya.html

Ahadun Ahad: Mempertanyakan Kembali Syahadat Kita

Ahadun Ahad: Mempertanyakan Kembali Syahadat Kita

Katakanlah (Muhammad), “Dialah Allah, Yang Maha Esa. Allah tempat meminta segala sesuatu. (Allah) tidak beranak dan tidak pula diperanakkan. Dan tidak ada sesuatu yang setara dengan Dia. (QS. Al-Ikhlas 1-4)

Kalimat Ahadun Ahad, membuat saya terkenang dengan sosok Bilal bin Rabah, seorang budak milik kafir Quraisy Ummayah bin Khalaf, yang akhirnya dibeli oleh Abu Bakar As-Shiddiq dan dibebaskan. Bilal, berdasarkan sejarah Islam, disiksa oleh tuannya agar kembali pada agama nenek moyangnya, agar kembali menyembah berhala. Siksaan yang diterima Bilal tidak main-main: dicambuk, dipukul, bahkan ditindih oleh batu besar! Laa haula walaa quwwata illa billaah, bila Anda menggantikan tempat Bilal, akan sangat mungkin Anda langsung mati.

Tidak herankah Anda apa yang membuat Bilal begitu kuat menghadapinya? Bilal diberi makan dan minum oleh tuannya hanya agar memastikan dia tidak mati sebelum kafir kembali. Mental, ya, kekuatan mental Bilal sangat kuat, jauh lebih kuat dari mental tuannya sendiri, Umayyah, yang bahkan malu ketika ditertawakan orang-orang karena tidak bisa membuat budaknya sendiri kembali kafir. Ada sesuatu yang benar-benar membuat orang-orang Arab saat itu heran, apa sih yang membuat Bilal begitu tabah?

Bilal hanya berkata ‘Ahad! Ahad! Ahad!’ saat disiksa tuannya, inilah dia jawabannya, Bilal hanya sudi mengakui Allah sajalah sebagai illah yang berhak disembah. Dengan mengikrarkan syahadat, asyhadu allaa ilaaha illallaah wa asyhadu anna muhammadurrasulullaah, Bilal tahu konsekuensi dari syahadatnya, yaitu mengesakan Allah, dan mengikuti panduan Nabi Muhammad SAW.

Nah, dari sini kita bisa merenungkan, apakah kita sudah bersyahadat? Apakah kita sudah memahami dengan benar makna syahadat? Siapkah dan sudahkah kita melakukan konsekuensinya? Oleh karena itu, mari, kita ulas bersama-sama kalimat syahadat yang selama ini kita lafazkan dalam sholat.

Laailaaha illallaah, secara tidak tepat sering diterjemahkan sebagai ‘tiada Tuhan selain Allah’, makna ini bisa jadi berbahaya. Menjadi berbahaya sebab dapat merubah makna dalam lafadz bahasa Arab yang asli. Terjemahan kalimat tersebut perlu dibuat lebih spesifik lagi agar tidak menimbulkan penafsiran ganda. Untuk melihat pemaknaan akibat terjemahan yang kurang tepat, mari ambil contoh kalimat berikut ini, “tidak ada kucing melainkan pasti berkumis”, makna kalimat tersebut adalah semua kucing pasti berkumis. Nah, jika makna ‘tiada Tuhan selain Allah’ ditafsirkan dengan cara seperti ini, maka makna yang muncul adalah tidak ada Tuhan melainkan itu pasti Allah. Pemaknaan ini justru sangat jauh dengan maksud mengesakan Allah, justru, pada pemaknaan seperti ini tersirat bahwa Allah SWT adalah segala sesuatu yang dianggap Tuhan, jika batu, bulan, atau berhala saya anggap Tuhan, maka itulah Allah. Saya tekankan sekali lagi bahwa pemaknaan dengan cara seperti ini adalah salah.

Makna yang lebih tepat adalah ‘Tiada illah yang berhak disembah kecuali Allah’, dari sini muncul kata illah yang perlu dipertajam makna agar tidak menimbulkan penafsiran berbeda. Kata illah secara bahasa memang berarti ‘Tuhan’, namun apa yang dimaksud dengan Tuhan? Apakah syaratnya sesuatu itu dikatakan Tuhan?

Agar sesuatu dapat dikatakan tuhan, maka setidaknya ada beberapa keadaan yang mesti terpenuhi yaitu 1) dianggap mampu memperkenankan do’a ketika diseru; 2) menjadi tempat bergantung dan berlindung; 3) dicintai dan diikuti. Al-Qur’an sendiri juga memberikan contoh illah-illah selain Allah, a) Hawa Nafsu. Sudahkah engkau (Muhammad) melihat orang yang menjadikan hawa nafsunya sebagai illah-nya (QS. Al-Furqon: 43); b) Orang shaleh di masa lampau. Mereka menjadikan orang-orang alim (Yahudi) dan rahib-rahibnya (Nasrani) sebagai illah selain Allah (QS. At-Taubah: 31).

Makna illah selain Allah itu tidak sempit, tidak terbatas pada berhala saja, sebagaimana yang kebanyakan masyarakat kita saat ini pahami. Ketika sesuatu sudah Anda cintai atau diikuti perkataanya, Anda berani melakukan apapun untuk sesuatu tersebut, maka berhati-hatilah, bisa jadi Anda tidak sempurna dalam mengesakan Allah. Sesuatu itu bisa jadi uang, jabatan, atau pasangan.

Jika selama kita masih mengakui illah selain Allah, maka kita tidak paham makna syahadat. Dengan begitu, keislaman kita masih dipertanyakan.

Makna Syahadat Dalam Tinjauan Ilmiah

Makna Syahadat Dalam Tinjauan Ilmiah

Abul A’la Al-Maududi seorang ulama Pakistan pernah mesinyalir mengenai keruntuhan umat Islam di dunia. Beliau mengatakan bahwa faktor yang paling dominan yang menjadi sebab mundur dan runtuhnya peradaban Islam adalah ketidakmampuan umat Islam dalam memahami bahasa arab.[1]

Bila ditilik secara logis, hal tersebut nampaknya tidak mungkin. Bagaimana bisa orang timur tengah yang memiliki bahasa arab, tidak bisa memahami istilah yang menggunakan bahasa arab? Hal ini bisa terjadi dan sangat mungkin terjadi, kita pun dapat melihat kenyataan pada masyarakat di Indonesia.

Meskipun mereka orang Indonesia dan menggunakan bahasa Indonesia, tetapi tidak semua orang Indonesia memahami seluruh perbendaharaan kata Indonesia dan tahu cara penggunaannya dengan benar. Ambil contoh kata ABSEN, ACUH, BERGEMING, SERONOK, SENONOH.[2]

Dengan kata lain, pemahaman kata ILAH, yang menjadi isi ikrar bagi seseorang untuk menjadi seorang muslim, memiliki andil dalam membangun peradaban Islam. Kekeliruan dalam memahami makna syahadat dapat mengakibatkan kemunduran dan kehancurkan umat Islam.

Pengertian Makna Syahadat Secara Umum

Sebagaimana telah diketahui bahwa kalimat syahadat ialah:

syahadat

Kalimat pertama di atas dapat dimaknai sebagai dua pemaknaan:

  1. Tidak ada Tuhan selain Allah. Dengan notasi matematika dituliskan sebagai Allah ∈ Tuhan.
  2. Tidak ada Tuhan selain Allah. Dengan notasi matematika dituliskan sebagai Allah = Tuhan.

Yang menarik, bila kita mengambil pemaknaan (1), ternyata kita temukan bahwa masyarakat jahiliyah Quraisy ternyata sudah bersyahadat. Dalil-dalilnya salah satunya terdapat pada QS. Az-Zumar: 38, QS. Yunus: 31. Lantas apakah pemaknaan seperti itu dipandang benar? Tentu tidak.

Dari dalil di atas ada beberapa hal yang perlu diperhatikan, antara lain:

  1. dapat diketahui bahwa orang-orang yang tidak beriman semuanya mengakui bahwa “tidak ada yang menciptakan langit dan bumi, yang menjadikan manusia dan rezekinya melainkan Allah.”
  2. Dari pernyataan tersebut dapat dimengerti bahwa orang-orang yang mengucapkan persaksian syahadat dengan pengertian Tidak ada Tuhan selain Allah, namun tidak mengakui Allah satu-satunya Tuhan yang berhak disembah, pada hakikatnya mereka belum bisa dikatakan sebagai muslim, akan tetapi mereka dapat dikatakan sebagai orang musyrik atau orang kafir. (lihat referensi [1] hal 126)
  3. Persaksian dengan pemaknaan seperti di atas merupakan “syahadat”-nya orang-orang jahiliyah, mereka meyakini eksistensi, ketunggalan, dan kekuasaan Allah, namun aturan-Nya ditolak secara demonstratif.

Ayat-ayat tersebut dapat dijadikan sebagai introspeksi atau pengertian syahadat kita masing-masing. Apabila pengertiannya sampai sebatas pengakuan dan persaksian tentang keberadaan Allah saja, maka sesungguhnya syahadat kita tak ubahnya dengan syahadat orang jahiliyah. Setelah mengetahui pemaknaan syahadat yang salah, kita seharusnya berusaha mencari dan memahami pengertian kalimat syahadat.

 

[1]          Iskandar Al-Warisy, dkk. Pemikiran Islam Ilmiah: Menjawab Tantangan Zaman. Surabaya. 2009.

[2]          https://albadrln.wordpress.com/2012/09/20/kata-yang-sering-dipakai-berkebalikan-180-derajat-dengan-artinya/

Jalan Menuju Keimanan Yang Kuat: Sebuah Pendekatan Rasional (2/2)

Jalan Menuju Keimanan Yang Kuat: Sebuah Pendekatan Rasional (2/2)

ayat1

Berpikir adalah aktivitas utama manusia. Allah mewajibkan umat muslim agar senantiasa berpikir untuk mencapai keimanan yang sempurna. Ajakan untuk memperhatikan alam semesta dengan seksama, dalam rangka mencari sunatullah serta untuk memperoleh petunjuk agar beriman terhadap Penciptanya telah disebut ratusan kali oleh Al-Qur’an dalam berbagai surat yang berbeda.

Semua hal tersebut ditujukan agar manusia berpikir dan merenung, memastikan bahwa apa yang ia yakini bukanlah hal-hal yang meragukan. Kita diperingatkan agar tidak mengambil jalan yang ditempuh nenek moyang, tanpa meneliti dan menguji kembali sejauh mana kebenarannya. Inilah iman yang diserukan oleh Islam.

Allah SWT berfirman ketika menjelaskan keadaan kaum musyrikin mekkah:

‎ إِنَّهُمْ أَلْفَوْا آبَاءَهُمْ ضَالِّينَ

(yang artinya) “…sesungguhnya mereka mendapati bapak-bapak mereka dalam keadaaan sesat” (Ash-Shaaf-fat: 69)

Kemudian Allah berfirman:

‎فَهُمْ عَلَىٰ آثَارِهِمْ يُهْرَعُون

(yang artinya) “…Lalu mereka sangat tergesa-gesa mengikuti jejak orang-orang tua mereka itu” (Ash-Shååf-fat: 70)

Al-Imam Ibnu Katsir Rahimahullåh menafsirkan dua ayat diatas:

(adapun) firman Allåh subhanahu wa ta’ala:

‎إِنَّهُمْ أَلْفَوْا آبَاءَهُمْ ضَالِّينَ

(yang artinya) “…sesungguhnya mereka mendapati bapak-bapak mereka dalam keadaaan sesat” [Ash-Shååf-fat: 69]

Ditafsirkan Ibnu Katsir:

Yaitu sesungguhnya Kami memberikan balasan kepada mereka seperti itu (yakni neraka Jahim seperti dijelaskan pada ayat sebelumnya) sebab mereka telah mendapatkan ayah-ayah mereka dalam kesesatan kemudian mereka MENGIKUTINYA dengan TAQLID (buta), TANPA DALIL dan (TANPA) keterangan yang kuat.

Meski manusia diwajibkan berpikir untuk mencapai keimanan kepada Allah SWT, namun manusia tidak mungkin menjangkau apa yang ada di luar batas kemampuan indera dan akalnya. Sebab akal manusia terbatas. Manusia tidak akan mungkin mampu memahami hakikat Allah SWT dan Zat-Nya. Sehingga keterbatasan tersebut justru menjadi faktor penguat iman, bukan sebaliknya malah menjadi penyebab keragu-raguan dan kebimbangan.

[1] Taqiyuddin An-Nabhani, Peraturan Hidup dalam Islam, 2001.

[2] https://abuzuhriy.wordpress.com/2012/01/01/tergesa-gesa-mengikuti-jejak-nenek-moyang-tafsir-qs-69-70/

Jalan Menuju Keimanan Yang Kuat: Sebuah Pendekatan Rasional (1/2)

Jalan Menuju Keimanan Yang Kuat: Sebuah Pendekatan Rasional (1/2)

Sebagai seorang muslim, iman adalah hal pertama yang mesti dipelajari. Rukun Islam pertama adalah syahadat yang berisi ikrar kita untuk mengakui Allah SWT sebagai satu-satunya illah kita, dan nabi Muhammad SAW adalah utusan Allah SWT. Karena pentingnya iman ini, banyak ulama menekankan iman sebelum belajar materi lain, bahkan permasalahan iman ini dibuatkan bab khusus yang kita kenal sebagai bab aqidah.

Menurut Dr. Yusuf Al-Qaradhawi, iman bukan semata-mata pernyataan lidah seseorang, bukan pula semata-mata pelaksanaan seseorang terhadap amal-amal yang dilakukan orang-orang beriman, bukan pula semata-mata pengetahuan terhadap hakikat-hakikat keimanan, namun iman pada hakikatnya adalah kerja jiwa. Iman harus memiliki daya tangkap pikiran, yang mesti sampai ke tingkat kemantapan yang meyakinkan dan tidak bisa lagi diombang-ambingkan oleh keraguan ataupun syubhat.[1]

Sehingga makna penting yang harus diambil adalah keimanan harus merupakan sesuatu yang kuat. Dan sesuatu yang kuat tidak bisa diperoleh selain dengan jalan berpikir, atau menggunakan istilah Al-Qaradhawi, memiliki daya tangkap pikiran.

Bagaimana manusia berpikir?

Agar dapat berpikir, manusia perlu empat komponen, yaitu 1) Fakta yang terindera; 2) Alat indera; 3) Otak yang sehat; 4) Informasi sebelumya.

Poin 1, 2, 3 setidaknya sudah dapat dipahami dengan mudah. Poin 4 harus ada karena manusia merupakan hasil akumulasi dari pengalaman-pengalamannya sejak ia lahir. Jika ia mendapatkan informasi yang salah, maka hasil pemrosesan informasi tersebut juga akan salah. Proses memaknai informasi inilah yang disebut sebagai persepsi.

Persepsi pada hakikatnya adalah merupakan proses penilaian seseorang terhadap obyek tertentu. Menurut Young (1956) persepsi merupakan aktivitas mengindera, mengintegrasikan dan memberikan penilaian pada obyek-obyek fisik maupun obyek sosial, dan penginderaan tersebut tergantung pada stimulus fisik dan stimulus sosial yang ada di lingkungannya. Sensasi-sensasi dari lingkungan akan diolah bersama-sama dengan hal-hal yang telah dipelajari sebelumnya baik hal itu berupa harapan-harapan,nilai-nilai, sikap, ingatan dan lain-lain.[2]

Karena persepsi inilah yang akan diproses oleh otak manusia, disimpan, dan akan di recall kembali, maka persepsi-lah yang akan menjadi dasar manusia untuk memproses informasi berikutnya; maksudnya adalah Informasi yang datang akan dimaknai oleh otak berdasarkan informasi yang disimpan di memori (yang nantinya akan menjadi dasar untuk memaknai informasi lainnya). Hal ini akan terus berlangsung sehingga kumpulan-kumpulan persepsi tadi akan menjadi pemahaman kita. Pemahaman inilah yang akan mendorong kita dalam bertindak, yang akan menjadi standar kita untuk menilai sesuatu.

Pemahaman ini bisa jadi benar atau salah, tergantung darimana ia memperoleh informasi tersebut. Misalnya, jika kita hanya memahami bahwa alkohol dapat menghangatkan tubuh, maka kita akan berpendapat bahwa alkohol boleh diminum karena bermanfaat. Namun jika kita telaah lagi, ternyata alkohol mempunyai dampak yang amat buruk bagi tubuh sehingga kita menolaknya. Nah, apakah manusia dapat mengetahui segala yang baik dan buruk? Tentu tidak. Sehingga hingga titik ini, kita membutuhkan sumber pemahaman yang benar akan segala sesuatu, sehingga kita tidak salah dalam bertindak-tanduk. Pemahaman yang benar itu tidak lain berasal dari Islam saja.

[1]        http://musyafa.com/pengertian-dan-makna-iman-yusuf-qaradhawi/

[2] http://www.ilmupsikologi.com/2015/09/pengertian-persepsi-faktor-dan-jenisnya-menurut-ahli.html

Interpreter Bahasa Brainfuck Dalam Bahasa C

Brainfuck? Jangan salah paham dulu, Brainfuck adalah sebuah bahasa pemrograman esoteric yang minimalis. Bahasa Brainfuck hanya memiliki delapan perintah yaitu , . [ ] < > + -. Sebetulnya sudah banyak juga sih yang menulis compiler dan interpreter untuk bahasa ini, tapi saya ingin membuatnya sendiri karena tertarik perintahnya yang sedikit, hihi.

Untuk implementasi interpreter Brainfuck, saya memutuskan menggunakan Bahasa C sebagai permulaan. Di bawah ini adalah kode C untuk interpreter Brainfuck, kurang dari 170 baris, dan itu belum dioptimasi! 😛 Setelah di-compile interpreternya dapat menerima file program Brainfuck. Kalau malas compile sendiri, saya juga sudah siapkan executable untuk Windows di link github yang saya sediakan di bagian bawah. 🙂
https://github.com/Rosmianto/Brainfuck-interpreter

[code language=”cpp” collapse=”true”]
#include &lt;stdio.h&gt; // for basic I/O operation.
#include &lt;stdlib.h&gt; // for memory management.

typedef struct stack {
int value;
struct stack *next;
} stack_node_t;

typedef struct {
stack_node_t *top;
} stack_t;

int pop(stack_t *s);
void push(stack_t *s, int i);
char *bracemap(char *program);
void loadBFtoMemory(FILE *handle);
void process(char c);

const int memorySize = 30000;
char *cell;
int currentCell = 0;
int InstructionPointer = 0;
int i, charCount;
FILE *hInput; // Handle to File object.
char *programArray; // Cleaned up Brainfuck program.
char *braces; // Storage of braces pair location.
char *bracesStack; // temporary array for braces stack.
char _temp;

int main(int argc, char *argv[])
{
// Make sure file path always be specified.
if(argc &lt; 2)
return 0;

cell = calloc(memorySize, sizeof(char));

hInput = fopen(argv[1], &quot;r&quot;);

loadBFtoMemory(hInput);

braces = bracemap(programArray);

while(InstructionPointer &lt; charCount)
{
process(programArray[InstructionPointer]);
InstructionPointer++;
}

// printf(&quot;\n&quot;);

// for(i = 0; i &lt; 20; i++)
// printf(&quot;%d|&quot;, cell[i]);

// printf(&quot;\n&quot;);

free(programArray);
fclose(hInput);
return 0;
}

char *bracemap(char *program)
{
int i, start;
char *temp = calloc(charCount, sizeof(char));
stack_t tempStack = {NULL};

for(i = 0; i &lt; charCount; i++)
{
if(programArray[i] == ‘[‘)
{
push(&amp;tempStack, i);
start = i;
}
else if(programArray[i] == ‘]’)
{
int start = pop(&amp;tempStack);
temp[start] = i;
temp[i] = start;
}
}
return temp;
}

void process(char c)
{
switch(c)
{
case ‘+’:
cell[currentCell]++;
break;
case ‘-‘:
cell[currentCell]–;
break;
case ‘&gt;’:
currentCell++;
break;
case ‘&lt;’:
currentCell–;
break;
case ‘.’:
printf(&quot;%c&quot;, cell[currentCell]);
break;
case ‘,’:
cell[currentCell] = (char)getchar();
break;
case ‘[‘:
InstructionPointer = (cell[currentCell] == 0) ? braces[InstructionPointer] : (InstructionPointer);
break;
case ‘]’:
InstructionPointer = (cell[currentCell] == 0) ? (InstructionPointer) : braces[InstructionPointer];
break;
default: // Ignore other characters.
break;
}
}

void loadBFtoMemory(FILE *handle){
char c;
charCount = 0;
programArray = (char*) malloc((charCount + 1) * sizeof(char));
if(programArray == NULL)
printf(&quot;Memory allocation failed.&quot;);
else
{
c = fgetc(hInput);
while(c != EOF)
{
switch(c)
{
case ‘+’:
case ‘-‘:
case ‘&gt;’:
case ‘&lt;’:
case ‘.’:
case ‘,’:
case ‘[‘:
case ‘]’:
programArray[charCount++] = c;
realloc(programArray, (charCount + 1) * sizeof(char));
default:
break;
}
c = (char)fgetc(hInput);
}
}
}

int pop(stack_t *s){
stack_node_t *free_node;
int c;

free_node = s-&gt;top;
c = free_node-&gt;value;
s-&gt;top = free_node-&gt;next;
free(free_node);

return c;
}

void push(stack_t *s, int c){
stack_node_t *new_node;
new_node = (stack_node_t *) malloc(sizeof(stack_node_t));
new_node-&gt;value = c;
new_node-&gt;next = s-&gt;top;

s-&gt;top = new_node;
}
[/code]

How To Play Audio Directly From Your Arduino!

Dari segi kekuatan pemrosesan, Arduino memang terbilang minim: 16 MHz clock, 32 KB flash memory, 2 KB RAM (Arduino UNO). Meski minim kemampuan pemrosesan, arduino ternyata mampu melakukan hal-hal ajaib yang normalnya dikerjakan oleh development board papan atas. Hal ajaib ini salah satunya adalah memainkan file audio langsung dari memory flash-nya. Ntaps!

Normalnya supaya bisa memainkan file audio, Arduino harus dipasangi shield tambahan, seperti SD Card shield, atau boleh jadi shield audio player. Sehingga dengan begitu arduino hanya bertugas mengontrol audio playernya saja.

Namun bagi orang yang gemar eksperimen dan malas mengeluarkan uang, Arduino tidak boleh dibiarkan “nganggur” hanya mengatur-atur saja. Arduino harus dipekerjakan dengan keras!

Nah, untuk membuat arduino bisa memainkan file audio, kita bisa mengikuti tutorial yang disediakan di link berikut: http://playground.arduino.cc/Code/PCMAudio. Di bagian akhir disebutkan bahwa kita harus menyediakan file bernama sounddata.h yang berisi file audio kita. Nah loh, file header C kok isinya data audio?

Tenang, pada Arduino suara diproduksi menggunakan PWM (Pulse Width Modulation) yang frekuensinya bisa diatur dengan nilai 0-255. File header sounddata.h berisi urutan angka-angka yang nantinya dipakai untuk menghasilkan suara yang diinginkan.

Untuk menghasilkan angka-angka tersebut ternyata tidak sederhana juga, kita perlu program bernama wav2c. Program tersebut bertugas mengubah file audio wav yang kita miliki menjadi urutan angka-angka yang siap diupload pada Arduino.

Selain program wav2c, kita juga membutuhkan program sox. Sox ini berguna untuk memotong durasi file audio menjadi maksimal 10000 sampel (hanya beberapa detik). Oke, sebagai wrap-up, dan agar artikel ini mudah diikuti, saya sajikan tutorialnya dalam bentuk step by step:

  1. Pastikan sudah menginstalasi Audacity pada komputer Anda.
  2. Download program soxwav2c yang telah saya kostumasi khusus untuk Arduino di sini (link). Ekstrak ditempan yang aman.
  3. Buka audacity, pastikan Project Rate pada bagian kiri bawah diset pada 8000 Hz. Lakukan rekaman singkat. Dalam contoh ini saya coba merekam suara ucapan ‘test’:

    Project rate
    window test

  4. Potong file audio di bagian yang diperlukan saja.
    delete track
  5. Ubah tipe audio menjadi mono, dan hapus salah satu channel-nya:
    to mono
  6. Selanjutnya export file wav tersebut sebagai unsigned 8-bit PCM dan simpan di folder yang sama dengan program soxwav2c tadi.
    save
  7. Drag and drop file audio hasil export tadi ke convert.bat pada folder soxwav2c. Akan dihasilkan file sounddata.h
  8. Buat sketch baru pada Arduino IDE dengan program mengikuti http://playground.arduino.cc/Code/PCMAudio. Letakkan file sounddata.h bersama dengan file .ino yang dibuat pada folder yang sama.
  9. Hubungkan speaker biasa ke Pin 11 dan GND arduino. Akan terdengar suara ‘test’ setiap kali Arduino di-reset.

Selamat mencoba!