Tugas Digital Output dengan Pola Bunyi & Teknik Multiplexing — Tugas Praktikum IoT #5
Penyelesaian Tugas
Tugas Digital Output dengan Pola Bunyi & Teknik Multiplexing — Tugas Praktikum IoT #5

Penyelesaian Tugas
Tugas 1 — Buzzer
Pada tugas ini, kita diberik intruksi tugas seperti berikut.

Kita mulai dengan melakukan penyusunan komponen (masih sama seperti wiring pada praktikum buzzer sebelumnya) yang diperlukan terlebih dahulu.

Setelah melakukan wiring untuk setiap komponen, kita akan membuat kode program yang sesuai dengan intruksi tugas.
const int buzzerPin = 24;
void setup() {
pinMode(buzzerPin, OUTPUT);
digitalWrite(buzzerPin, LOW); // pastikan awalnya OFF (buzzer tidak bunyi)
}
void loop() {
// mengulang pola 5 kali
for (int i = 0; i < 5; i++) {
// 2 bunyi pendek
for (int j = 0; j < 2; j++) {
digitalWrite(buzzerPin, HIGH); // buzzer ON
delay(100); // bunyi selama 100 ms
digitalWrite(buzzerPin, LOW); // buzzer OFF
delay(100); // jeda antar bunyi 100 ms
}
delay(300); // jeda antar pola (agar pola terdengar terpisah)
}
// buzzer mati setelah rangkaian 5 pola
digitalWrite(buzzerPin, LOW);
delay(2500); // jeda sebelum mengulang seluruh pola (2.5 detik)
}

Pada program diatas mengatur buzzer sebagai digital output yang diberikan dua perulangan, pada perulangan pertama dilakukan 2 bunyi pendek (karna kami merupakan kelompok 2) dengan durasi bunyi 200 ms & jeda 200 ms. Dan pada perulangan kedua dilakukan 5 kali bunyi dari 2 bunyi pendek tadi, dengan durasi jeda 300 ms. Serta diakhiri dengan bunyi panjang dengan durasi 2,5 detik.
Untuk hasil dari bunyi buzzer yang telah di programkan seperti diatas, dapat dilihat dari link berikut : **Hasil Tugas Buzzer**
Tugas 2 — Seven Segment Display
Pada tugas ini, kita diberikan intruksi tugas seperti berikut.

Disini saya memiliki NPM digit terakhir adalah 008.
Kita akan melakukan wiring yang sama ketika praktikum seven segment digital sebelumnya, dengan hasil berikut.

Setelah melakukan wiring untuk setiap komponen, kita akan membuat kode program yang sesuai dengan intruksi tugas. Pada program ini, saya akan melakukan metode multiplexing untuk ketiga angka 008 agar dapat terlihat menyala secara bersamaan.
// Menampilkan angka 0 1 2 3 4 5 di 6 digit 7-seg (multiplexing)
// Sesuaikan pin sesuai modul / board-mu
const int segPins[8] = {2, 3, 4, 5, 6, 7, 8, 9}; // a, b, c, d, e, f, g, dp
const int digitPins[6] = {10, 11, 12, 13, A0, A1}; // digit0..digit5 (sesuaikan)
// Asumsi hardware: common anode
// Pada common anode, untuk menyalakan sebuah segment
// buat pin segment = LOW, matikan = HIGH
// Pola angka 0..9 pada urutan segPins {a,b,c,d,e,f,g,dp}
// 1 = segment ON (makanya nanti kita keluarkan LOW karena common anode)
byte numbers[10][8] = {
{1,1,1,1,1,1,0,0}, // 0
{0,1,1,0,0,0,0,0}, // 1
{1,1,0,1,1,0,1,0}, // 2
{1,1,1,1,0,0,1,0}, // 3
{0,1,1,0,0,1,1,0}, // 4
{1,0,1,1,0,1,1,0}, // 5
{1,0,1,1,1,1,1,0}, // 6
{1,1,1,0,0,0,0,0}, // 7
{1,1,1,1,1,1,1,0}, // 8
{1,1,1,1,0,1,1,0} // 9
};
// Digit yang ingin ditampilkan (isi index angka untuk tiap digit)
int displayDigits[6] = {0, 0, 8};
void setup() {
// inisialisasi pin segmen sebagai OUTPUT
for (int i = 0; i < 8; i++) {
pinMode(segPins[i], OUTPUT);
}
// inisialisasi pin digit sebagai OUTPUT
for (int i = 0; i < 6; i++) {
pinMode(digitPins[i], OUTPUT);
}
// Pastikan semua segmen OFF dan semua digit OFF di awal
for (int i = 0; i < 8; i++) digitalWrite(segPins[i], HIGH); // OFF (common anode => HIGH)
for (int i = 0; i < 6; i++) digitalWrite(digitPins[i], HIGH); // matikan semua digit (HIGH = off)
}
// Menampilkan suatu nilai (0..9) pada digit tertentu (0..5)
void showDigit(int value, int digit) {
// Matikan semua digit dulu (prevent ghosting)
for (int i = 0; i < 6; i++) digitalWrite(digitPins[i], HIGH);
// Tuliskan pola segment untuk angka value
for (int s = 0; s < 8; s++) {
if (numbers[value][s] == 1) {
digitalWrite(segPins[s], LOW); // ON (karena common anode)
} else {
digitalWrite(segPins[s], HIGH); // OFF
}
}
// Aktifkan digit yang dipilih
digitalWrite(digitPins[digit], LOW); // nyalakan digit (common anode => LOW)
delay(5); // multiplex delay singkat (sekitar 3-5 ms)
digitalWrite(digitPins[digit], HIGH); // matikan kembali (opsional, mengurangi ghosting)
}
void loop() {
// Loop semua digit (0..5) untuk menampilkan angka di displayDigits[]
for (int d = 0; d < 6; d++) {
int val = displayDigits[d];
if (val < 0 || val > 9) val = 0; // safety
showDigit(val, d);
}
}

Program diatas akan menyimpan pola setiap angka (0–9) dalam array numbers, mengontrol setiap segmen lewat segPins dan memilih digit lewat digitPins, lalu secara bergantian menyalakan pola segmen untuk tiap digit sangat cepat sehingga mata mengira semua digit menyala sekaligus, isi array padadisplayDigits merupakan penentu angka yang akan tampil (008) pada masing-masing digit, dan kode ini digunakan untuk modul common anode (logika ON = LOW).
Dengan hasil sebagai berikut :

메타데이터
- post_id
- 72d3e67a0749
- slug
- tugas-digital-output-dengan-pola-bunyi-teknik-multiplexing-tugas-praktikum-iot-5-72d3e67a0749
- url
- https://medium.com/@gemari1012/tugas-digital-output-dengan-pola-bunyi-teknik-multiplexing-tugas-praktikum-iot-5-72d3e67a0749
- canonical_url
- https://medium.com/@gemari1012/tugas-digital-output-dengan-pola-bunyi-teknik-multiplexing-tugas-praktikum-iot-5-72d3e67a0749
- author_url
- https://medium.com/@gemari1012
- status
- ok
- fetched_at
- 2026-07-14 03:07:18