Menggunakan Fungsi Loop dalam Pemrograman Arduino
Loop digunakan untuk mengontrol aliran program. Dalam satu lingkaran, satu blok kode dieksekusi berulang kali. Setiap siklus dari loop disebut iterasi dari loop. Tergantung pada kondisi tertentu yang dapat Anda tentukan dalam kode, Anda dapat mengontrol apakah program memasuki loop atau tidak.
Setiap sketsa Arduino memiliki setidaknya satu loop, loop atau void loop() adalah bagian utama. Tetapi akan sangat berguna jika loop lain beroperasi di dalam loop utama.
Pada artikel ini, kita akan membahas while loop, do while loop, for loop. Kita akan melihat bagaimana menggunakan loop ini dalam program Arduino dengan contoh proyek yang mengedipkan LED hanya ketika sebuah tombol ditekan. Kita juga akan melihat bagaimana melakukan operasi seperti menyetel mode pin dari beberapa pin secara bersamaan dengan for loop.
While Loop
Kode untuk while loop terlihat seperti ini:
Jika kondisinya benar, program akan memasuki tubuh while loop dan mengeksekusi kode tubuh dalam satu loop selama kondisinya tetap benar. Jika kondisinya salah, program akan melewati while loop dan melanjutkan ke baris kode berikutnya.
Sebagai contoh cara menggunakan while loop, mari kita buat rangkaian yang akan mengedipkan LED selama tombol ditekan.
Ini adalah bagian yang Anda perlukan untuk membangun proyek ini:
- arduino uno
- Kabel jumper
- Papan projectboard atau breadboard
- Push button taktil
- Resistor 1K Ohm
Ikuti diagram pengkabelan ini untuk menghubungkan sirkuit:
Setelah rangkaian terhubung, unggah kode ini ke Arduino:
Di bagian atas sketsa, kami mendeklarasikan variabel pin untuk pin yang terhubung ke tombol tekan yang disebut buttonPin, dan variabel pin untuk pin yang terhubung ke LED disebut ledPin.
Di bagian setup() ini, kami mengatur buttonPin sebagai input dengan resistor pull-up internal. Kemudian kita atur ledPin sebagai output.
Di bagian loop() ini, kami mendeklarasikan variabel bernama buttonState dan menyetelnya sama dengan digitalRead(buttonPin). Ini akan membaca status tegangan yang terdeteksi pada buttonPin(pin 7) dan menyimpan hasilnya dalam variabel buttonState.
Kami ingin program memasuki while loop ketika tombol ditekan. Menekan tombol menyebabkan pin 7 ditarik rendah. Jadi syaratnya adalah buttonState == LOW. Saat tombol ditekan, buttonState akan sama rendah, membuat kondisi benar. Maka Arduino akan masuk ke while loop dan mengeksekusi kode body sampai kondisi menjadi false. Kondisi tersebut hanya akan bernilai false jika dalam kondisi buttonState high, sehingga selama tombol ditekan maka LED akan terus berkedip dan mati.
Do While Loop
Lakukan while loop bekerja dengan cara yang sama seperti loop while biasa, kecuali bahwa kode tubuh dieksekusi sebelum pengujian kondisi terjadi. Jadi meskipun kondisinya salah, kode di dalam tubuh akan dijalankan setidaknya sekali. Kode untuk do while loop terlihat seperti ini:
Pertama Arduino memasuki blok do dan mengeksekusi kode tubuh. Kemudian pindah ke pernyataan while dan mengevaluasi kondisinya. Jika kondisinya salah, Arduino akan melanjutkan ke sketsa lainnya. Tetapi jika kondisinya benar, kode di dalam tubuh akan dieksekusi berulang-ulang hingga kondisi menjadi salah.
For Loop
Untuk loop sering digunakan untuk menambah dan mengurangi counter, atau untuk menginisialisasi sejumlah besar pin pada waktu yang sama. Untuk loop mengevaluasi satu set tiga parameter – nilai inisialisasi, kondisi, dan iterasi:
Nilai inisialisasi menetapkan variabel kontrol loop, biasanya disebut iatau j. Kondisi menentukan kapan sketsa akan keluar dari perulangan for. Nilai iterasi mendefinisikan bagaimana variabel kontrol loop berubah dengan setiap iterasi dari loop.
Salah satu aplikasi yang berguna dari for loop adalah menginisialisasi beberapa pin pada saat yang bersamaan. Misalnya, lihat kode ini yang dapat digunakan untuk mengatur pin Arduino 0-9 sebagai output:
Menggunakan for loop, Anda dapat melakukan hal yang sama hanya dengan tiga baris kode:
Di sini, kami mendeklarasikan variabel kontrol loop yang disebut idan mengaturnya sama dengan nol. Variabel kontrol loop menyimpan jumlah loop, yang akan meningkat satu setiap iterasi melalui loop.
Kemudian kita atur kondisinya. Perulangan for akan terus berulang selama kondisinya benar. Dalam hal ini kondisinya adalah jumlah pin yang ingin kita inisialisasi. Setiap pin dari nol sampai sembilan akan diset sebagai output (10 pin), sehingga kondisinya i < 10.
Kami ingin variabel kontrol loop ibertambah satu setiap kali melalui loop, jadi kami gunakan i++untuk nilai iterasi.
Pada iterasi pertama dari loop, iakan diset ke nol. Nol kurang dari sepuluh, jadi kondisinya benar, dan kode di badan akan dieksekusi. Dalam pinMode()fungsi tersebut, parameter pertama biasanya adalah nomor pin yang ingin kita inisialisasi. Tapi kita bisa menggunakan variabel kontrol loop isebagai gantinya, jadi pin nol digital akan ditetapkan sebagai output.
Saat berikutnya melalui loop, nilai iterasi i++ akan membuat variabel kontrol loop bertambah satu. Jadi isekarang akan sama dengan satu. Satu masih kurang dari sepuluh, sehingga Arduino memasuki tubuh for loop. Karena isama dengan satu sekarang, pin satu akan ditetapkan sebagai output.
Perulangan for akan terus berulang, bertambah isatu setiap kali sampai itidak kurang dari sepuluh. Ketika isama dengan sepuluh, kondisinya menjadi salah dan Arduino keluar dari loop for untuk melanjutkan sketsa lainnya.
Perintah Break
Anda dapat membuat program keluar dari loop meskipun kondisinya benar dengan kata kunci break . Kata kunci break menyebabkan program segera keluar dari loop. Ia bekerja dengan perulangan while, perulangan do-while, dan perulangan for. Ini hanyalah cara lain untuk mengontrol perilaku loop.
Misalnya, Anda dapat menggunakan break untuk keluar dari loop saat peristiwa tertentu terjadi:
Dalam contoh ini, break;ditempatkan di dalam pernyataan if. Jika x sama dengan tiga, Arduino akan memasuki isi pernyataan if dan menjalankan perintah break. Itu akan menyebabkan sketsa keluar dari loop for, jadi "Halo" tidak akan dicetak ke monitor serial. Tetapi karena Serial.print("Goodbye");berada di luar for loop, "Goodbye" akan dicetak ke monitor serial.
Perintah Continue
Kata kunci continue memungkinkan lebih banyak kontrol atas aksi loop. Continue menyebabkan sketsa menghentikan iterasi loop saat ini, dan memulai dengan siklus baru.
Selama xtidak sama dengan tiga, "Halo" akan dicetak satu kali untuk setiap iterasi dari for loop. Tetapi ketika x tidak sama dengan tiga, Arduino akan memasuki tubuh pernyataan if dan kata kunci continue akan dieksekusi. Ini akan membuat Arduino menghentikan iterasi saat ini dari loop for dan memulai siklus baru.
Dengan perintah continue, sketsa tidak keluar dari loop for, ia hanya melompat ke awal iterasi berikutnya. Variabel kontrol loop mempertahankan nilainya, sehingga hitungan tidak hilang. Kata kunci continue adalah cara untuk mempersingkat iterasi dari sebuah loop ketika suatu peristiwa tertentu terjadi.
Memahami bagaimana berbagai jenis loop bekerja penting jika Anda ingin kontrol penuh atas bagaimana sketsa Anda beroperasi. Mereka bukan topik yang mudah untuk dikuasai, tetapi dengan sedikit latihan dan beberapa eksperimen, Anda akan dapat menggunakannya untuk mendapatkan kontrol penuh atas aliran sketsa Anda.
Sumber: Circuit Basics