wayground logo

Free Printable Worksheets

Font size

S
M
L
XL
Worksheets

Ekstraksi Soal Worksheet

Total questions: 40

Worksheet time: 22mins

Name
Class
Date
1.

Javier membuat alat pendeteksi asap berbasis Raspberry Pi. Alatnya bisa menampilkan status asap di layar monitor, menyimpan log ke file, dan mengirim notifikasi ke ponsel. Berdasarkan fungsi tersebut, jenis perangkat yang digunakan Javier termasuk ....

a)

Single Board Controller karena hanya menjalankan satu tugas kontrol

b)

Single Board Computer karena dapat menjalankan sistem operasi dan menyimpan data

c)

Microcontroller karena tidak memerlukan OS

d)

PLC karena digunakan untuk otomasi industri

e)

Embedded sensor karena mendeteksi asap

2.

Pada proyek penyiraman tanaman otomatis, sistem bekerja sebagai berikut: Sensor kelembapan tanah membaca kadar air. Arduino memproses hasil pembacaan. Pompa air aktif jika tanah kering. Komponen manakah yang berperan sebagai pengendali utama logika kerja sistem?

a)

Sensor kelembapan

b)

Arduino Uno

c)

Pompa air

d)

Relay

e)

Breadboard

3.

Fawwas mengamati dua perangkat: Perangkat A: memiliki port HDMI, mendukung Linux, dan dapat membuka browser. Perangkat B: tidak memiliki layar, hanya menjalankan satu program dalam loop. Analisis yang tepat dari 2 perangkat di atas adalah ....

a)

Perangkat A = Arduino, Perangkat B = Raspberry Pi

b)

Perangkat A = Raspberry Pi, Perangkat B = Arduino

c)

Perangkat A dan B keduanya Single Board Controller

d)

Perangkat A dan B keduanya Single Board Computer

e)

Perangkat A = Single Board Controller, Perangkat B = Single Board Computer

4.

Dalam proyek robot pengikut garis, sensor inframerah mendeteksi warna garis hitam dan putih. Arduino kemudian mengatur kecepatan motor kanan dan kiri agar robot tetap di jalur. Bagian manakah yang menjalankan fungsi decision making (penentu keputusan)?

a)

Sensor inframerah

b)

Motor DC

c)

Arduino

d)

Driver motor

e)

Catu daya

5.

Dalam proyek sekolah, Ahmad merancang sistem otomatis lampu ruang kelas menggunakan Arduino Uno. Ia menyambungkan LED ke pin digital 2 dan menulis program agar lampu menyala 2 detik dan mati 1 detik secara berulang. Ketika simulasi dijalankan, LED tidak menyala. Setelah diperiksa, kabel katoda LED tidak dihubungkan ke GND. Apa kesimpulan paling tepat dari kondisi tersebut?

a)

LED rusak karena tegangan terlalu rendah

b)

Arus tidak dapat mengalir karena rangkaian belum lengkap

c)

Resistor terlalu besar sehingga arus terhambat

d)

Program tidak berjalan karena kesalahan sintaks

e)

Delay terlalu cepat sehingga LED tidak terlihat menyala

6.

Dalam sebuah rangkaian Arduino, sebuah LED dipasang dengan resistor 220Ω. Jika resistor tersebut dilepas, LED langsung mati setelah 1 detik. Apa yang menyebabkan LED tersebut mati setelah 1 detik?

a)

Tegangan terlalu kecil untuk menyalakan LED

b)

Polaritas LED terbalik

c)

Nilai resistor tidak sesuai dengan LED

d)

LED tidak mendapatkan ground

e)

Arus terlalu besar menyebabkan LED terbakar

7.

Haqqi ingin menyalakan LED menggunakan push button. Namun LED menyala terus meskipun tombol belum ditekan. Apa yang perlu Haqqi lakukan untuk memperbaiki logika rangkaian tersebut?

a)

Menukar posisi pin input dan output

b)

Mengubah delay menjadi lebih pendek

c)

Menghapus perintah digitalWrite

d)

Menambahkan resistor pull-down pada jalur tombol

e)

Menggunakan pin analog A0 sebagai output

8.

Mengapa breadboard menjadi salah satu komponen pendukung yang penting dalam eksperimen dengan Arduino?

a)

Karena memungkinkan perakitan tanpa solder

b)

Karena memperkuat arus pada rangkaian

c)

Karena dapat menyimpan program sementara

d)

Karena menyediakan sumber daya tambahan

e)

Karena menggantikan fungsi resistor

9.

Arya menyusun sistem sederhana dengan Arduino, LED, dan resistor 1 kΩ. Namun LED tampak redup. Yang menyebabkan LED tampak redup adalah ....

a)

Resistor 1 kΩ terlalu besar sehingga arus yang mengalir ke LED sangat kecil

b)

Resistor tidak dipasang sehingga arus menjadi terlalu besar

c)

Polaritas LED terbalik sehingga LED tidak menyala sama sekali

d)

Tegangan suplai terlalu tinggi sehingga LED terlalu terang

e)

Program menggunakan delay panjang sehingga LED tampak redup

10.

Perhatikan potongan kode berikut: void setup() { pinMode(7, OUTPUT); } void loop() { digitalWrite(7, HIGH); delay(500); digitalWrite(7, LOW); delay(1000); } Jika program dijalankan selama 6 detik, berapa kali LED akan menyala dan padam sepenuhnya (1 siklus ON–OFF)?

a)

2 kali

b)

3 kali

c)

4 kali

d)

5 kali

e)

6 kali

11.

Perhatikan potongan program berikut: void loop() { for (int i = 0; i < 3; i++) { digitalWrite(9, HIGH); delay(300); digitalWrite(9, LOW); delay(300); } delay(2000); } Lama waktu total yang dibutuhkan untuk satu siklus penuh (satu kali dijalankan tanpa melakukan perulangan berikutnya) sesuai kode program di atas adalah ….

a)

1,8 detik

b)

2,6 detik

c)

2,9 detik

d)

3,8 detik

e)

4,8 detik

12.

Program berikut digunakan untuk menyalakan dua LED: void loop() { digitalWrite(5, HIGH); delay(500); digitalWrite(5, LOW); digitalWrite(6, HIGH); delay(500); digitalWrite(6, LOW); } Jika kode program dijalankan, maka pola nyala LED 5 dan LED 6 adalah ….

a)

Menyala bersamaan

b)

Menyala bergantian

c)

LED 6 tidak pernah menyala

d)

LED 5 berkedip dua kali lebih cepat

e)

Kedua LED padam terus

13.

Program berikut digunakan untuk menyalakan sebuah LED: void loop() { for (int i = 0; i < 4; i++) { digitalWrite(3, HIGH); delay(250); digitalWrite(3, LOW); delay(250); } delay(2000); } Jika durasi program diamati 10 detik, berapa kali LED tersebut menyala?

a)

4 kali

b)

6 kali

c)

8 kali

d)

10 kali

e)

12 kali

14.

Program berikut digunakan untuk menyalakan sebuah LED: int x = 0; void setup(){ pinMode(13, OUTPUT); } void loop() { x++; if (x % 2 == 0) { digitalWrite(13, HIGH); } else { digitalWrite(13, LOW); } delay(500); } Apa pola nyala LED yang dihasilkan jika kode program dijalankan?

a)

LED menyala terus

b)

LED padam terus

c)

LED berkedip setiap 1 detik

d)

LED berkedip setiap 0,5 detik

e)

LED berkedip dua kali lebih cepat di awal

15.

LED tampak menyala berkedip cepat ketika sensor mendeteksi cahaya terang. Apa yang harus dilakukan agar Latisha dapat memperlambat kedipan LED tanpa mengubah kondisi sensor?

a)

Mengubah nilai if (sensor > 700) menjadi lebih kecil

b)

Menambah nilai delay setelah digitalWrite(12, LOW)

c)

Menambahkan perintah delay(100) di awal loop

d)

Mengubah pin output ke pin lain

e)

Menghapus kondisi if

16.

Kode berikut digunakan untuk menyalakan LED dengan menggunakan tombol/pushbutton: const int ledPin = 13; const int tombol = 2; void setup() { pinMode(ledPin, OUTPUT); pinMode(tombol, INPUT_PULLUP); } void loop() { int status = digitalRead(tombol); if (status == HIGH) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } } Ketika program dijalankan, LED justru menyala ketika tombol tidak ditekan, dan mati ketika ditekan. Yang menyebabkan kondisi ini terjadi adalah….

a)

Fungsi digitalRead() salah digunakan

b)

Mode INPUT_PULLUP membuat logika tombol terbalik (aktif LOW)

c)

LED terpasang terbalik di breadboard

d)

Tidak ada delay pada kode program

e)

Tombol tidak terhubung ke GND

17.

Wendy menggunakan potensiometer pada pin A0 untuk mengatur kecerahan LED di pin 9, kemudian membuat kode program sebagai berikut: int sensor = A0; int led = 9; void setup() { pinMode(led, OUTPUT); } void loop() { int nilai = analogRead(sensor); analogWrite(led, nilai); delay(10); } Namun LED tidak merespons tingkat kecerahan dari LED tersebut, ketika dijalankan LED hanya menyala sangat terang. Yang menyebabkan kondisi ini terjadi adalah….

a)

Fungsi analogWrite() tidak mendukung input dari analogRead() secara langsung

b)

LED harus dihubungkan ke pin digital tanpa simbol ~

c)

Nilai dari analogRead() (0–1023) tidak diubah ke rentang analogWrite() (0–255)

d)

Nilai delay() seharusnya lebih besar dari 10

e)

Nilai variabel LED tidak tepat

18.

Fachri ingin membaca nilai dari potensiometer dan menampilkannya di Serial Monitor. Ia menulis kode sebagai berikut: void setup() { Serial.begin(9600); pinMode(A0, INPUT); } void loop() { int nilai = digitalRead(A0); Serial.println(nilai); delay(1000); } Namun ketika dijalankan, nilai yang muncul pada serial monitor hanya 0 atau 1, bukan rentang 0–1023. Kesalahan dalam kode program tersebut adalah….

a)

Fungsi yang digunakan salah; seharusnya analogRead(A0)

b)

Potensiometer rusak

c)

Tidak perlu pinMode(A0, INPUT)

d)

Baud rate Serial salah

e)

Harus menggunakan tipe data float

19.

Bu Vina meminta kelompok siswa untuk membuat simulasi lampu jalan otomatis menggunakan LDR (Light Dependent Resistor) di pin A0 dan LED pada pin digital 9. Tujuan sistem ini adalah agar LED menyala ketika gelap dan mati ketika terang. Pada kasus ini ambang batas nilai cahaya adalah 500. Semakin besar nilai cahaya dari ambang batas maka LED akan mati. Namun, ketika simulasi dijalankan, hasilnya justru terbalik: LED menyala saat terang dan mati ketika gelap. Berikut kode program yang dibuat oleh kelompok siswa: int sensor = A0; int led = 9; void setup() { pinMode(led, OUTPUT); Serial.begin(9600); } void loop() { int nilaiCahaya = analogRead(sensor); if (nilaiCahaya > 500) { digitalWrite(led, HIGH); } else { digitalWrite(led, LOW); } Serial.println(nilaiCahaya); delay(500); } Dari pernyataan-pernyataan di bawah ini, apa saja solusi yang paling tepat untuk memperbaiki sistem tersebut? (Jawaban dapat lebih dari satu jawaban)

a)

Mengubah logika menjadi if (nilaiCahaya < 500)

b)

Mengubah perintah program digitalWrite(led, HIGH) menjadi digitalWrite(led, LOW) dan digitalWrite(led, LOW) menjadi digitalWrite(led, HIGH)

c)

Menggunakan fungsi map() untuk mengubah sensitivitas cahaya

d)

Mengganti LED ke pin dengan simbol ~ agar mendukung PWM

e)

Mengganti LED ke pin analog A1

20.

Pasifica menulis program arduino sebagai berikut: int suhu = 27; void setup() { Serial.begin(9600); Serial.println(suhu); } Saat kode program dikompilasi, muncul error: "suhu was not declared in this scope". Padahal Pasifica sudah memastikan bahwa variabel sudah dideklarasikan. Langkah-langkah yang tepat untuk memperbaikinya adalah…. (Jawaban dapat lebih dari satu jawaban)

a)

Mengubah suhu menjadi Suhu agar sesuai dengan deklarasi

b)

Menambahkan #define suhu 27 di awal program

c)

Mengubah semua huruf besar–kecil agar konsisten

d)

Mengganti Serial.println(suhu) menjadi Serial.println(Suhu)

e)

Menambahkan String suhu = "27"; untuk menampilkan teks

21.

Kelompok Jody membuat pengatur kecepatan motor DC dengan potensiometer. Namun, saat kode program dikompilasi dan Jody memutar penuh wiper potensiometer, motor DC justru melambat. Berikut kode program yang dibuat oleh kelompok Jody: int sensor = A0; int motor = 9; void setup() { pinMode(motor, OUTPUT); } void loop() { int nilaiSensor = analogRead(sensor); int kecepatan = map(nilaiSensor, 0, 1023, 255, 0); analogWrite(motor, kecepatan); delay(100); } Dari pernyataan di bawah ini, manakah penyebab dan solusi yang benar dari kasus di atas? (Jawaban dapat lebih dari satu jawaban)

a)

Nilai di fungsi map() terbalik, seharusnya map(nilaiSensor, 0, 1023, 0, 255)

b)

Pin motor tidak mendukung PWM sehingga analogWrite() tidak bekerja

c)

Delay terlalu kecil sehingga kecepatan tidak stabil

d)

Perlu mengonversi nilaiSensor ke persen sebelum analogWrite()

22.

Yericho membuat proyek menggunakan sensor ultrasonik HC-SR04 untuk mengukur jarak dan menampilkan hasil di Serial Monitor. Ketika simulasi dijalankan, hasil pembacaan menampilkan “0 cm” walaupun benda jelas didekatkan ke sensor. Dari beberapa kode di bawah ini, manakah implementasi paling tepat untuk mengukur jarak dengan benar?

a)

digitalWrite(trigPin, HIGH); delay(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration * 0.034) / 2;

b)

digitalWrite(trigPin, LOW); delay(10); digitalWrite(trigPin, HIGH); duration = pulseIn(echoPin, HIGH); distance = (duration * 0.034) / 2;

c)

digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, LOW); distance = (duration * 0.034) / 2;

d)

digitalWrite(trigPin, LOW); delayMicroseconds(10); digitalWrite(trigPin, HIGH); duration = pulseIn(echoPin, HIGH); distance = (duration * 0.034) / 2;

e)

digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration * 0.034) / 2;

23.

Laboratorium robotika membuat pintu otomatis berbasis sensor ultrasonik HC-SR04 dan servo motor. Rangkaian: • Servo motor di pin 9 • Pin trig sensor di pin 7 • Pin echo sensor di pin 6 Sistem dirancang agar: pintu terbuka (servo = 90°) jika jarak kurang dari 15 cm, dan pintu tertutup (servo = 0°) jika jarak lebih dari 15 cm. Ketika proyek dijalankan, servo terus bergetar meskipun tidak ada objek bergerak di depan sensor. Pilih kode program yang paling sesuai dengan logika sistem yang diharapkan.

a)

long duration; int distance; void loop() { digitalWrite(7, LOW); delayMicroseconds(2); digitalWrite(7, HIGH); delayMicroseconds(10); digitalWrite(7, LOW); duration = pulseIn(6, HIGH); distance = duration * 0.034 / 2; if (distance < 15) { servo.write(90); delay(500); } else { servo.write(0); delay(500); } }

b)

long duration; int distance; void loop() { digitalWrite(7, LOW); delayMicroseconds(2); digitalWrite(7, HIGH); delayMicroseconds(10); digitalWrite(7, LOW); duration = pulseIn(6, HIGH); distance = duration * 0.034 / 2; if (distance <= 15) { servo.write(90); delay(200); } else if (distance > 15) { servo.write(0); delay(200); } }

c)

long duration; int distance; void loop() { digitalWrite(7, LOW); delayMicroseconds(5); digitalWrite(7, HIGH); delayMicroseconds(10); digitalWrite(7, LOW); duration = pulseIn(6, HIGH); distance = (duration * 0.0343) / 2; if (distance < 15) { servo.write(90); delay(300); } else if (distance > 15) { servo.write(0); delay(300); } }

d)

long duration; int distance; void loop() { digitalWrite(7, LOW); delayMicroseconds(2); digitalWrite(7, HIGH); delayMicroseconds(10); digitalWrite(7, LOW); duration = pulseIn(6, HIGH); distance = duration * 0.034 / 2; if (distance < 15) { servo.write(0); } else { servo.write(90); } delay(100); }

e)

long duration; int distance; void loop() { digitalWrite(7, LOW); delayMicroseconds(2); digitalWrite(7, HIGH); delayMicroseconds(10); digitalWrite(7, LOW); duration = pulseIn(6, HIGH); distance = (duration * 0.034) / 2; if (distance < 15) { servo.write(90); } else if (distance >= 14) { servo.write(0); } delay(50); }

24.

Dalam praktikum, Jihan ingin menampilkan teks berjalan (running text) di LCD 16x2 I2C. Teks seharusnya bergerak ke kiri secara terus-menerus. Ketika simulasi dijalankan, teks justru berhenti di satu posisi. Pilih potongan kode yang menghasilkan gerak ke kiri terus-menerus seperti yang diharapkan.

a)

b)

lcd.setCursor(0, 0); lcd.print("Selamat Datang di Kelas Arduino!"); lcd.scrollDisplayRight(); delay(300);

lcd.setCursor(0, 0); lcd.print("Selamat Datang di Kelas Arduino!"); lcd.scrollDisplayRight(); delay(300);

c)

d)

e)

25.

Laboratorium sekolah ingin memiliki sistem pengatur intensitas cahaya otomatis untuk menghemat energi listrik. Sistem ini dirancang menggunakan Arduino Uno, sensor cahaya LDR yang dihubungkan ke pin A0, dan lampu LED. Ketika ruangan mulai gelap, sistem mendeteksi penurunan intensitas cahaya melalui LDR dan Arduino mengatur tingkat kecerahan LED secara otomatis dengan menulis nilai analog ke pin ~9. Selain itu, terdapat tombol manual (push button) untuk menyalakan atau mematikan lampu secara manual tanpa menunggu sensor; push button dihubungkan ke pin digital 2, sedangkan LED indikator status tombol terhubung ke pin digital 13. Berdasarkan skenario tersebut, pilih pernyataan yang BENAR terkait fungsi pin dan cara kerja sistem (jawaban dapat lebih dari satu).

a)

LDR terhubung ke pin A0 dan dibaca sebagai nilai analog untuk mendeteksi intensitas cahaya.

b)

Kecerahan lampu LED diatur menggunakan PWM pada pin ~9 melalui analogWrite.

c)

Push button terhubung ke pin digital 2 untuk menyalakan atau mematikan lampu secara manual.

d)

LED indikator status terhubung ke pin digital 13.

e)

Arduino membaca LDR sebagai input digital HIGH/LOW sehingga tidak memerlukan pembacaan analog.

26.

Sebuah proyek siswa menggunakan Arduino Uno, push button, dan buzzer aktif. Push button dihubungkan ke pin digital 4, sedangkan buzzer aktif dihubungkan ke pin digital 8. Ketika tombol ditekan, buzzer berbunyi, dan ketika dilepas, buzzer berhenti. Manakah pernyataan yang BENAR berdasarkan sistem di atas? (Jawaban dapat lebih dari satu jawaban)

a)

Pin 8 merupakan pin analog karena menghasilkan suara dari buzzer.

b)

Pin 8 digunakan untuk menyalakan atau mematikan buzzer dengan digitalWrite(8, HIGH) dan digitalWrite(8, LOW).

c)

Pin 4 digunakan untuk membaca status tombol menggunakan digitalRead(4)

d)

Tombol push button menghasilkan sinyal analog yang dibaca oleh Arduino.

e)

Sistem ini hanya memerlukan logika HIGH dan LOW untuk bekerja dengan baik.

27.

Mikhail mencoba menyusun rangkaian LED dan tombol menggunakan breadboard. Ia menggunakan kabel jumper tipe male-to-male untuk menghubungkan pin digital Arduino ke breadboard. Ketika dijalankan, LED tidak menyala meski tombol ditekan. Setelah diperiksa, ternyata baris breadboard tidak tersambung dengan benar. Di bawah ini pernyataan yang tepat mengenai breadboard dan kabel jumper adalah ….  (Jawaban dapat lebih dari satu jawaban)

a)

Breadboard memungkinkan perakitan sirkuit tanpa menyolder.

b)

Baris vertikal breadboard selalu terhubung dari atas ke bawah.

c)

Kabel jumper male-to-male digunakan untuk menghubungkan antar pin di breadboard.

d)

Kesalahan baris sambungan breadboard dapat membuat rangkaian tidak berfungsi.

e)

Breadboard tidak dapat digunakan berulang kali setelah komponen dilepas.

28.

Vatar membuat sistem pembacaan nilai potensiometer secara real-time di LCD. Vatar berharap angka di LCD berubah sesuai posisi potensiometer, namun ketika simulasi dijalankan, nilai di layar tidak berubah sama sekali meskipun knob diputar. Kode program di bawah ini yang paling tepat agar nilai potensiometer tampil di LCD sesuai posisi potensiometer adalah ….

a)

b)

c)

d)

e)

29.

Sebuah program Arduino menampilkan nilai sensor seperti berikut:

 

Serial.print("Suhu: ");

Serial.println(suhu);

Serial.println("Data selesai");

 

Hasil di Serial Monitor terlihat rapi dengan nilai suhu di satu baris dan pesan “Data selesai” di bawahnya. Manakah penjelasan yang tepat terkait fungsi di atas? (Jawaban dapat lebih dari satu jawaban)

a)

Serial.print() menampilkan teks tanpa berpindah baris.

b)

Serial.println() menambahkan baris baru setelah data dicetak.

c)

Semua fungsi Serial.print() otomatis memindahkan kursor ke baris berikutnya.

d)

Jika hanya menggunakan Serial.print(), hasil cetakan akan muncul di baris yang sama.

e)

Kombinasi print() dan println() berguna untuk menata tampilan data di Serial Monitor.

30.

Denny membuat program untuk membaca sensor jarak ultrasonic. Ketika program dijalankan, nilai yang ditampilkan di LCD tidak sesuai dengan kenyataan. Guru menyarankan agar Denny mengirimkan nilai jarak ke Serial Monitor untuk memeriksa kesalahan program. Berdasarkan kasus tersebut, manakah fungsi Serial Monitor yang digunakan? (Jawaban dapat lebih dari satu jawaban)

a)

Sebagai media untuk mengirimkan data dari komputer ke Arduino.

b)

Sebagai sarana penyimpanan data hasil pengukuran sensor.

c)

Sebagai jendela komunikasi dua arah antara komputer dan Arduino.

d)

Sebagai alat debugging untuk melacak nilai variabel dan alur program.

e)

Sebagai tampilan visual dari input digital pin.

31.

Erviana menulis program berikut di Arduino IDE:

void setup() {

  Serial.begin(9600);

  Serial.println("Selamat datang!");

}

void loop() {

  Serial.println("Program berjalan...");

  delay(2000);

}

Setelah diunggah ke papan Arduino, Serial Monitor menampilkan teks yang terus berulang setiap 2 detik. Manakah pernyataan yang benar terkait dengan kode di atas?  (Jawaban dapat lebih dari satu jawaban)

a)

Pesan “Selamat datang!” akan terus berulang setiap 2 detik.

b)

Fungsi loop() dijalankan terus menerus selama Arduino aktif.

c)

Serial.begin(9600); berfungsi untuk menampilkan teks pada layar LCD.

d)

delay(2000); menunda eksekusi selama 2 detik sebelum mengulang loop.

e)

Fungsi setup() hanya dijalankan sekali saat Arduino mulai menyala.

32.

Bagas memodifikasi kode program Arduino dengan menambahkan komunikasi serial pada kedua fungsi sebagai berikut :

 

void setup() {

  Serial.begin(9600);

  Serial.println("Inisialisasi selesai!");

}

void loop() {

  Serial.println("Sistem aktif...");

  delay(500);

}

 

Setelah dijalankan, teks “Inisialisasi selesai!” hanya muncul sekali, sedangkan “Sistem aktif...” terus berulang setiap 0,5 detik.

 

Manakah kesimpulan yang benar dari kode program di atas? (Jawaban dapat lebih dari satu jawaban)

a)

Serial.begin(9600); wajib ditulis di dalam setup() agar komunikasi dimulai satu kali saja.

b)

Serial.println() dapat digunakan di kedua fungsi sesuai kebutuhan tampilan.

c)

Fungsi loop() akan terus berjalan hingga Arduino dimatikan.

d)

Jika Serial.begin(9600); ditulis di dalam loop(), komunikasi akan terputus setiap kali diulang.

e)

Kedua fungsi ini memiliki peran yang sama dalam hal frekuensi eksekusi.

33.

Di ruang praktik, kelompok Zidane sedang mencoba menampilkan teks “Halo Dunia!” pada LCD 16x2 I2C. Mereka telah menulis program berikut dan memastikan semua kabel terpasang dengan benar. Kode program yang mereka buat sebagai berikut :

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {

  lcd.begin(16, 2);

  lcd.print("Halo Dunia!");

}

 

void loop() { }

Setelah dijalankan, layar LCD tetap kosong tanpa tulisan apapun. Zidane yakin bahwa alamat I2C yang digunakan sudah benar (0x27), tetapi tetap tidak ada tampilan. Berdasarkan situasi tersebut, penyebab kesalahan yang paling mungkin terjadi adalah ….  (Jawaban dapat lebih dari satu jawaban)

a)

Zidane lupa menyalakan lampu latar LCD dengan perintah lcd.backlight();

b)

Perintah inisialisasi LCD menggunakan fungsi yang salah, seharusnya lcd.init(); bukan lcd.begin(16, 2);

c)

Alamat I2C 0x27 belum tentu cocok untuk semua modul LCD

d)

LCD tidak akan bekerja tanpa delay di awal setup

e)

Perintah lcd.print() tidak bisa digunakan tanpa fungsi loop()

34.

Siswa bernama Adit mencoba menggunakan buzzer untuk membuat alarm sederhana. Ia menulis kode berikut:

 

void setup() {

  pinMode(9, OUTPUT);

}

void loop() {

  digitalWrite(9, HIGH);

  delay(1000);

  digitalWrite(9, LOW);

  delay(1000);

}

 

Ketika dijalankan, buzzer berbunyi “beep-beep” secara teratur tanpa nada musik. Dari situasi ini, buzzer yang digunakan Adit adalah …

a)

Buzzer pasif karena memerlukan sinyal frekuensi tertentu untuk berbunyi

b)

Buzzer aktif karena dapat berbunyi langsung dengan sinyal HIGH/LOW

c)

Buzzer pasif karena menghasilkan suara berdasarkan nilai analog

d)

Buzzer aktif karena membutuhkan fungsi tone() untuk menghasilkan bunyi

e)

Buzzer pasif karena dapat berbunyi langsung dengan sinyal HIGH/LOW

35.

Gina menggunakan dua sensor berbeda:

·         Sensor suhu LM35 yang menghasilkan tegangan berubah-ubah sesuai suhu.

·         Sensor gerak PIR yang hanya memberikan sinyal HIGH atau LOW.

Ketika menghubungkan keduanya ke Arduino, Gina bingung menentukan cara membaca data sensor tersebut. Manakah pernyataan yang benar mengenai kedua sensor itu?

a)

PIR termasuk sensor digital karena menghasilkan angka 0 atau 1

b)

PIR sensor menghasilkan sinyal analog

c)

LM35 dibaca menggunakan analogRead(), sedangkan PIR dibaca menggunakan digitalRead()

d)

Keduanya hanya bisa dibaca dengan digitalRead()

e)

LM35 dibaca menggunakan digitalRead(), sedangkan PIR dibaca menggunakan analogRead()

36.

Sebuah proyek menggunakan potensiometer, LED, dan buzzer pasif. Ketika potensiometer diputar, LED berubah terang–redup dan buzzer menghasilkan nada yang berubah tinggi–rendah. Dari hasil tersebut, kesimpulan yang benar adalah ….

a)

LED dan buzzer menerima sinyal digital dari Arduino

b)

LED dikontrol dengan sinyal digital, buzzer dikontrol dengan sinyal analog

c)

LED dan buzzer dikontrol dengan sinyal analog yang diubah dari PWM

d)

LED hanya bisa menyala penuh atau mati

e)

Buzzer pasif hanya bisa menyala tanpa nada

37.

Kelompok Irfian ingin membuat 5 LED menyala berurutan dari kiri ke kanan. Mereka menulis program berikut:

 

int led[] = {2, 3, 4, 5, 6};

void setup() {

  for (int i = 1; i <= 5; i++) {

    pinMode(led[i], OUTPUT);

  }

}

void loop() {

  for (int i = 1; i <= 5; i++) {

    digitalWrite(led[i], HIGH);

    delay(300);

    digitalWrite(led[i], LOW);

  }

}

 

Ketika proyek dijalankan, LED pertama (pin 2) tidak menyala sama sekali. Dari kode di atas, penyebab LED pertama tidak menyala adalah ….

a)

Karena tidak ada perintah digitalWrite(led[1], HIGH)

b)

Karena delay terlalu cepat untuk LED pertama

c)

Karena pinMode() harus dipanggil di dalam loop

d)

Karena nilai awal variabel i pada perulangan tidak dimulai dari 0

e)

Karena array LED tidak diinisialisasi dengan benar.

38.

Tim Velma ingin membuat pola LED yang menyala maju dan mundur seperti efek “lari bolak-balik”. LED diposisikan sesuai urutan pin digital pada arduino. Mereka menulis kode program sebagai berikut :

 

int led[] = {2, 3, 4, 5, 6};

void setup() {

  for (int i = 0; i < 5; i++) pinMode(led[i], OUTPUT);

}

void loop() {

  for (int i = 0; i < 5; i++) {

    digitalWrite(led[i], HIGH);

    delay(200);

    digitalWrite(led[i], LOW);

  }

  for (int i = 0; i < 5; i++) {

    digitalWrite(led[i], HIGH);

    delay(200);

    digitalWrite(led[i], LOW);

  }

}

 

Setelah dijalankan, LED bergerak dari kiri ke kanan, tetapi tidak kembali dari kanan ke kiri. Kesalahan logika pada kode di atas adalah ….

a)

Perulangan pertama harus dimulai dari indeks terakhir

b)

Perintah delay terlalu lama.

c)

Array LED seharusnya menggunakan indeks mulai dari 1.

d)

Loop kedua seharusnya menggunakan <= 5.

e)

Perulangan kedua harus dimulai dari indeks terakhir menggunakan i--

39.

Rama menggunakan servo motor yang dikontrol dari potensiometer. Ia sudah menulis kode berikut:

 

#include <Servo.h>

Servo motor;

void setup() {

  motor.attach(9);

}

void loop() {

  int sudut = analogRead(A0);

  motor.write(sudut);

  delay(15);

}

 

Namun servo tidak bergerak sebagaimana mestinya. Setelah dicek, ternyata servo hanya bergetar pelan. Kesalahan utama dalam kode program di atas adalah ….

a)

Fungsi motor.write() hanya bisa digunakan jika servo sudah diberi daya eksternal

b)

Pin 9 tidak bisa digunakan untuk servo

c)

Nilai dari analogRead() harus dikonversi dulu ke sudut

d)

Fungsi attach() harus diletakkan di loop()

e)

Library Servo tidak mendukung fungsi analogRead()

40.

Kelompok Shafira membuat program untuk menampilkan tulisan pada LCD 16x2 I2C. Berikut potongan kode yang mereka buat :

 

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {

  lcd.begin(16, 2);

  lcd.print("Halo Dunia");

}

void loop() { }

 

Saat dijalankan, LCD hanya menyala tanpa tulisan. Fungsi yang harus ditambahkan agar LCD berfungsi dengan benar adalah ….

a)

lcd.on(); lcd.display();

b)

lcd.init(); lcd.backlight();

c)

lcd.begin(); lcd.light();

d)

lcd.start(); lcd.show();

e)

lcd.enable();

lcd.power();