Arduino Uno adalah salah satu papan mikrokontroler paling populer di dunia, berfungsi sebagai fondasi bagi ribuan proyek elektronik dan prototipe. Untuk dapat menginstruksikan papan ini agar melakukan tugas spesifik, kita memerlukan bahasa pemrograman yang sesuai. Bahasa pemrograman Arduino Uno secara fundamental didasarkan pada bahasa pemrograman C/C++, namun disederhanakan dan dioptimalkan melalui lingkungan pengembangan terintegrasi (IDE) Arduino.
Ketika kita berbicara tentang bahasa pemrograman Arduino Uno, kita sebenarnya merujuk pada kerangka kerja (framework) Arduino. Kerangka kerja ini menyediakan serangkaian fungsi, pustaka (libraries), dan struktur kode yang memudahkan interaksi antara kode yang kita tulis dengan perangkat keras Arduino. Walaupun kode dasarnya adalah C++, pemrogram pemula sering kali hanya perlu memahami struktur dasar Arduino Sketch, yang terdiri dari dua fungsi utama: setup() dan loop().
Setiap program Arduino, yang biasa disebut 'Sketch', harus memiliki dua fungsi inti ini agar dapat dikompilasi dan dieksekusi oleh mikrokontroler ATmega328P pada papan Uno.
void setup(): Bagian ini hanya dieksekusi sekali saat papan dinyalakan atau saat tombol reset ditekan. Ini adalah tempat ideal untuk menginisialisasi variabel, mengatur mode pin (input atau output), dan memulai komunikasi serial. Misalnya, mengatur Pin 13 sebagai output untuk menyalakan LED internal.
void loop(): Setelah setup() selesai, fungsi ini akan dieksekusi berulang kali tanpa henti (looping) selama papan masih menerima daya. Di sinilah logika utama program diletakkan, seperti membaca sensor, mengontrol motor, atau memancarkan sinyal.
// Contoh dasar Blinking LED
void setup() {
// Menginisialisasi pin digital 13 sebagai output
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH); // Menyalakan LED
delay(1000); // Tunggu selama 1000 milidetik (1 detik)
digitalWrite(13, LOW); // Mematikan LED
delay(1000); // Tunggu lagi
}
Keunggulan utama bahasa pemrograman Arduino adalah kesederhanaan dan abstraksi yang ditawarkannya dari kerumitan bahasa C/C++ tingkat rendah. Arduino IDE dan pustakanya menyediakan banyak fungsi bawaan yang sangat membantu dalam tugas-tugas elektronik dasar:
digitalRead() dan digitalWrite() memungkinkan kontrol mudah terhadap pin digital untuk membaca status tombol atau menyalakan/mematikan perangkat seperti LED atau relay.analogRead() memungkinkan pembacaan nilai sensor variabel (seperti potensiometer), sementara analogWrite() (menggunakan PWM) dapat digunakan untuk mengontrol kecerahan LED atau kecepatan motor.delay() dan millis() sangat penting untuk mengatur interval waktu dalam eksekusi program, meskipun penggunaan millis() lebih disukai untuk menghindari pemblokiran eksekusi program.Serial.begin() dan Serial.print() memudahkan debugging dengan mengirimkan data kembali ke komputer melalui kabel USB.Meskipun tampak sederhana, di balik semua fungsi bawaan tersebut, Arduino Uno beroperasi menggunakan mikrokontroler ATmega328P yang memerlukan bahasa tingkat menengah seperti C/C++. Pemilihan C/C++ sebagai basis memberikan beberapa keuntungan krusial:
Pertama, efisiensi memori. Mikrokontroler Uno memiliki memori yang sangat terbatas (biasanya hanya 2KB SRAM dan 32KB Flash memory). C/C++ memungkinkan kontrol ketat terhadap alokasi memori dan kecepatan eksekusi, hal yang vital pada sistem tertanam (embedded systems).
Kedua, kompatibilitas. Dengan berbasis C/C++, komunitas memiliki akses ke pustaka-pustaka C/C++ yang luas untuk mengintegrasikan komponen pihak ketiga seperti layar LCD, sensor GPS, atau modul komunikasi nirkabel. Ini memperluas kapabilitas Arduino Uno jauh melampaui fungsi dasarnya.
Bagi pemula, memahami bahwa mereka sedang bekerja dalam lingkungan yang 'disederhanakan' dari C/C++ membantu transisi pengetahuan jika mereka memutuskan untuk pindah ke platform mikrokontroler lain atau ingin mengoptimalkan kode mereka lebih lanjut. Bahasa pemrograman Arduino Uno adalah gerbang yang efektif menuju dunia pemrograman sistem tertanam.