Dasar · 12 mnt baca

Perulangan dan Variabel di Coding Blok: for dan Array di Arduino

Perulangan dan variabel di coding blok: ulangi selamanya vs loop(), blok hitung vs perulangan for Arduino, array dan penghitung, dengan blok LED berjalan dan kode C++.

Perulangan dan variabel di coding blok adalah dua bahan dasar yang mengubah program dari “lakukan ini sekali” menjadi “terus lakukan ini, dan lakukan dengan cerdas”. Perulangan menjalankan blok yang sama berulang-ulang, dan variabel mengingat sebuah angka selama pengulangan itu berlangsung. Di blok BlueGrays, keduanya muncul sebagai “ulangi selamanya”, “hitung dengan i”, “variabel global (paling atas)”, dan “atur … ke”; di kode Arduino yang di-upload ke board, pasangannya adalah loop(), perulangan for, variabel int, dan baris penugasan.

Tulisan ini adalah bagian 4 dari seri Dari Blok ke Kode. Di bagian sebelumnya kita mencocokkan tombol dan blok jika (if) dengan if/else; di bagian berikutnya kita membahas membaca sensor dan beralih dari coding blok ke MicroPython di Pico.

Di bagian ini kita membaca blok dari empat proyek gratis berdampingan dengan kode C++ aslinya: LED Berjalan, yang menyalakan enam LED satu demi satu; LED Berjalan dengan Kecepatan yang Bisa Diatur, yang mengambil kecepatannya dari potensiometer; Efek LED Knight Rider, yang mengirim cahaya dari satu ujung ke ujung lain lalu kembali; dan versi potensiometernya, Efek LED Knight Rider dengan Kecepatan yang Bisa Diatur. Keempatnya memakai rangkaian yang sama: enam LED di pin D2–D7 dan satu potensiometer di A0. Di akhir, kamu akan menulis contoh penghitungmu sendiri dan membahas tiga kesalahan yang paling sering dilakukan pemula: menghitung kelebihan atau kekurangan satu, melewati ujung array, dan waktu tunggu panjang yang membuat tombol jadi “buta”.

Blok “ulangi selamanya” dan loop(): kenapa board tidak pernah berhenti?

Program di komputermu ditutup begitu tugasnya selesai; program di Arduino tidak. Board tidak punya sistem operasi, dan prosesornya tidak punya pekerjaan lain. Itulah sebabnya setiap proyek blok punya kerangka yang sama: apa pun yang ada di dalam “setup (jalan sekali)” berjalan satu kali ketika board menyala atau tombol reset ditekan, dan apa pun yang ada di dalam “ulangi selamanya” berulang dari atas ke bawah tanpa henti. Di sisi C++, keduanya adalah fungsi setup() dan loop(). Begitu baris terakhir loop() selesai, board langsung melompat kembali ke baris pertama; loop() pendek tanpa waktu tunggu bisa berjalan puluhan ribu kali per detik. Satu-satunya cara menghentikan board adalah memutus dayanya atau meng-upload program baru. Pengulangan tanpa akhir ini bukan cacat, melainkan memang begitu rancangannya: membaca tombol, memantau sensor, dan mengedipkan LED semuanya dikerjakan ulang di setiap putaran, sehingga board terus bereaksi terhadap perubahan di sekitarnya.

BlokPadanan C++Kapan berjalan?
variabel global (paling atas)baris-baris di atas setup()Sekali ketika program mulai; variabelnya tetap ada di memori
setup (jalan sekali)void setup() { ... }Sekali ketika board menyala atau setelah reset
ulangi selamanyavoid loop() { ... }Setelah setup() selesai, tanpa henti sampai daya diputus

Variabel di coding blok: variabel global dan blok deklarasi

Variabel adalah kotak kecil tempat kamu menaruh angka dan memanggilnya dengan namanya. Di blok, variabel dibuat di dalam blok ungu “variabel global (paling atas)”. Blok “deklarasikan bilangan bulat (int) potValue = 0” di dalamnya menjadi baris int potValue di kode: int adalah tipenya, potValue namanya, dan 0 nilai awalnya. “Paling atas” itu penting: baris-baris ini berada di bagian paling atas file, di luar setup() dan loop(). Variabel global yang dideklarasikan seperti ini bisa dilihat dari mana saja di program dan tidak kehilangan nilainya setiap kali loop() mulai lagi. Di Arduino Uno, int berukuran 2 byte dan menyimpan bilangan bulat dari -32768 sampai 32767, lebih dari cukup untuk rentang 0–1023 dari analogRead() dan untuk nomor pin. Mungkin kamu memperhatikan bahwa blok proyek LED Berjalan dengan Kecepatan yang Bisa Diatur bertuliskan potValue = 0, sedangkan kodenya hanya bertuliskan int potValue;. Hasil keduanya sama: di C++, variabel global tanpa nilai awal dimulai dari nol.

Blok yang mengubah variabel di kemudian hari adalah “atur … ke”. Blok “atur potValue ke baca analog A0” berubah menjadi potValue = analogRead(A0); di kode. Tanda = di sini bukan kesamaan seperti di matematika; artinya “hitung nilai di sebelah kanan dan masukkan ke kotak di sebelah kiri”. Perbandingan yang menanyakan apakah dua nilai sama ditulis dengan == di C++, seperti yang kita lihat bersama blok jika di bagian sebelumnya dari seri ini. Ketika blok atur berjalan, nilai lama di kotak dihapus dan nilai baru ditulis. Setiap blok yang membaca variabel itu sekarang memakai nilai baru tersebut: “tunggu potValue ms” menunggu selama berapa pun milidetik yang tersimpan di potValue pada momen itu.

Perulangan hitung: blok “hitung dengan i” dan perulangan for Arduino

Untuk mengulang sesuatu sebanyak jumlah tertentu, kamu memakai blok hijau “hitung dengan i dari 0 sampai 5 per 1”. Blok ini membuat penghitung bernama i, mengisinya dengan 0, menjalankan blok di dalamnya, lalu menambahkan 1 ke i dan menjalankannya lagi, dan terus begitu sampai i melewati 5. Padanannya di Arduino adalah baris for (int i = 0; i < 6; i++). Di dalam tanda kurung ada tiga bagian yang dipisahkan titik koma: awal (int i = 0), syarat untuk terus berjalan (i < 6), dan langkah yang dilakukan setelah setiap putaran (i++, artinya tambahkan satu ke i). Hal terpenting yang perlu diperhatikan: nilai akhir di blok ikut dihitung. “Dari 0 sampai 5” berarti 0, 1, 2, 3, 4, dan 5, jadi perulangan berjalan 6 kali, bukan 5, dan masing-masing dari enam LED mendapat satu putaran. Itulah sebabnya kodenya bertuliskan i < 6, yang artinya sama dengan i <= 5. Pola “mulai dari nol, terus selama lebih kecil dari jumlah item” sangat umum di kode Arduino karena angka 6 langsung memberi tahu jumlah LED-nya.

Pengaturan blokC++ yang setaraNilai iPutaran
dari 0 sampai 5 per 1for (int i = 0; i < 6; i++)0, 1, 2, 3, 4, 56
dari 0 sampai 5 per 2for (int i = 0; i <= 5; i += 2)0, 2, 43
dari 4 sampai 1 per 1for (int i = 4; i > 0; i--)4, 3, 2, 14
dari 1 sampai 6 per 1for (int i = 1; i <= 6; i++)1, 2, 3, 4, 5, 66 (tapi ledPins[6] tidak ada)

Blok array: “array 2 3 4 5 6 7” dan ledPins[i]

Daripada mendeklarasikan enam variabel terpisah untuk enam LED, kamu bisa menyimpan semuanya dalam satu daftar. Ketika blok ungu “array 2 3 4 5 6 7” dipasang ke “deklarasikan bilangan bulat (int) ledPins = …”, blok itu menjadi baris int ledPins[] = {2, 3, 4, 5, 6, 7}; di kode. Kurung siku menandakan bahwa itu array, dan kurung kurawal berisi nilai-nilainya. Kamu mengakses sebuah elemen lewat nomor posisinya, yaitu indeks, dan di C++ indeks dimulai dari 0: elemen pertama adalah ledPins[0] dan yang terakhir ledPins[5]. Di blok, ini dilakukan oleh “item i dari ledPins”, yang berubah menjadi ledPins[i]. Karena perulangan hitung juga dimulai dari 0, keduanya cocok sekali: di setiap putaran, i memberi indeks berikutnya dan ledPins[i] memberi nomor pin yang tersimpan di sana. Kelebihan lain dari array: untuk mengubah urutan LED, kamu cukup menukar angka-angka di daftar tanpa menyentuh perulangannya. Untuk penjelasan lebih lengkap tentang array, lihat array di Arduino.

i (indeks)ledPins[i]LED yang menyala
02LED 1 (D2)
13LED 2 (D3)
24LED 3 (D4)
35LED 4 (D5)
46LED 5 (D6)
57LED 6 (D7)

LED berjalan: blok dan C++ baris demi baris

Blok proyek LED berjalan: array, perulangan hitung, dan ulangi selamanya
Blok LED berjalan: array ledPins di bawah variabel global, perulangan hitung di setup yang menjadikan pin-pinnya output, dan perulangan hitung kedua di dalam ulangi selamanya yang menyalakan LED satu per satu selama 150 ms.
C++ (Arduino IDE)
1int ledPins[] = {2, 3, 4, 5, 6, 7};   // LED pinleri, yanma sırasıyla / LED pins in lighting order
2
3void setup() {
4  // Tüm LED pinlerini çıkış yap / Set all LED pins as outputs
5  for(int i = 0; i < 6; i++) {
6    pinMode(ledPins[i], OUTPUT);
7  }
8}
9
10void loop() {
11  // Her LED'i sırayla 150 ms yak / Light each LED in turn for 150 ms
12  for(int i = 0; i < 6; i++) {
13    digitalWrite(ledPins[i], HIGH);
14    delay(150);
15    digitalWrite(ledPins[i], LOW);
16  }
17}
BlokBaris C++Fungsinya
deklarasikan bilangan bulat (int) ledPins = array 2 3 4 5 6 7int ledPins[] = {2, 3, 4, 5, 6, 7};Menyimpan enam nomor pin sesuai urutan menyala
setup (jalan sekali)void setup() {Semua isinya berjalan sekali ketika board mulai
hitung dengan i dari 0 sampai 5 per 1for(int i = 0; i < 6; i++) {Menghitung i dari 0 sampai 5: 6 putaran
atur pin item i dari ledPins sebagai OUTPUTpinMode(ledPins[i], OUTPUT);Menjadikan pin yang sedang diproses sebagai output
ulangi selamanyavoid loop() {Semua isinya berulang tanpa henti
tulis HIGH ke pin item i dari ledPinsdigitalWrite(ledPins[i], HIGH);Menyalakan LED yang sedang diproses
tunggu 150 msdelay(150);LED tetap menyala selama 150 ms
tulis LOW ke pin item i dari ledPinsdigitalWrite(ledPins[i], LOW);Mematikan LED; perulangan pindah ke LED berikutnya

Bayangkan program sebagai sebuah garis waktu. Ketika board mulai, perulangan di setup menjadikan keenam pin output satu per satu dari 0 sampai 5, dan itu tidak pernah terjadi lagi. Lalu ulangi selamanya dimulai: perulangan hitung di dalamnya menyalakan LED di D2, menunggu 150 ms, mematikannya, lalu melakukan hal yang sama untuk D3, D4, D5, D6, dan D7. Satu putaran butuh 6 × 150 = 900 ms. Ketika LED terakhir mati, loop() selesai, board langsung melompat kembali ke atas, dan cahaya mulai lagi dari D2; karena tidak ada jeda antarputaran, cahayanya seolah mengalir tanpa henti. Untuk mengubah kecepatan, kamu cukup mengganti satu angka, yaitu 150: tulis 50 dan cahayanya berlari tiga kali lebih cepat, tulis 500 dan cahayanya berjalan santai. Membuat kecepatan tetap itu bisa diatur dengan kenop membawa kita ke proyek berikutnya.

LED berjalan dengan kecepatan yang bisa diatur: nilai potensiometer menjadi waktu tunggu

Blok LED berjalan dengan kecepatan yang bisa diatur: variabel potValue dan baca analog A0
LED berjalan dengan kecepatan yang bisa diatur: di setiap putaran perulangan hitung, baca analog A0 disimpan ke potValue, lalu LED tetap menyala selama potValue ms.
C++ (Arduino IDE)
1int ledPins[] = {2, 3, 4, 5, 6, 7};   // LED pinleri, yanma sırasıyla / LED pins in lighting order
2int potValue;                         // Pot değeri = bekleme (ms) / Pot value = delay (ms)
3
4void setup() {
5  // Tüm LED pinlerini çıkış yap / Set all LED pins as outputs
6  for(int i = 0; i < 6; i++) {
7    pinMode(ledPins[i], OUTPUT);
8  }
9}
10
11void loop() {
12  for(int i = 0; i < 6; i++) {
13    potValue = analogRead(A0);        // Hızı oku (0-1023) / Read the speed (0-1023)
14    digitalWrite(ledPins[i], HIGH);
15    delay(potValue);                  // Pot değeri kadar ms bekle / Wait as many ms as the pot value
16    digitalWrite(ledPins[i], LOW);
17  }
18}

Satu-satunya perbedaan dari LED berjalan adalah dua blok baru. “deklarasikan bilangan bulat (int) potValue = 0” ditambahkan ke variabel global, dan perulangan hitung diawali dengan blok “atur potValue ke baca analog A0”. analogRead(A0) mengubah tegangan di pin tengah potensiometer menjadi angka dari 0 sampai 1023; angka itu langsung masuk ke “tunggu potValue ms”, dengan kata lain baris delay(potValue). Putar kenop ke satu ujung dan setiap LED menyala sekitar satu detik (1023 ms), jadi satu putaran butuh kira-kira 6 detik; putar ke ujung lain dan waktu tunggunya turun ke 0, lalu LED berganti begitu cepat sampai semuanya tampak menyala redup bersamaan. Membaca potensiometer di dalam perulangan, sebelum setiap LED, adalah pilihan yang disengaja: LED berikutnya langsung memakai kecepatan baru begitu kamu memutar kenop, jadi kamu tidak perlu menunggu putaran selesai. Cara kerja potensiometer bisa kamu pelajari di Apa Itu Potensiometer?.

Knight Rider: dua perulangan yang menghitung maju dan mundur

Blok proyek LED Knight Rider: satu perulangan menghitung 0 sampai 5 dan satu lagi menghitung 4 sampai 1
Efek LED Knight Rider: ulangi selamanya berisi dua perulangan hitung. Yang pertama menghitung dari 0 sampai 5 dan menggerakkan cahaya dari D2 ke D7, yang kedua menghitung mundur dari 4 sampai 1 dan membawanya kembali dari D6 ke D3.

Pada efek Knight Rider, cahaya bergerak dari satu ujung ke ujung lain lalu kembali. Blok proyek Efek LED Knight Rider punya dua perulangan hitung yang tersusun atas-bawah di dalam ulangi selamanya. Yang pertama adalah “hitung dengan i dari 0 sampai 5 per 1” yang sudah kamu kenal, dan menggerakkan cahaya dari D2 ke D7. Yang kedua adalah “hitung dengan i dari 4 sampai 1 per 1”: karena nilai awalnya lebih besar dari nilai akhirnya, blok menghitung mundur dan i menjadi 4, 3, 2, 1. Di kode, ini adalah baris for(int i = 4; i > 0; i--); i-- mengurangi satu dari i. Kenapa dari 4 sampai 1 dan bukan dari 5 sampai 0? Karena ledPins[5] (D7) sudah menyala di akhir putaran maju dan ledPins[0] (D2) di awal putaran berikutnya. Melewatkan kedua ujung di perjalanan balik mencegah LED di ujung menyala dua kali berturut-turut, sehingga pantulannya terlihat mulus. Satu kali pergi-pulang adalah 6 + 4 = 10 langkah, masing-masing 100 ms, total 1 detik. Efek LED Knight Rider dengan Kecepatan yang Bisa Diatur memakai dua perulangan yang sama; bedanya hanya ada blok “atur potValue ke baca analog A0” di awal kedua perulangan, dan yang dipakai adalah “tunggu potValue ms” sebagai ganti 100 ms. Untuk pola lainnya, lihat LED berjalan Knight Rider.

Contoh penghitungmu sendiri: penghitung putaran dan port serial

Sekarang ayo tulis contoh kecil yang menggabungkan semuanya: setiap kali LED berjalan menyelesaikan satu putaran, sebuah penghitung bertambah, dan board mencetak nilai-nilai i serta jumlah putaran ke komputer. Dengan blok dari gambar-gambar tadi, kamu menyusunnya seperti ini: di bawah array ledPins di variabel global, tambahkan “deklarasikan bilangan bulat (int) rounds = 0”. Setup mendapat blok “mulai serial di 9600 baud”. Di dalam perulangan hitung, sebelum LED menyala, blok “cetak serial” mencetak teks “i = ”, lalu i, lalu teks “ pin = ” dengan opsi “tanpa pindah baris”, dan terakhir “item i dari ledPins” dengan opsi “baris baru”. Setelah perulangan hitung, masih di dalam ulangi selamanya, blok “atur rounds ke …” menerima hasil penjumlahan rounds + 1, dan jumlah putaran dicetak dengan “cetak serial … baris baru”.

C++ (Arduino IDE)
1int ledPins[] = {2, 3, 4, 5, 6, 7};   // LED pinleri / LED pins
2int rounds = 0;                       // tamamlanan tur sayısı / number of finished rounds
3
4void setup() {
5  Serial.begin(9600);                 // seri port 9600 baud / serial port at 9600 baud
6  for (int i = 0; i < 6; i++) {
7    pinMode(ledPins[i], OUTPUT);
8  }
9}
10
11void loop() {
12  for (int i = 0; i < 6; i++) {
13    Serial.print("i = ");             // aynı satırda kal / stay on the same line
14    Serial.print(i);
15    Serial.print("  pin = ");
16    Serial.println(ledPins[i]);       // alt satıra geç / new line
17    digitalWrite(ledPins[i], HIGH);
18    delay(300);
19    digitalWrite(ledPins[i], LOW);
20  }
21  rounds = rounds + 1;                // sayacı bir artır / add one to the counter
22  Serial.print("Tur / Round: ");
23  Serial.println(rounds);
24}

Setelah meng-upload, buka Serial Monitor di Arduino IDE dan atur ke 9600 baud. Di setiap putaran kamu akan melihat enam baris, dari “i = 0 pin = 2” sampai “i = 5 pin = 7”, diikuti baris “Tur / Round” yang menghitung 1, 2, 3. Keluaran ini adalah bukti paling jelas bahwa nilai akhir blok hitung ikut dihitung: “dari 0 sampai 5” menghasilkan tepat enam nilai. Perhatikan juga bahwa rounds dideklarasikan di variabel global; nilainya tidak kembali ke nol setiap kali loop() mulai, jadi nilainya terbawa dari putaran ke putaran. Satu putaran butuh 6 × 300 = 1,8 detik, jadi batas int 32767 tercapai setelah kira-kira 16 jam; kalau kamu perlu menghitung lebih lama, jadikan variabelnya unsigned long. Penjelasan lebih lanjut tentang Serial Monitor ada di Serial Monitor Arduino.

Rangkaian: 6 LED, resistor 220 Ω, dan potensiometer

KomponenKoneksi (Arduino Uno)Di kode
LED 1D2 → 220 Ω → anoda LED (kaki panjang), katoda → GNDledPins[0]
LED 2D3 → 220 Ω → anoda, katoda → GNDledPins[1]
LED 3D4 → 220 Ω → anoda, katoda → GNDledPins[2]
LED 4D5 → 220 Ω → anoda, katoda → GNDledPins[3]
LED 5D6 → 220 Ω → anoda, katoda → GNDledPins[4]
LED 6D7 → 220 Ω → anoda, katoda → GNDledPins[5]
Potensiometer (10 kΩ)Satu ujung ke 5V, pin tengah ke A0, ujung lain ke GNDanalogRead(A0), hanya di proyek dengan kecepatan yang bisa diatur

Resistor 220 Ω mengalirkan sekitar (5 − 2) / 220 ≈ 14 mA melalui LED merah yang diberi daya 5 V, dan nilai ini aman untuk LED maupun pin Arduino. Kalau kamu memakai LED warna lain, cek resistornya dengan kalkulator resistor LED. Kumpulkan semua katoda di jalur GND breadboard dan hubungkan jalur itu ke pin GND Arduino. Kalau kaki luar potensiometer tertukar, tidak ada yang rusak; hanya arah putaran kenopnya yang terbalik. Proyek LED berjalan dan Knight Rider tidak memakai potensiometer, dan membiarkannya tetap terpasang tidak masalah, jadi kamu bisa mencoba keempat proyek di rangkaian yang sama secara bergantian.

Kesalahan umum pada perulangan dan variabel

KesalahanGejalaSolusi
Menghitung kelebihan satu: “dari 0 sampai 6”Perulangan berjalan 7 kali dan putaran terakhir membaca ledPins[6], yang tidak adaNilai akhir ikut dihitung: untuk 6 LED pakai 0 sampai 5 (i < 6 di kode)
Memulai indeks dari 1LED pertama di D2 tidak pernah menyala dan putaran terakhir melewati ujung arrayIndeks array dimulai dari 0, jadi mulai blok hitung dari 0
Melewati ujung arrayPin lain yang tidak terkait ikut berubah atau program berperilaku aneh; C++ tidak memeriksa batas arrayIndeks harus selalu berada di antara 0 dan jumlah item − 1
Mendeklarasikan penghitung di dalam loop()Penghitung kembali ke 0 di setiap putaran dan selalu mencetak 1Deklarasikan penghitung di blok “variabel global (paling atas)”
Perulangan di setup terlalu pendek (0 sampai 4)LED terakhir menyala sangat redup atau tidak menyala sama sekali, karena pinnya tidak pernah dijadikan outputRentang hitung di setup dan di ulangi selamanya harus sama
Tertukar antara penugasan dan perbandinganif (potValue = 0) selalu bernilai salah dan juga menghapus nilainyaPenugasan pakai =, perbandingan pakai ==
Waktu tunggu yang panjang membuat tombol jadi “buta”. Blok “tunggu … ms”, yaitu delay(), menghentikan board sepenuhnya selama berjalan; tidak ada tombol yang dibaca dan tidak ada sensor yang dicek selama itu. Di LED Berjalan dengan Kecepatan yang Bisa Diatur, dengan potensiometer diputar penuh, satu putaran butuh sekitar 6 detik. Kalau kamu menambahkan tombol ke proyek ini yang dibaca di awal setiap putaran, tekanan singkat kemungkinan besar datang di tengah waktu tunggu dan hilang. Solusinya adalah menunggu dengan cara mengukur waktu: dengan millis() kamu bertanya “apakah sudah cukup waktu berlalu sejak perubahan LED terakhir?” dan tetap membaca tombol di sela-selanya. Teknik ini kami jelaskan langkah demi langkah di Arduino millis() vs delay().

Menjelajahi blok perulangan dan variabel di aplikasi BlueGrays

Empat proyek di tulisan ini dan proyek-proyek di bawah sepenuhnya gratis di aplikasi BlueGrays, baik bloknya maupun kodenya. Di bagian kode sebuah proyek, nyalakan sakelar Tampilkan sebagai blok, maka kode diganti dengan blok dari program yang sama; ketuk gambarnya untuk membukanya dalam layar penuh dan memperbesar perulangan hitung yang panjang dengan nyaman. Tab Pahami blok memandumu menelusuri program langkah demi langkah, dan hanya menampilkan blok untuk langkah itu beserta fungsinya. Proyek gratis lain yang layak dilihat dalam bentuk blok: Lampu Polisi LED, yang berjalan dengan variabel delayTime dan dua perulangan hitung; Lampu Lalu Lintas, yang melangkah melalui empat keadaan di dalam ulangi selamanya; Mengukur Intensitas Cahaya dengan LDR, yang menyimpan hasil bacaannya di variabel dan mencetaknya ke port serial; dan Nyala/Mati LED dengan Tombol (On/Off), yang mengingat status LED di sebuah variabel. Setiap contoh Arduino di Panduan kode juga ditampilkan dalam bentuk blok, dan Soal harian membantumu memperkuat apa yang sudah kamu pelajari dengan 5 soal sehari dari A1 sampai C2. Daftar lengkap proyek blok ada di halaman coding blok. Blok tidak di-upload langsung ke board; board selalu menerima kode asli proyeknya, jadi kamu menyalin program yang sudah kamu pahami lewat blok ke Arduino IDE lalu mengirimnya ke board-mu.

Sekarang setelah kamu memahami perulangan dan variabel, langkah berikutnya adalah mengambil angka-angka itu dari dunia nyata: di bagian 5 seri ini kita membahas membaca sensor dengan blok, port serial, dan beralih dari coding blok ke MicroPython di Pico. Sambil menunggu, kamu bisa melihat LED berjalan, Knight Rider, dan versi kecepatan yang bisa diatur dari keduanya di aplikasi BlueGrays lengkap dengan skema rangkaian dan kodenya, beralih ke blok dengan Tampilkan sebagai blok dan ke penjelasan langkah demi langkah dengan Pahami blok, lalu menelusuri sendiri baris kode mana yang cocok dengan setiap perulangan hitung.

Pertanyaan umum

Apa itu perulangan di coding blok?

Perulangan adalah blok yang menjalankan blok-blok di dalamnya berulang-ulang. Di BlueGrays ada dua jenis yang menonjol: “ulangi selamanya” adalah perulangan utama program dan tidak pernah berhenti selama board mendapat daya, sedangkan “hitung dengan i” berulang sebanyak jumlah tertentu. Di kode Arduino, padanannya adalah fungsi loop() dan perulangan for.

Bagaimana cara menulis perulangan for di Arduino?

Tanda kurung perulangan for berisi tiga bagian yang dipisahkan titik koma: int i = 0 memulai penghitung, syarat seperti “terus selama i lebih kecil dari 6” menentukan berapa lama perulangan berjalan, dan i++ menambahkan satu ke penghitung setelah setiap putaran. Perulangan ini menghitung i dari 0 sampai 5 dan menjalankan kode di dalam kurung kurawal sebanyak 6 kali. Dalam blok, “hitung dengan i dari 0 sampai 5 per 1” melakukan tugas yang sama.

Berapa kali blok hitung “dari 0 sampai 5” berjalan?

Enam kali. Nilai akhir blok hitung BlueGrays ikut dihitung, jadi i bergantian menjadi 0, 1, 2, 3, 4, dan 5. Di kode, blok ini muncul sebagai perulangan for yang berjalan selama i lebih kecil dari 6, dan mengunjungi setiap indeks array berisi enam elemen tepat satu kali.

Bagaimana cara membuat variabel di coding blok?

Kamu meletakkan blok “deklarasikan bilangan bulat (int) … = …” di dalam blok “variabel global (paling atas)”, lalu memberi variabel itu nama dan nilai awal. Ini membuat baris variabel global seperti int potValue = 0; di bagian paling atas kode. Nilainya diubah di kemudian hari dengan blok “atur … ke”.

Bisakah loop() di Arduino dihentikan?

loop() tidak pernah berhenti sendiri; begitu baris terakhirnya selesai, ia langsung mulai lagi. Untuk menghentikan board sepenuhnya, kamu harus memutus dayanya atau meng-upload program lain. Kalau kamu ingin sesuatu terjadi hanya sekali, taruh di setup(), yaitu blok “setup (jalan sekali)”, atau pakai variabel untuk mengecek apakah hal itu sudah pernah dilakukan.

Kenapa indeks array Arduino dimulai dari 0?

Di C dan C++, indeks menunjukkan berapa langkah jarak sebuah elemen dari awal array; elemen pertama berada tepat di awal, jadi indeksnya 0. Itulah sebabnya indeks array ledPins yang berisi enam elemen berjalan dari 0 sampai 5. Menulis ledPins[6] berarti melewati ujung array, dan C++ tidak akan memeriksanya untukmu.

Lihat semua proyek
LED Berjalan
#5Menengah

LED Berjalan

Lampu-lampu yang menyala satu demi satu, seolah sedang berlari. Arduino menyalakan enam LED satu per satu; masing-masing menyala sebentar lalu padam, sehingga cahayanya berjalan dari awal ke akhir lal

4.6(85)
207
Efek LED Knight Rider
#6Menengah

Efek LED Knight Rider

Lampu pemindai klasik: sebuah titik cahaya meluncur dari satu ujung enam LED ke ujung lainnya lalu kembali. Arduino menyalakan setiap LED selama sepersepuluh detik sebelum pindah, berbalik di setiap u

4.8(106)
202
LED Berjalan dengan Kecepatan yang Bisa Diatur
#7Menengah

LED Berjalan dengan Kecepatan yang Bisa Diatur

Enam LED menyala satu demi satu, sehingga cahayanya seolah berlari dari satu ujung ke ujung lainnya. Putar kenop potensiometer dan kecepatan larinya langsung berubah: ke satu arah cahayanya melesat, k

4.6(72)
146
Efek LED Knight Rider dengan Kecepatan yang Bisa Diatur
#8Menengah

Efek LED Knight Rider dengan Kecepatan yang Bisa Diatur

Cahaya berlari dari satu ujung enam LED ke ujung lainnya, berbalik, lalu berlari kembali. Putar kenop potensiometer dan kamu langsung mengubah kecepatan larinya: dengan kenop di satu ujung cahayanya h

4.5(60)
120
Lampu Polisi LED
#4Pemula

Lampu Polisi LED

Persis seperti lampu di mobil polisi: LED merah berkedip tiga kali dengan cepat, lalu LED biru berkedip tiga kali, dan polanya terus berulang tanpa henti. Yang kamu butuhkan hanya dua LED dan dua resi

4.7(103)
258
Lampu Lalu Lintas
#3Pemula

Lampu Lalu Lintas

Tiruan mini lampu lalu lintas yang kamu lihat di jalan setiap hari. Merah menyala dua detik, kuning menyala sebentar, hijau menyala dua detik, lalu kembali ke merah lewat kuning lagi, terus berulang.

4.8(131)
397
Mengukur Intensitas Cahaya dengan LDR
#11Pemula

Mengukur Intensitas Cahaya dengan LDR

Ingin melihat seberapa terang kamarmu dalam bentuk angka? LDR, komponen kecil yang bereaksi terhadap cahaya, mengukur cahaya di sekitarnya, dan Arduino menulis nilainya ke layar komputermu setiap sete

4.6(81)
139
Nyala/Mati LED dengan Tombol (On/Off)
#10Pemula

Nyala/Mati LED dengan Tombol (On/Off)

Tekan tombol sekali dan lampu menyala, tekan lagi dan lampu mati, persis seperti sakelar lampu di kamarmu. Arduino menyadari setiap tekanan dan membalik LED ke keadaan sebaliknya, sambil menunggu sebe

4.8(100)
167