Dalam artikel ini kita akan bermain dengan suara bersama Arduino mulai dari
menggunakan fungsi tone() untuk membangkitkan nada hingga proyek kompleks yang
sanggup membuat Arduino memainkan musik polyphonic dan mengucapkan kalimat yang
diberikan dari masukan berupa teks. Untuk itu artikel ini akan dibagi menjadi
beberapa bagian bersambung.
Mari kita
mulai dari yang paling sederhana… membangkitkan nada dengan frekuensi tertentu.
Sebelum memulai dengan kode program, mari kita buat perangkat kerasnya
terlebih dahulu. Yang perlu kita persiapkan:
·
Speaker 8 ohm
·
Resistor 100 ohm
·
Papan Rancang Purnarupa (Prototype Design Board), atau dikenal dengan istilahBreadboard
Hubungkan
komponen-komponen elektronika yang sudah Anda siapkan seperti ilustrasi di
bawah ini (credit: gambar dibuat dengan Fritzing dan retouch menggunakan Adobe Photoshop):

Resistor yang dihubungkan secara seri ini berguna untuk membatasi
penggunaan arus.
Dalam banyak tutorial tentang topik ini, penggunaan komponen tambahan
seperti resistor di atas jarang dibahas, kita cuma diarahkan untuk merangkainya
seperti itu tanpa mengerti alasannya. Dalam seri artikel ini, kita akan
mempelajari sedikit lebih jauh alasan dibalik penggunaan suatu komponen.
Resistor ini
disebut sebagai resistor pembatas arus (current limiting resistor). Sesuai
petunjuk pada manual penggunaan Arduino, jumlah arus yang boleh ditarik dari
satu pin hanyalah sebesar maksimum 50 mA. Sesuai hukum
Ohm, dengan tegangan operasional sebesar 5V
(setara 5000 mV) diperlukan hambatan beban (load resistance) sebesar 5000 mV / 50 mA = 100 Ω.
Karena speaker yang kita gunakan mempunyai impedansi (impedance, nilai hambatan) sebesar 8 Ω, secara teori kita bisa menggunakan resistor
92 Ω dalam rangkaian ini. Walaupun demikian kita memilih untuk menggunakan
resistor 100 Ω karena dua alasan: (1) 50 mA adalah batasan maksimum, sebaiknya kita jangan terlalu memaksakan nilai maksimum ini, dan (2)
resistor 100Ω banyak tersedia dan mudah didapat dibanding resistor 92 Ω.
Setelah selesai menghubungkan komponen-komponen tersebut, mari kita mulai
membuat programnya. Bukalah aplikasi Arduino IDE, lalu masukkan kode berikut
ini:
void setup() {
pinMode( 8, OUTPUT );
pinMode( 13, OUTPUT );
}
void loop() {
//
matikan LED
digitalWrite( 13, LOW );
//
mainkan nada di pin#8 dg. frekuensi 261Hz selama 500 ms
tone( 8, 261 );
delay( 500 );
//
nyalakan LED
digitalWrite( 13, HIGH );
//
mainkan nada di pin#8 dg. frekuensi 392Hz selama 500 ms
tone( 8, 392 );
delay( 500 );
}
Sambungkan
Arduino dengan komputer melalui kabel USB, lalu unggah (upload) kode
tersebut ke Arduino. Caranya ada 3, silakan pilih salah satu: (1) tekan tombol
Upload (tombol berbentuk lingkaran dengan tanda panah menunjuk ke kanan), (2)
melalui menu File → Upload, atau (3) tekan kombinasi tombol Ctrl+U.
Bila kode
berhasil diunggah, akan terdengar suara seperti sirine dimana dua buah nada
denganpitch berbeda (yang
satu lebih rendah dibanding yang lainnya) akan dimainkan bergantian
masing-masing selama setengah detik (500 milliseconds).
Dengan
menelaah kode di atas, dengan jelas terlihat bahwa untuk membunyikan nada dengan
frekuensi dan durasi tertentu di Arduino sangatlah mudah, yaitu dengan
menggunakan fungsitone().
Fungsi tone() ini menerima 2 atau 3 parameter sebagai masukannya, dengan format sbb.:
tone( pin, frekuensi, durasi );
Parameter
pertama adalah nomor pin yang digunakan untuk keluaran ke speaker. Parameter
kedua adalah frekuensi yang ingin dibunyikan dalam Hz (Hertz, getaran per
detik). Parameter ketiga adalah durasi dalam milidetik, menyatakan berapa lama
nada tersebut akan dibunyikan. Parameter durasi bersifat opsional, artinya
boleh tidak diisikan. Bila tidak diisikan, maka nada tersebut akan dibunyikan
tanpa batas waktu, untuk mematikannya dengan memanggil fungsinoTone( pin ).
Yang perlu diperhatikan saat parameter durasi dinyatakan, fungsi ini akan
kembali sesegera mungkin tanpa menunggu durasi tersebut terlewati (nada selesai
dimainkan).
Pada kecepatan 16 Hz (Arduino Uno bekerja di kecepatan ini), frekuensi yang
dapat dimainkan berkisar antara 31 Hz hingga 8 MHz. Sebagai catatan, frekuensi
yang dapat didengar oleh telinga manusia berkisar antara 20 hingga 20 kHz.
Pada contoh kode di ditambahkan kode untuk membuat LED berkelap-kelip
selaras pitch nada yang dimainkan, mirip dengan lampu sirine polisi.
Untuk lebih
puas bereksperimen dengan fungsi tone() ini, cobalah unggah kode berikut ini…
void setup() {
Serial.begin( 9600 );
pinMode( 8, OUTPUT );
}
word f = 0;
word d = 0;
boolean koma = false;
void loop() {
if( Serial.available() ) {
char c = Serial.read();
if( c >= '0' && c <= '9' ) {
if( koma ) d = ( d * 10 ) + ( c - 48 );
else f = ( f * 10 ) + ( c - 48 );
}
else if( c == ',' ) {
koma = true;
d = 0;
}
else if( c == 10 ) {
if( f ) {
if( d ) tone( 8, f, d );
else tone( 8, f );
}
else noTone( 8 );
f = 0;
koma = false;
}
}
}
Setelah kode termuat ke Arduino, buka jendela Serial Monitor dengan menekan
tombol di bagian sebelah kanan pada baris tombol Arduino IDE (bergambar seperti
kaca pembesar dengan dua titik berderet di sampingnya). Pada kolom masukan di
Serial Monitor, masukkan angka antara 31 sampai 20.000 lalu tekan ENTER.
Arduino akan memainkan nada dengan frekuensi yang Anda masukkan. Menekan ENTER
tanpa mengisikan angka akan menghentikan bunyi. Untuk menyetel durasi, masukkan
nilai durasi dalam milidetik setelah nilai frekuensi dengan dipisahkan tanda
koma.
Catatan: pastikan setelan baudrate pada Serial Monitor (kotak pilihan di sudut kanan bawah) pada kecepatan 9600 baud dan modus masukan Newline (pada kotak pilihan di sebelah kiri pilihan baudrate) sudah terpilih.
Simpanlah
sketch ini dengan nama ArduinoAudio (otomatis akan disimpan dalam fileArduinoAudio.ino dalam subfolder ArduinoAudio) dengan mengeksekusi menu File Save As…
Di bagian
berikutnya kita akan bermain dengan nada musik (musical notes) dengan membuat simulasi piano. Lanjutkan ke “Arduino & Audio: Musical
Notes”…
Sehubungan dengan pembahasan untuk saat ini software Arduino yang akan
digunakan adalah driver dan IDE, walaupun masih ada beberapa software lain yang
sangat berguna selama pengembangan Arduino.
IDE Arduino adalah software yang sangat canggih ditulis dengan menggunakan
Java. IDE Arduino terdiri dari:
·
Editor program, sebuah window yang
memungkinkan pengguna menulis dan mengedit program dalam bahasa
Processing (red: yang benar adalah dalam bahasa C/C++ yang disederhanakan, yang merupakan
turunan dari proyek open
source Wiring. Salah satu miskonsepsi paling
umum tentang bahasa yang digunakan di Arduino adalah bahwa bahasa ini merupakan
“bahasa” Processing. Baca perbandingannya di sini: http://arduino.cc/en/Reference/Comparison?from=Main.ComparisonProcessing)
·
Compiler, sebuah modul yang mengubah kode
program (bahasa Processing C/C++)
menjadi kode biner. Bagaimanapun sebuah microcontroller tidak akan bisa
memahami bahasa Processing (red:
tingkat tinggi seperti C/C++). Yang bisa dipahami oleh microcontroller adalah
kode biner. Itulah sebabnya compiler diperlukan dalam hal ini.
·
Uploader, sebuah modul yang memuat kode
biner dari komputer ke dalam memory di dalam papan Arduino.
CATATAN: Sebuah kode program Arduino
umumnya disebut dengan istilah sketch (red: dalam bahasa Indonesia: sketsa). Kata “sketch” digunakan secara bergantian dengan
“kode program” dimana keduanya memiliki arti yang sama.
Berikut ini adalah contoh tampilan IDE Arduino dengan sebuah sketch yang
sedang diedit:

Pembahasan berikutnya akan dijelaskan langkah-langkah untuk menginstal IDE
Arduino:
·
Mendapatkan software Arduino
·
Menginstall driver Arduino
·
Menguji koneksi komputer dan papan Arduino
MENDAPATKAN & MENGINSTALL SOFTWARE ARDUINO
File
instalasi software Arduino dapat diperoleh pada alamat situs web di bawah ini
yang tersedia untuk sistem operasi Windows, Mac dan Linux: http://arduino.cc/en/Main/Software
File instalasi ini berbentuk kompresi. Untuk menjalankan software-software
Arduino maka file tersebut harus diekstrak ke dalam sebuah direktori. Beberapa
software Arduino ditulis menggunakan bahasa pemrograman Java termasuk IDE-nya,
sehingga ia tidak perlu diinstal seperti software pada umumnya tapi dapat
langsung dijalankan selama komputer Anda telah terinstall Java runtime. IDE ini
bisa langsung digunakan untuk membuat program namun untuk saat ini belum bisa
dipakai untuk berkomunikasi dengan papan Arduino karena driver harus diinstal
terlebih dahulu.
MENGINSTALL DRIVER USB PADA WINDOWS XP
Pada topik
ini akan dijelaskan langkah-langkah instalasi driver USB pada Windows XP (red: Pada
Windows versi baru, sistem operasi akan mengenali, mengunduh dan menginstall
driver secara otomatis, cukup sambungkan Arduino dengan komputer lewat kabel
USB)
1. Sambungkan papan Arduino dengan sebuah komputer melalui kabel USB.
2. Dengan
segera komputer akan mendeteksi kehadiran sebuah perangkat baru yangbelum ia
kenal dan Windows akan menampilkan sebuah window wizard seperti berikutini.
Jawab
dengan “No, not this
time” dan tekan Next.
Jawab
dengan “No, not this
time” dan tekan Next.
3. Wizard akan mencari software driver untuk perangkattersebut. Silakan
menjawab dengan “Install from
a list or specific location (Advance)”. Lanjutkan
dengan Next.
4. Tentukan lokasi dimana software Arduino ditempatkan pada komputer. Silakan
sesuaikan lokasinya sesuai dengan hasil ekstrak software Arduino pada komputer
Anda. Di dalam lokasi tersebut terdapat sebuah direktori bernama drivers,
arahkan wizard untuk mencari driver di dalam direktori tersebut. Klik Next untuk melanjutkan. Jika muncul sebuah window peringatan bahwa “Arduino UNO has not passed Windows Logo
testing… dst.“, jawab dengan “Continue Anyway”.
5. Jika driver Arduino selesai diinstal pada komputer maka pada akhir proses
akan tampil sebuah pesan berhasil seperti berikut ini. Tekan Finish untuk menutup wizard. Driver telah berhasil diinstall.


MENGUJI KONEKSI KOMPUTER DAN PAPAN ARDUINO
Sekalipun sebuah papan Arduino dapat bekerja denganmendapat asupan daya
dari sebuah komputer, namun hal itu tidak berarti ia dapat berkomunikasi dengan
komputer tersebut. Untuk memastikan Arduino telah terpasang dengan benar
dandapat berkomuniasi dengan interaktif maka ia perlu diuji.
1. Jalankan IDE Arduino dengan menjalankan sebuah file bernama arduino.exe pada lokasi software Arduino.

Walaupun tampak seperti program Windows pada umumnya, namun sebetulnya program ini adalah sebuah program Java. Jika Anda menemukan sebuah pesan kesalahan kemungkinan besar pada komputer belum terinstal Java Runtime Environment (JRE)atau Java Development Kit (JDK). Untuk mendapatkan salah satu software tersebut, silakan men-download-nya dari situs web http://www.oracle.com.

Walaupun tampak seperti program Windows pada umumnya, namun sebetulnya program ini adalah sebuah program Java. Jika Anda menemukan sebuah pesan kesalahan kemungkinan besar pada komputer belum terinstal Java Runtime Environment (JRE)atau Java Development Kit (JDK). Untuk mendapatkan salah satu software tersebut, silakan men-download-nya dari situs web http://www.oracle.com.
2. Jalankan menu Tools → Board, kemudian pilih tipe papan yang sesuai


3. Jalankan menu File → Examples → 01. Basic → Blink. Ini adalah program sederhana yang fungsinya adalah membuat lampu LED
menyala berkedip-kedip seperti yang telah dijelaskan sebelumnya.
4. /*
5. Blink
6. Turns on an LED on for one second, then
off for one second,
7. repeatedly.
8. This example code is in the public
domain.
9. */
10.void setup() {
11.// initialize the digital pin as an
output.
12.// Pin 13 has an LED connected on most
Arduino boards:
13.pinMode(13, OUTPUT);
14.}
15.void loop() {
16.digitalWrite(13, HIGH); // set the LED
on
17.delay(1000); // wait for a second
18.digitalWrite(13, LOW); // set the LED
off
19.delay(1000); // wait for a second
}
Tidak perlu kuatir jika Anda kurang
memahami cara kerja sketch di atas karena kita akan belajar bahasa pemrograman
ini pada pembahasan tersebut nanti. Untuk saat ini cukup perhatikan baris-baris
yang ditandai. Bagian itu adalah perintah untuk menunda aliran program selama
satu detik (1000 milidetik). Jadi bila lampu LED diperintahkan menyala pada
baris sebelumnya, maka dengan perintah delay() lampu itu akan bertahan menyala
selama satu detik sebelum ia diperintahkan untuk padam pada baris berikutnya.
Silakan mengubah kedua angka 1000 itu
menjadi 200 agar interval nyala-padam menjadi lebih pendek.
20. Pada toolbar klik tombol Upload untuk memuat sketch tersebut ke dalam papan
Arduino.
Jika sketch berhasil dimuat akan ditandai dengan pesan berhasil seperti di
bawah ini.
Jika sketch berhasil dimuat akan ditandai dengan pesan berhasil seperti di
bawah ini.
Namun jika sketch gagal dimuat (seperti
pada kebanyakan kasus umumnya) maka akan muncul pesan kesalahan seperti
berikut: avrdude: stk500_getsync(): not in sync:
resp=0x30
Solusinya cukup mudah, yaitu cukup
mengganti pilihan serial port melalui menuTools → Serial Port. Jika Anda tidak yakin pada port nomor berapa papan Arduino itu terhubung,
coba pilih sebuah nomor port lalu jalankan upload seperti langkah sebelumnya.
Jika pesan kesalahan masih muncul, ganti nomor port-nya dan lakukan berulang-ulang
sampai upload berhasil.
Saat sketch yang sudah dimodifikasi
tersebut berhasil dimuat ke dalam papan Arduino maka tampak lampu LED menyala
dan padam dengan frekuensi yang lebih cepat. Silakan lakukan eksperimen sendiri
misalnya menambah delay dan lihat apa yang terjadi.
Artikel ini
menutup pembahasan tentang pengenalan Arduino. Walaupun cukup pendek namun saya
berharap artikel ini memberi pengertian yang jelas kepada para pembaca, membuka
wawasan dan visi mengenai potensi besar dari platform ini serta membangkitkan
rasa antusias untuk memulai perjalanan panjang dan berpetualang bersama
Arduino. (red: Silakan pesan Arduino untuk Anda gunakan bereksperimen dari toko komponen elektronika
Indonesia onlineyang menyediakan Arduino dan modul-modul
pendukungnya serta berbagai macam komponen elektronika dengan harga murah dan
kualitas teruji).
Artikel ini dicuplik dari buku “Pengenalan Arduino” karangan Feri Djuandi yang merupakan lulusan dari Teknik Elektro Universitas Trisakti, Jakarta. Kami melakukan modifikasi redaksional pada beberapa bagian yang dianggap perlu serta menambahkan tautan yang relevan.
Artikel ini dicuplik dari buku “Pengenalan Arduino” karangan Feri Djuandi yang merupakan lulusan dari Teknik Elektro Universitas Trisakti, Jakarta. Kami melakukan modifikasi redaksional pada beberapa bagian yang dianggap perlu serta menambahkan tautan yang relevan.
Komponen
utama di dalam papan Arduino adalah sebuahmicrocontroller 8 bit dengan merk
ATmegayang dibuat oleh perusahaan Atmel Corporation. Berbagai papan Arduino
menggunakan tipe ATmega yang berbeda-beda tergantung dari spesifikasinya,
sebagai contoh Arduino Unomenggunakan ATmega328 sedangkan ArduinoMega
2560 yang lebih canggih menggunakan ATmega2560.
Untuk
memberikan gambaran mengenai apa saja yang terdapat di dalam sebuah
microcontroller, pada gambar berikut ini diperlihatkan contoh diagram blok
sederhana dari microcontrollerATmega328 (dipakai pada Arduino Uno).

Blok-blok di atas dijelaskan sebagai berikut:
·
Universal
Asynchronous Receiver/Transmitter (UART) adalah antar muka yang
digunakan untuk komunikasi serial seperti pada RS-232, RS-422 dan RS-485.
·
2KB RAM pada memory kerja bersifat volatile (hilang saat daya dimatikan), digunakan oleh variable-variabel di
dalam program.
·
32KB RAM flash memory bersifat non-volatile, digunakan untuk menyimpan program yang dimuat dari komputer.
Selain program, flash memory juga menyimpanbootloader.
Bootloader adalah program inisiasi yang ukurannya kecil, dijalankan oleh CPU saat daya dihidupkan. Setelah bootloader selesai dijalankan, berikutnya program di dalam RAM akan dieksekusi.
Bootloader adalah program inisiasi yang ukurannya kecil, dijalankan oleh CPU saat daya dihidupkan. Setelah bootloader selesai dijalankan, berikutnya program di dalam RAM akan dieksekusi.
·
1KB EEPROM bersifat non-volatile,
digunakan untuk menyimpan data yang tidak boleh hilang saat daya
dimatikan. Tidak digunakan pada papan Arduino (red: namun
bisa diakses/diprogram oleh pemakai dan digunakan sesuai kebutuhan).
·
Central Processing Unit (CPU), bagian dari
microcontroller untuk menjalankan setiap instruksi dari program.
·
Port input/output, pin-pin untuk menerima
data (input) digital atau analog, dan mengeluarkan data (output) digital
atau analog.
Setelah mengenal bagian-bagian utama dari microcontroller ATmega sebagai
komponen utama, selanjutnya kita akan mengenal bagian-bagian dari papan
Arduino itu sendiri.
Dengan mengambil contoh sebuah papan Arduino tipe USB, bagian-bagiannya
dapat dijelaskan sebagai berikut:

|
14 pin input/output digital (0-13)Berfungsi sebagai input atau output, dapat diatur oleh program.
Khusus untuk 6 buah pin 3, 5, 6, 9, 10 dan 11, dapat juga berfungsi sebagai pin analog output dimana tegangan output-nya dapat diatur. Nilai sebuah pin output analog dapat diprogram antara 0 – 255, dimana hal itu mewakili nilai tegangan 0 – 5V. |
|
USB, berfungsi untuk:
·
Memuat program dari komputer ke
dalam papan
·
Komunikasi serial antara papan dan
komputer
·
Memberi daya listrik kepada papan
|
|
Sambungan SV1Sambungan atau jumper untuk memilih sumber daya papan, apakah dari sumber
eksternal atau menggunakan USB. Sambungan ini tidak diperlukan lagi pada
papan Arduino versi terakhir karena pemilihan sumber daya eksternal atau USB
dilakukan secara otomatis.
|
|
Q1 – Kristal (quartz crystal oscillator)Jika microcontroller dianggap sebagai sebuah otak, maka kristal adalah jantung-nya
karena komponen ini menghasilkan detak-detak yang dikirim kepada
microcontroller agar melakukan sebuah operasi untuk setiap detak-nya. Kristal
ini dipilih yang berdetak 16 juta kali per detik (16MHz).
|
|
Tombol Reset S1Untuk me-reset papan sehingga program akan mulai lagi dari awal.
Perhatikan bahwa tombol reset ini bukan untuk menghapus program atau
mengosongkan microcontroller.
|
|
In-Circuit Serial Programming (ICSP)Port ICSP memungkinkan pengguna untuk memprogram microcontroller secara
langsung, tanpa melalui bootloader. Umumnya pengguna Arduino tidak
melakukan ini sehingga ICSP tidak terlalu dipakai walaupun disediakan.
|
|
IC 1 – Microcontroller AtmegaKomponen utama dari papan Arduino, di dalamnya terdapat CPU, ROM dan RAM.
|
|
X1 – sumber daya eksternalJika hendak disuplai dengan sumber daya eksternal, papan Arduino dapat
diberikan tegangan DC antara 9-12V.
|
|
6 pin input analog (0-5)Pin ini sangat berguna untuk membaca tegangan yang dihasilkan oleh sensor
analog, seperti sensor suhu. Program dapat membaca nilai sebuah pin input
antara 0 – 1023, dimana hal itu mewakili nilai tegangan 0 – 5V
|
CATATAN: Untuk selanjutnya pembahasan pada seri
artikel ini akan digunakan papan Arduino yang berbasiskan USB dan papan
yang akan dijadikan contoh adalah Arduino Uno.
Tanpa melakukan konfigurasi apapun, begitu sebuah papan Arduino dikeluarkan
dari kotak pembungkusnya ia dapat langsung disambungkan ke sebuah komputer
melalui kabel USB. Selain berfungsi sebagai penghubung untuk pertukaran
data, kabel USB ini juga akan mengalirkan arus DC 5 Volt kepada papan Arduino
sehingga praktis tidak diperlukan sumber daya dari luar. Saat mendapat suplai
daya, lampu LED indikator daya pada papan Arduino akan menyala menandakan bahwa
ia siap bekerja.

Pada papan Arduino Uno terdapat sebuah LED kecil yang terhubung ke pin
digital no 13. LED ini dapat digunakan sebagai output saat seorang pengguna
membuat sebuah program dan ia membutuhkan sebuah penanda dari jalannya program
tersebut. Ini adalah cara yang praktis saat pengguna melakukan uji coba.
Umumnya microcontroller pada papan Arduino telah memuat sebuah program kecil
yang akan menyalakan LED tersebut berkedip-kedip dalam jeda satu detik. Jadi
sangat mudah untuk menguji apakah sebuah papanArduino baru dalam kondisi baik
atau tidak, cukup sambungkan papan itu dengan sebuah komputer dan perhatikan
apakah LED indikator daya menyala konstan dan LED dengan pin-13 itu menyala
berkedip-kedip.
CATATAN: Setelah
mengeluarkan papan Arduino dari kotaknya, harap berhati-hati
dengan listrik statis dan hubungan singkat karena bagian bawah papan
Arduino tidak ditutup dengan lapisan pelindung. Dianjurkan untuk tidak
menyentuh bagian bawah atau kaki-kaki komponennya dengan tangan untuk
menghindari bahaya listrik statis dari tubuh Anda. Hati-hati juga
meletakkan papan Arduino pada meja. Pastikan tidak ada logam atau cairan
yang bisa mengakibatkan hubungan pendek yangbisa merusak
komponen. Usahakan meletakkan papan Arduino pada alas berbahan plastik
yang aman.
Kita akan
melakukan pengujian papan Arduino lebih jauh dengan merubah program dan
memuatnya ke dalam papan, namun setelah melewati beberapa pembahasan terlebih
dahulu yang terlingkup dalam artikel berikut: “Software
Arduino“
