Anda di halaman 1dari 4

Ni Made Ari Sarasuandewi

2315374082
B/Matrikulasi MST
Ujian MST
1. Buat dan selesaikan wiring dari komponen-komponen yang diberikan di bawah ini di
wokwi menggunakan breadboard:

Komponen dan wiring

2. Lengkapi missing coding dan temukan error dari coding di bawah ini agar rangkaian
di soal nomor 1 bisa berjalan dengan baik:
Coding yang sudah diperbaiki seperti dibawah ini:
#include <Servo.h>
int pinLED1 = 10;
int pinLED2 = 9;
int pinBuzz = 8;
int counter = 0;
int flip = 0;

Servo myServo;

void setup() {
pinMode(pinLED1, OUTPUT);
pinMode(pinLED2, OUTPUT);
pinMode(pinBuzz, OUTPUT);
Serial.begin(115200);
myServo.attach(11);
}
void loop() {
counter++;
if (counter <= 30) {
Serial.println(counter);
if (counter == 10 || counter == 20 || counter == 30) {
Serial.println("-----");
}
if (counter <= 10) {
flipServo(0);
flipLED12(HIGH, LOW, 1000, true);
flipServo(90);
} else if (counter <= 20) {
flipServo(90);
flipLED12(LOW, HIGH, 100, true);
flipServo(180);
} else {
flipServo(0);
flipLED12(HIGH, LOW, 1000, true);
flipServo(180);
flipLED12(LOW, HIGH, 500, true);
}
delay(1000); }
else {
flipLED12(LOW, LOW, 0, false);
}
}

void flipLED12(bool a, bool b, int c, bool hidup){


digitalWrite(pinLED1, a);
digitalWrite(pinLED2, b);
if (hidup) {
tone(pinBuzz, c);
} else {
noTone(pinBuzz);}
}

void flipServo(int a){


myServo.write(a);
delay(400);
}

Perbaikan pada coding dilakukan dengan cara:


• Mengganti kata <servo.h> menjadi <Servo.h> pada #include <servo.h> dimana Servo
merupakan library yang sebenarnya.
• Mengubah servo menjadi Servo dalam deklarasi objek myServo untuk mengikuti nama
library yang benar.
• Mengubah pinMode(pinBuzz, INPUT) menjadi pinMode(pinBuzz, OUTPUT) karena
Buzzer yang digunakan sebagai OUTPUT untuk mengendalikan buzzer.
• Memperbaiki kesalahan penulisan huruf kecil dan huruf besar dalam kode.
• Menambahkan () yang hilang dalam kondisi if.
• Mengubah Counter menjadi counter untuk mencocokkan nama variabel yang benar.
• Menambahkan tanda koma dalam beberapa pemanggilan fungsi serta titik koma yang
hilang dalam pernyataan.
3. Sesudah rangkaian nomor 2 bisa berjalan, tuliskan logika dan cara kerja rangkaian
disertai dengan screen shoot outputnya.

(Posisi 0 – 90)

(Posisi 90 – 180)
Logika:
✓ Variabel counter digunakan untuk menghitung loop dalam rentang 1 hingga 30 dan
setiap loop dijalankan, nilai counter bertambah 1.

✓ Jika counter adalah 10, 20, atau 30, maka akan dicetak "-----" ke Serial Monitor.

✓ Selama 10 iterasi pertama (counter <= 10), servo akan bergerak dari sudut 0 derajat
ke 90 derajat. LED1 akan menyala dan buzzer akan aktif dengan frekuensi 1000 Hz.

✓ Selama 10 iterasi berikutnya (counter > 10 dan counter <= 20), servo akan tetap pada
sudut 90 derajat. LED2 akan menyala dan buzzer akan aktif dengan frekuensi 100Hz.

Cara Kerja:
✓ Kode dimulai dengan menginisialisasi variabel dan pin yang diperlukan.
✓ Selanjutnya, dalam loop, variabel counter akan terus bertambah satu setiap kali loop
dijalankan.
✓ Pada setiap iterasi loop, kondisi if akan memeriksa nilai counter dan mengatur servo,
LED, dan buzzer sesuai dengan logika di atas.
✓ Hasil dari simulasi berupa pergerakan servo, perubahan LED, dan bunyi buzzer yang
tergantung pada nilai counter pada saat itu.
✓ Setelah loop selesai dan counter melebihi 30, LED dan buzzer dimatikan, dan
rangkaian menunggu selama 1 detik sebelum memulai loop kembali.

4. Link Wokwi : https://wokwi.com/projects/376088392718656513

Anda mungkin juga menyukai