Halo Fanbot!
Sedang ada project apa hari ini?
Kalian sedang bingung sama suatu program di Arduino IDE?
Cari di sini yuk barangkali ketemu jawabannya.
[lwptoc numeration=”none” title=”Daftar Isi”]
Sebelum masuk ke bahasa pemrogramannya, kita akan berkenalan dulu dengan aplikasi Arduino IDE. Arduino IDE adalah salah satu aplikasi yang di gunakan untuk memprogram IC mikrokontroler agar dapat di gunakan sesuai dengan fungsinya. Aplikasi Arduino IDE ini pasti sudah sangat familiar bagi teman-teman yang bersinggungan dengan elektronika, informatika, atau berbagai bidang lainnya yang saling berhubungan.
Aplikasi Arduino IDE dapat kita dapatkan di laman Arduino sendiri. Selain itu, aplikasi ini juga open source sehingga kita dapat menggunakannya dengan gratis. Tapi jika kalian mau, kita dapat memberikan donasi untuk Arduino IDE. Bagi kalian yang belum install aplikasi ini, silakan dapat ikuti langkah pada artikel Tutorial Lengkap Instalasi Arduino IDE (Install Aplikasi, Menambahkan Library, ESP8266, ESP32).
Perbedaan Bahasa Arduino IDE dan Bahasa C
Pada dasarnya aplikasi ini menggunakan bahasa C, namun sedikit lebih berbeda untuk beberapa hal terutama karena tujuan dari aplikasi ini adalah pengiriman perintah ke IC mikrokontroler. Ada beberapa bahasa yang perlu di sesuaikan meskipun secara logika tetap sama dengan bahasa C.
Nah bahasan kali ini kita akan fokus pada program dasar. Silakan bagi teman-teman yang ingin belajar mikrokontroler, dapat melihat program-program dasar di sini terlebih dahulu ya.
Struktur Program Dasar
Ketika pertama kali kita membuka aplikasi Arduino IDE, pasti sudah di sediakan dua function yaitu void setup() dan void loop. kedua function ini selalu muncul di awal tanpa ada pengaturan apapun. 2 Function ini jangan sampai di hapuskan salah satunya meskipun dalam keadaan kosong (tidak ada program).
void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, to run repeatedly: }
|
void setup()
Void Setup adalah function yang memiliki fungsi untuk menjalankan program di awal. Program ini biasanya diisi dengan inisialisasi, mengaktifkan suatu perangkat, reset awal, konektivitas, dan berbagai fungsi lainnya yang di perlukan untuk kebutuhan program berikutnya. Semua program akan di mulai dari sini.
void setup() { // put your setup code here, to run once: } |
Jika kita menghapus function setup, maka program tidak akan dapat di jalankan. Penyebabnya karena pembacaan awalnya tidak di munculkan. Namun jika teman-teman memang tidak memerlukan jenis function ini, tetap ada function ini namun isinya dapat di kosongkan. Jadi function hanya berfungsi untuk menjalankan program saja.
void loop()
Void loop adalah function yang memiliki fungsi untuk menjalankan program secara berulang. Function ini dapat di isi dengan berbagai program yang bersifat “update”. Jadi tidak hanya di mainkan sekali saja, namun terus dimainkan ditahap-tahap berikutnya. Biasanya pada function ini berisi program seperti pembacaan sensor, kendali berdasarkan kondisi, perhitungan, atau yang lainnnya dengan prediksi “bisa jadi” ada perubahan.
void loop() { // put your main code here, to run repeatedly: } |
Jika kita menghapus program ini, maka program tetap tidak dapat digunakan. Function ini dijadikan sebagai syarat yang diperlukan dalam program Arduino. Jika teman-teman merasa tidak memerlukan function ini, kita hanya perlu mengosongkannya (tidak menghapusnya).
Baca juga: Cara Menggabungkan Dua atau Lebih Program Arduino
Include Library
Include Library berfungsi untuk memanggil library yang sudah ada sebelumnya, baik bawaan dari aplikasi Arduino IDE, maupun dari luar yang perlu diinstall. Bagi teman-teman yang masih bingung untuk cara Install library, silakan kunjungi artikel Tutorial Lengkap Instalasi Arduino IDE (Install Aplikasi, Menambahkan Library, ESP8266, ESP32).
Penulisan library ada 2 jenis, yaitu dengan kurung lancip ( <> ) dan dengan tanda kutip ( ” ” ). Keduanya memiliki fungsi yang sama dalam pemanggilan. Meskipun ada library tertentu yang hanya bisa menggunakan satu jenis saja. Perhatikan contoh berikut.
#include "ThingSpeak.h" #include "secrets.h" #include &amp;amp;lt;ESP8266WiFi.h&amp;amp;gt;; #include &amp;amp;lt;dht.h&amp;amp;gt;; |
Pemanggilan library akan mempermudah pengguna dalam menyelesaikan program secara keseluruhan. Biasanya library digunakan berdasarkan perangkat yang digunakan seperti sensor, aktuator, platform website, display, atau yang lainnya.
Oh ya penulisan library ini berada di luar function ya (termasuk setup dan loop) dan biasanya paling atas. Penggunaan program di luar function biasanya digunakan untuk program yang perlu diakses semua function (setup, loop, dan fucntion tambahan jika ada). Jadi karena library ini berguna di kedua function, maka harus diletakkan di luar function.
Baca juga: Download Library Project IoT
Inisialisasi Pin
Inisialiasi pin digunakan untuk pemilihan pin-pin yang digunakan untuk sinkronisasi antara program dan rangkaian. Contoh saja ketika dalam rangkaian yang kita buat menggunakan pin 2, maka pada program juga perlu diinisialiasi bahwa kita menggunakan pin 2. Kita dapat melakukan inisialisasi pin dengan 3 cara (setidaknya Minbot baru nemu 3 cara. hehe), yaitu sebagai berikut.
Menggunakan Define
Penulisan inisialisasi pin menggunakan Define adalah sebagai berikut.
#define LED 2 #define BUTTON D3 |
Penggunaan define ini dapat langsung menentukan nama variabel dan pin yang digunakan. Untuk inisialisasi pin, cara define ini tergolong yang paling efektif. Dimana kita dapat mengisi pin secara langsung meskipun bukan menggunakan (hanya) angka. Contohnya D1, D2, A0, atau yang lainnya. define ini bisa langsung digunakan untuk nama pinnya, bukan hanya nomornya.
Menggunakan Deklarasi Variabel
Penggunaan deklarasi variabel dimaksudkan bahwa akan ada variabel yang diperlukan untuk membuat inisialisasi pin ini. Lebih jelasnya, lihat contoh berikut.
int LED 2; int BUTTON 3; |
Penggunaan Deklarasi ini kita perlu memastikan jenis variabel yang akan kita buat. Dalam contoh di atas, jenis yang digunakan adalah int (integer) dan memang yang paling memungkinkan adalah jenis variabel ini. Jenis lainnya seperti bool (boolean) yang hanya bisa 2 angka (0 dan 1), tidak punya cukup angka untuk nilai lainnya. Sedangkan penggunaan seperti float atau double dirasa terlalu berlebihan dimana angkanya dapat dipastikan tidak ada yang membutuhkan nilai di belakang koma (contohnya 2.5). Jadi int (integer) sudah sangat cocok untuk inisialisasi pin. Kekurangan dari jenis ini adalah kita diharuskan untuk menggunakan angka dan untuk beberapa pin yang nama pinnya tidak hanya angka, harus dicari nilai GPIO-nya.
Langsung Pakai
Langsung pakai ini dimaksudkan bahwa inisialisasi pin tidak menggunakan variabel. Jadi langsung diterapkan pada program. Contohnya sebagai berikut.
pinMode (2, OUTPUT); digitalWrite(2, HIGH); |
Pada program di atas, angka 2 adalah pin yang kita gunakan untuk LED (misalnya), kemudian langsung diterapkan pada programnya. Kekurangan dari cara ini adalah ketika kita ingin mengubah pin, kita perlu mengubah semuanya, satu per satu (bisa find and Replace). Berbeda seperti yang sebelumnya dimana kita hanya perlu mengganti pada variabel saja.
Baca juga : Cara Menggabungkan 2 Program Sensor hanya dengan Library
Mode Pin
Mode pin di gunakan untuk mengatur fungsi pin setelah kita sudah menentukan pin. contoh penulisannya adalah seperti berikut.
pinMode (LED, OUTPUT); pinMode(BUTTON, INPUT); |
Output di gunakan untuk kebutuhan pin untuk nilai keluaran, seperti LED, servo, atau yang lainnya. Sedangkan untuk Input di gunakan untuk nilai masukan seperti button, sensor, atau yang lainnya.
Pin Digital dan Pin Analog
Bagi teman-teman yang sudah belajar sistem digital, mungkin sudah tidak kesulitan untuk membedakan kedua hal di atas. Digital dan analog.
Digital adalah nilai yang hanya ada 0 (mati) dan 1 (hidup). Jika kita terapkan pada Perangkat Arduino Uno (misalkan) yang memiliki tegangan 0 hingga 5 VDC. Nah Digital ini hanya akan memberikan nilai output 0 VDC atau hanya 5 VDC. Jika digital ini untuk Input, maka nilai yang masuk dalam sistem hanya 0 untuk tegangan 0 VDC hingga yang mendekati 0 VDC (misal 1 atau 2) dan nilai 1 untuk tegangan 5 VDC atau yang mendekatinya (4 atau 3). Jika tegangan berada di antara keduanya (seimbang) maka akan tetap di tetapkan yang terdekat, meskipun terkadang berubah-ubah.
baca = digitalRead (BUTTON); //Program pembacaan nilai Input (BUTTON) digitalWrite (LED,HIGH); //Program pengaturan nilai Output (LED) |
Analog adalah nilai yang memiliki range tertentu sesuai dengan konversinya. Namun jika kita tanpa konversi, maka nilai input ada pada range 0-1023, sedangkan untuk output 1-255. Nilai ini terkadang di konversi dengan penyesuaian hasil baca sensor. atau kebutuhan lainnya. Tegangan input akan di baca dari tiap-tiap perubahannya. Sedangkan keluaran juga akan di kirimkan sesuai dengan tegangan yang di atur sebelumnya.
baca = AnalogRead (SENSOR); //Program pembacaan nilai Input (SENSOR) analogWrite (SERVO,100); //Program pengaturan nilai Output (SERVO) |
Penulisan di Serial Monitor
Serial Monitor adalah bagian tampilan yang tersedia di Arduino IDE. Tampilan ini mempermudah kita ketika ingin mengetahui nilai hasil baca atau memastikan program sudah berjalan dengan baik atau masih ada yang tidak sesuai. Berikut ini adalah program yang di gunakan untuk menuliskan suatu kalimat atau menampilkan nilai dari suatu variabel.
int a = 1; void setup() { Serial.begin(9600); //pengaturan baudrate di 9600 } void loop() { Serial.print("indobot"); //menuliskan kata "indobot" pada serial monitor Serial.print (a); //menuliskan nilai dari variabel a Serial.println("Academy"); //println untuk menuliskan di bawahnya (enter) } |
Function
Kata Function sudah sering kita gunakan pada pembahasan Struktur program yaitu untuk void loop dan void setup. Function adalah sebuah struktur yang mengandung sekelompok pernyataan yang akan di eksekusi ketika nama dari function tersebut di panggil. Kecuali untuk beberapa function yang bisa langsung di eksekusi tanpa pemanggilan. Dalam satu program keseluruhan, yang dapat di jalankan hanya 2 function, yaitu setup() dan loop(). Jadi jika kita ingin menjalankan suatu function buatan, kita perlu melakukan pemanggilan nama function.
Tanpa Parameter
Function seperti ini hanya di panggil untuk eksekusi pernyataan tanpa adanya pengaruh dari luar function. Sehingga hanya eksekusi saja. Sebagai contoh, perhatikan program berikut.
void loop(){ namaFunction(); //pemanggilan nama function } void namaFunction(){ //function Serial.print("Indobot Academy"); } |
Program di atas, pemanggilan function berada di loop dengan tujuan function berjalan secara berulang-ulang.
Dengan Parameter
Function ini di gunakan untuk memberikan pengaruh kepada pernyataan di dalamnya. Biasanya digunakan untuk memasukkan rumus perhitungan atau mencari nilai tertentu dengan masukan yang berbeda-beda.
void loop(){ namaFunction("indobot Academy"); //pemanggilan nama function } void namaFunction(String a){ //function Serial.print(a); } |
If Else
If else di gunakan untuk membuat suatu keputusan jika suatu kondisi sesuai atau tidak sesuai. Ada 3 jenis If Else yang bisa di gunakan untuk mengembangkan program.
Hanya If
If yang berdiri sendiri, biasanya di gunakan untuk memastikan suatu kondisi, di mana ketika kondisi sesuai, maka akan menjalankan suatu pernyataan lainnya di dalam if. Namun jika tidak, maka tidak akan terjadi apa-apa. Hanya terlewati saja. Perhatikan contoh berikut.
if (BUTTON == 1) { Serial.println ("tombol ditekan"); } Serial.println ("Indobot Academy"); |
Pada program di atas di jelaskan “jika variabel BUTTON bernilai 1, maka akan di tuliskan pada serial monitor “tombol di tekan” dan kemudian muncul tulisan berikutnya “Indobot Academy” (setelah pernyataan di dalam if telah di laksanakan, maka akan di lanjutkan ke program di bawahnya). Jika BUTTON tidak bernilai 1, maka yang akan tertulis pada serial monitor hanya “Indobot Academy”.
Baca juga: Jenis Sensor Suhu dan Cara Membacanya dengan Arduino
If Else
If yang di bersamai dengan Else dig unakan untuk memberikan pilihan untuk menjalankan suatu pernyataan jika kondisi sesuai atau menjalankan pernyataan lainnya jika kondisi tidak sesuai. Perhatikan contoh berikut.
if (BUTTON == 1) { Serial.println ("tombol ditekan"); } else { Serial.println ("Indobot Academy"); } |
Berbeda dengan program di sebelumnya, program If Else pada program di atas di jelaskan “Jika BUTTON bernilai 1, maka tertulis tombol di tekan, tetapi jika nilai tidak sesuai, maka akan tertulis Indobot Academy.
If Else If
If Else if adalah bagian dari program untuk pengambilan keputusan dengan pilihan yang lebih dari 2. Contohnya sebagai berikut.
if (SENSOR<25) { Serial.println ("suhu dingin"); } else if (SENSOR>=25 && SENSOR<=30) { Serial.println ("suhu sedang"); } else { Serial.println ("suhu panas"); } |
Program di atas kita misalkan pada program suhu yang jika suhunya di bawah 25, maka tertulis bahwa suhu dingin, 25 hingga 30, suhu sedang, dan jika tidak ada yang sesuai denga kondisi, maka tertulis bahwa suhu panas.
Sementara Sampai sini dulu ya teman-teman. Ada yang mau Request bahasan program apa yang membuat kalian bingung, yang mungkin bisa kita bahas di artikel berikutnya. Silakan bisa di tuliskan di kolom komentar ya.
Selamat belajar semuanya.
Assalamualaikum bang, gimana bahasa pemrograman motor servo 180 dan 360 derajat, yang diaplikasikan pada stabilizer atau AVR bang?