MODUL AJAR & LEMBAR KERJA SISWA
Melatih Logika Pemrograman dengan Arduino & LED (Output)
Mata Pelajaran
Latihan Soal LKS
Jenjang: SMK
Disusun oleh: Arianto — SMK SMTI Padang, Sumatera Barat
A. Tujuan Pembelajaran
Setelah mempelajari materi ini, siswa diharapkan mampu:
1. Memahami struktur dasar program Arduino (setup() dan loop())
2. Memahami fungsi variabel, tipe data int, dan array
3. Menggunakan fungsi pinMode(), digitalWrite(), dan delay() untuk mengendalikan LED
4. Membuat program LED dengan cara satu-satu maupun menggunakan array
5. Menerapkan logika perulangan (for) untuk mengendalikan banyak LED secara efisien
B. Alat dan Bahan
Alat/Bahan Jumlah
Arduino Uno 1 buah
LED 6 buah
Resistor 220Ω 6 buah
Kabel jumper secukupnya
Breadboard 1 buah
Kabel USB 1 buah
C. Kamus Istilah
Istilah Penjelasan
Variabel Wadah untuk menyimpan nilai, punya nama sendiri, ibarat kotak berlabel
int Tipe data untuk bilangan bulat (integer), dipakai menyimpan nomor pin
Array Kumpulan beberapa nilai sejenis dalam satu variabel, diakses lewat indeks
Indeks Nomor urut isi array, selalu dimulai dari 0, bukan 1
Fungsi Kumpulan perintah yang dibungkus dengan satu nama, tinggal dipanggil
Parameter Data yang dimasukkan ke dalam fungsi, ditulis di dalam ()
void Menandakan fungsi tidak mengembalikan nilai
{ } Tanda pembuka dan penutup sekumpulan perintah (blok kode)
; Tanda akhir satu baris perintah, wajib ditulis
D. Struktur Dasar Program Arduino
void setup() {
// dijalankan 1 kali saat Arduino dinyalakan/direset
}
void loop() {
// dijalankan berulang-ulang selama Arduino menyala
}
Bagian Fungsi
setup() Tempat pengaturan awal, contoh: menentukan pin sebagai output
loop() Tempat program utama yang berjalan terus-menerus
E. Fungsi-Fungsi Dasar untuk Output LED
1. pinMode(pin, mode)
pinMode(ledPin, OUTPUT);
Menentukan pin sebagai output (mengeluarkan sinyal). Ditulis di dalam setup().
2. digitalWrite(pin, value)
digitalWrite(ledPin, HIGH); // LED menyala (5V)
digitalWrite(ledPin, LOW); // LED mati (0V)
Ditulis di dalam loop().
3. delay(ms)
delay(1000); // tunda 1000 ms = 1 detik
F. Cara 1: Satu-Satu (Tanpa Array)
int led1 = 2;
int led2 = 3;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
digitalWrite(led1, HIGH);
delay(300);
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
delay(300);
digitalWrite(led2, LOW);
}
Cocok untuk LED sedikit. Setiap LED punya variabel sendiri dan diatur satu per satu. Semakin banyak LED,
semakin panjang dan repetitif kode yang ditulis.
G. Cara 2: Menggunakan Array
int led[] = {2, 3, 4, 5};
int jumlahLED = 4;
void setup() {
for (int i = 0; i < jumlahLED; i++) {
pinMode(led[i], OUTPUT);
}
}
void loop() {
for (int i = 0; i < jumlahLED; i++) {
digitalWrite(led[i], HIGH);
delay(300);
digitalWrite(led[i], LOW);
}
}
Keterangan for (int i = 0; i < jumlahLED; i++):
• int i = 0 → mulai hitung dari 0
• i < jumlahLED → syarat perulangan tetap berjalan
• i++ → tambah 1 setiap putaran (i++ = i = i+1)
Array membuat kode tetap pendek walau jumlah LED bertambah banyak — cukup tambah angka di dalam {
}, tanpa menulis ulang pinMode()/digitalWrite() satu per satu.
H. Perbandingan Dua Cara
Aspek Satu-Satu Array
Cocok untuk 1–3 LED 4 LED ke atas
Panjang kode Bertambah sesuai jumlah LED Tetap pendek
Mengubah jumlah LED Ubah banyak baris Cukup ubah isi { }
Tingkat kesulitan konsep Mudah Perlu paham for dan indeks
I. Rangkuman Fungsi
Fungsi/Sintaks Kegunaan Lokasi Penulisan
int nama = nilai; Membuat variabel angka Di luar setup()/loop()
int nama[] = {...}; Membuat array Di luar setup()/loop()
pinMode(pin, OUTPUT); Menetapkan pin sebagai output Di dalam setup()
Fungsi/Sintaks Kegunaan Lokasi Penulisan
digitalWrite(pin, HIGH/LOW); Menyalakan/mematikan LED Di dalam loop()
delay(ms); Menunda program Di dalam loop()
for (...) { } Mengulang perintah beberapa kali Di dalam setup()/loop()
J. Soal Latihan (Termudah → Rumit)
Soal 1 (Mudah) — LED Berkedip Tunggal
Buatlah program agar 1 LED menyala selama 500 ms, kemudian mati selama 500 ms, dan berulang terus-
menerus.
Fokus penilaian: pinMode(), digitalWrite(), delay().
Soal 2 (Mudah) — Dua LED Bergantian (Tanpa Array)
Buatlah program dengan 2 LED yang menyala bergantian (saat LED 1 menyala, LED 2 mati, dan sebaliknya),
masing-masing selama 300 ms.
Fokus penilaian: logika bergantian antar 2 pin output, ketepatan urutan HIGH/LOW.
Soal 3 (Mudah) — Enam LED Menyala Berurutan (Tanpa Array)
Gunakan 6 LED yang dihubungkan ke pin 2, 3, 4, 5, 6, dan 7. Buatlah program agar LED menyala satu per
satu secara berurutan dari kiri ke kanan (seperti lampu berjalan), masing-masing menyala 200 ms sebelum
berpindah ke LED berikutnya.
Ketentuan pengerjaan:
• Setiap LED dideklarasikan dengan variabel int sendiri-sendiri (bukan array), contoh: int led1 = 2; int
led2 = 3; dst.
• Setiap pin diatur pinMode() satu per satu di dalam setup().
• Setiap LED dinyalakan/dimatikan dengan digitalWrite() satu per satu secara berurutan di dalam loop().
Kerangka program yang harus dilengkapi siswa:
int led1 = ____;
int led2 = ____;
int led3 = ____;
int led4 = ____;
int led5 = ____;
int led6 = ____;
void setup() {
pinMode(____, ____);
pinMode(____, ____);
pinMode(____, ____);
pinMode(____, ____);
pinMode(____, ____);
pinMode(____, ____);
}
void loop() {
digitalWrite(____, ____);
delay(____);
digitalWrite(____, ____);
digitalWrite(____, ____);
delay(____);
digitalWrite(____, ____);
// ...lanjutkan pola yang sama sampai led6
}
Soal ini tetap tergolong mudah karena logikanya identik dengan Soal 1 dan 2 (hanya pinMode, digitalWrite,
delay) — tidak ada konsep baru. Tujuannya membuat siswa merasakan sendiri bahwa cara satu-satu jadi
panjang dan repetitif ketika LED-nya banyak, sebagai jembatan alami sebelum masuk ke Soal 4 yang
memperkenalkan array sebagai solusinya.
Fokus penilaian: ketelitian mengisi pin dan pasangan HIGH/LOW yang berurutan, konsistensi pola tanpa
tertukar urutan LED.
Soal 4 (Sedang–Rumit) — Lampu Berjalan Bolak-Balik (Array)
Gunakan 6 LED yang sama seperti Soal 3, namun sekarang wajib menggunakan array. Buatlah program agar
LED menyala berurutan dari kiri ke kanan, lalu setelah sampai ujung kanan, LED kembali menyala berurutan
dari kanan ke kiri — begitu terus berulang.
Ketentuan pengerjaan:
int led[] = {____________};
int jumlahLED = ____;
• Gunakan for dengan i++ (naik) untuk arah kiri ke kanan
• Gunakan for dengan i-- (turun) untuk arah kanan ke kiri
Fokus penilaian: transisi dari cara satu-satu ke array, kemampuan memodifikasi arah perulangan (i++ vs i--),
pemahaman indeks array dari awal maupun akhir.
Soal 5 (Rumit) — Pola Kedap-Kedip Bertingkat (Array)
Gunakan 6 LED dalam array. Buatlah program dengan pola sebagai berikut:
6. Semua LED menyala bersamaan selama 1 detik, lalu mati bersamaan.
7. Dilanjutkan LED menyala satu per satu secara berurutan, masing-masing 150 ms.
8. Setelah semua LED sempat menyala satu per satu, seluruh proses (langkah 1 dan 2) diulang dari awal.