Langsung ke konten utama

Project Membuat Traffic Light With 7 Segment Display

Project Membuat Traffic Light With 7 Segment Display

1. Komponen yang Diperlukan:

  • Arduino Uno

  • Display 7-segment (common anode)

  • LED Merah, Kuning, Hijau

  • Kabel Jumper

  • Breadboard

2. Langkah Perakitan Hardware:

  1. Koneksi 7-segment ke Arduino:

    • Sambungkan pin segmen dari 7-segment ke pin digital di Arduino sesuai deklarasi berikut:

      • Pin A dari 7-segment ke pin digital 2 Arduino.

      • Pin B ke pin 3.

      • Pin C ke pin 4.

      • Pin D ke pin 5.

      • Pin E ke pin 6.

      • Pin F ke pin 7.

      • Pin G ke pin 8.

    • Hubungkan pin common anode dari 7-segment ke VCC (5V)

  2. Koneksi LED ke Arduino:

    • Lampu Merah: Sambungkan anoda LED merah ke pin 9 Arduino 

    • Lampu Kuning: Sambungkan anoda LED kuning ke pin 10 Arduino 

    • Lampu Hijau: Sambungkan anoda LED hijau ke pin 11 

    • GROUND: sambungkan Ground LED ke Ground Arduino

3. Cara Kerja Koding:

  • Setup Pin: Pada fungsi setup(), pin-pin untuk 7-segment dan LED diatur sebagai OUTPUT agar Arduino bisa memberikan sinyal tegangan ke masing-masing komponen.

  • Fungsi displayDigit(): Fungsi ini digunakan untuk menampilkan angka pada 7-segment dengan mengatur pin-pin segmen tertentu menjadi LOW (logika 0) untuk menyalakan segmen sesuai angka yang ingin ditampilkan.

  • Perulangan Countdown: Dalam fungsi loop(), terjadi tiga perulangan untuk masing-masing LED (merah, kuning, hijau). Setiap perulangan menampilkan angka dari 9 sampai 0 pada display 7-segment, dengan tambahan efek berkedip pada angka terakhir saat counter mendekati 0.

    • Lampu Merah: Akan menyala dan 7-segment melakukan countdown dari 9 sampai 0. Ketika angka ≤ 2, LED merah berkedip dengan interval 0.5 detik.

    • Lampu Kuning: Lampu kuning akan menyala dan countdown dari 3 hingga 0. Sama seperti lampu merah, saat angka ≤ 2, LED kuning akan berkedip.

    • Lampu Hijau: Sama seperti lampu merah, countdown dari 9 hingga 0 dengan LED hijau yang berkedip saat mendekati angka 0.

4. Pengujian dan Debugging:

  • Upload kode ke Arduino Uno menggunakan Arduino IDE.

  • Cek apakah 7-segment menampilkan angka dengan benar dan apakah LED berubah sesuai urutan dan interval yang ditentukan.

  • Jika ada segmen yang tidak menyala, cek koneksi antara segmen dengan pin Arduino.

5. Hasil rangkaian dan koding :



6. Penjelasan Program :

//Deklarasi pin 7 segment
int a = 2;  // Segmen A
int b = 3;  // Segmen B
int c = 4;  // Segmen C
int d = 5;  // Segmen D
int e = 6;  // Segmen E
int f = 7;  // Segmen F
int g = 8;  // Segmen G

#define lamm 9 //Definisi pin lampu merah
#define lamk 10 //Definisi pin lampu kuning
#define lamh 11 //Definisi pin lampu hijau

void setup() {
  Serial.begin(9600);
    // Atur pin 7 segment sebagai output
  pinMode(a, OUTPUT);
  pinMode(b, OUTPUT);
  pinMode(c, OUTPUT);
  pinMode(d, OUTPUT);
  pinMode(e, OUTPUT);
  pinMode(f, OUTPUT);
  pinMode(g, OUTPUT);
  // Atur pin led sebagai output
  pinMode(lamm, OUTPUT);
  pinMode(lamk, OUTPUT);
  pinMode(lamh, OUTPUT);
}

// Fungsi untuk menampilkan angka pada 7-segment display
void displayDigit(int num) {
  // Reset semua segmen sebelum menampilkan angka
  digitalWrite(a, HIGH);
  digitalWrite(b, HIGH);
  digitalWrite(c, HIGH);
  digitalWrite(d, HIGH);
  digitalWrite(e, HIGH);
  digitalWrite(f, HIGH);
  digitalWrite(g, HIGH);

  // Menghidupkan segmen sesuai dengan angka
  switch (num) {
    case 0:
      digitalWrite(a, LOW);
      digitalWrite(b, LOW);
      digitalWrite(c, LOW);
      digitalWrite(d, LOW);
      digitalWrite(e, LOW);
      digitalWrite(f, LOW);
      break;
    case 1:
      digitalWrite(b, LOW);
      digitalWrite(c, LOW);
      break;
    case 2:
      digitalWrite(a, LOW);
      digitalWrite(b, LOW);
      digitalWrite(d, LOW);
      digitalWrite(e, LOW);
      digitalWrite(g, LOW);
      break;
    case 3:
      digitalWrite(a, LOW);
      digitalWrite(b, LOW);
      digitalWrite(c, LOW);
      digitalWrite(d, LOW);
      digitalWrite(g, LOW);
      break;
    case 4:
      digitalWrite(b, LOW);
      digitalWrite(c, LOW);
      digitalWrite(f, LOW);
      digitalWrite(g, LOW);
      break;
    
    case 5:
      digitalWrite(a, LOW);
      digitalWrite(c, LOW);
      digitalWrite(d, LOW);
      digitalWrite(f, LOW);
      digitalWrite(g, LOW);
      break;
    case 6:
      digitalWrite(a, LOW);
      digitalWrite(c, LOW);
      digitalWrite(d, LOW);
      digitalWrite(e, LOW);
      digitalWrite(f, LOW);
      digitalWrite(g, LOW);
      break;
    case 7:
      digitalWrite(a, LOW);
      digitalWrite(b, LOW);
      digitalWrite(c, LOW);
      break;
    case 8:
      digitalWrite(a, LOW);
      digitalWrite(b, LOW);
      digitalWrite(c, LOW);
      digitalWrite(d, LOW);
      digitalWrite(e, LOW);
      digitalWrite(f, LOW);
      digitalWrite(g, LOW);
      break;
    case 9:
      digitalWrite(a, LOW);
      digitalWrite(b, LOW);
      digitalWrite(c, LOW);
      digitalWrite(d, LOW);
      digitalWrite(f, LOW);
      digitalWrite(g, LOW);
      break;
  }
}

void loop() {
    // perulangan conterdown 7segment dan led merah
    digitalWrite(lamm, HIGH);  // menyalakan lampu merah
    for (int i = 9; i >= 0; i--) {  // membuat conterdown angka 9 sampai 0
      displayDigit(i);    // menampilkan digit pada 7 segment
      if (i<=2){   // jika conterdown sama dengan kurang dari 2, maka
        digitalWrite(lamm, LOW);  // led merah mati
        delay(500);  // delai 0,5 dekit
        digitalWrite(lamm, HIGH);  // led merah hidup
        delay(500);  // delai 0,5 dekit
        } 
      else {delay(1000);}  // tidak maka tunggu 1 detik
      }
    digitalWrite(lamm, LOW); // setelah program perulanagn(for) selesai, matikan led merah

    // perulangan conterdown 7segment dan led kuning
    digitalWrite(lamk, HIGH);
    for (int i = 3; i >= 0; i--) {
    displayDigit(i);   
      if (i<=2){ 
        digitalWrite(lamk, LOW);
        delay(500);
        digitalWrite(lamk, HIGH);
        delay(500); 
        } 
      else {delay(1000);} 
      }
    digitalWrite(lamk, LOW);

    // perulangan conterdown 7segment dan led hijau
    digitalWrite(lamh, HIGH);
    for (int i = 9; i >= 0; i--) {
    displayDigit(i);  
      if (i<=2){ 
        digitalWrite(lamh, LOW);
        delay(500);
        digitalWrite(lamh, HIGH);
        delay(500); 
        } 
      else {delay(1000);}    
      }
    digitalWrite(lamh, LOW);

}

Postingan populer dari blog ini

Plants Into Pets Menggunakan ESP32 Berbasis IoT

Plants Into Pets Menggunakan ESP32 Berbasis IoT "Plants into Pet" adalah proyek inovatif yang mengintegrasikan teknologi IoT untuk meningkatkan interaksi antara pemilik dan tanaman hias. Menggunakan ESP32 sebagai pusat sistem, proyek ini dilengkapi empat sensor: sentuh, getaran, cahaya, dan kelembaban tanah. Sensor-sensor ini memungkinkan tanaman "berkomunikasi" melalui layar OLED yang menampilkan emoji responsif sesuai kondisi, seperti saat membutuhkan penyiraman atau pencahayaan. Data juga dapat dipantau secara real-time melalui aplikasi Blynk, memberikan umpan balik langsung. Proyek ini tidak hanya menawarkan solusi praktis untuk perawatan tanaman tetapi juga menciptakan hubungan emosional yang lebih mendalam, menjadikan pengalaman merawat tanaman lebih interaktif dan bermakna. Tujuan     Proyek ini bertujuan untuk: Meningkatkan Interaksi dengan Tanaman Hias Menghadirkan pengalaman interaktif dengan memungkinkan tanaman "berkomunikasi" melalui emoji re...

Project Bluetooth Light : Kontrol Relay Menggunakan Arduino dan Bluetooth HC-05

Project Bluetooth Light : Kontrol Relay Menggunakan Arduino dan Bluetooth HC-05 1. Judul Proyek: Kontrol Relay Menggunakan Arduino dan Bluetooth HC-05 2. Tujuan Proyek: Proyek ini bertujuan untuk mengontrol relay menggunakan komunikasi Bluetooth. Relay akan dikendalikan dengan perintah yang dikirim dari smartphone melalui modul Bluetooth HC-05 , di mana perintah '1' akan menyalakan relay, dan perintah '0' akan mematikan relay. 3. Alat dan Bahan: Arduino Uno atau sejenisnya. Modul Bluetooth HC-05 . Relay 5V . Smartphone dengan aplikasi Bluetooth (misalnya Bluetooth Terminal ). Kabel jumper . Power supply untuk relay (jika diperlukan). 4. Skema Koneksi: Modul Bluetooth HC-05: VCC ke 5V Arduino. GND ke GND Arduino. TX ke Pin 10 Arduino (karena menggunakan SoftwareSerial ).   RX ke Pin 11 Arduino (dengan pembagi tegangan untuk menurunkan tegangan ke 3.3V...

Project Arduino Uno: Alat Ukur Tandon Air dan Otomatis Pompa

Deskripsi Singkat: Proyek ini menggunakan Arduino Uno untuk mengukur volume air di tandon atau tangki dengan sensor ultrasonik. Informasi tentang volume air ditampilkan di layar LCD 20x4 . Proyek ini juga mengotomatiskan kendali pompa air menggunakan servo motor , yang aktif atau mati berdasarkan tingkat ketinggian air yang terdeteksi. Tujuan: Mengukur ketinggian air di tandon/tangki menggunakan sensor ultrasonik. Menampilkan volume air di LCD dalam bentuk angka dan grafik bar. Mengontrol pompa air secara otomatis menggunakan servo motor berdasarkan ketinggian air di tandon. Komponen yang Digunakan: Arduino Uno - Sebagai pusat pemrosesan data. Sensor Ultrasonik HC-SR04 - Mengukur ketinggian air dengan menghitung waktu pantulan gelombang suara. Pin Echo : Digunakan untuk menerima pantulan. Pin Trig : Digunakan untuk mengirim sinyal ultrasonik. LCD 20x4 dengan I2C Module - Menampilkan informasi volum...