Cara Membuat Counter Orang dengan Seven Segment Arduino — Simulasi Online

Counter orang menghitung setiap orang yang melintas di depan sensor PIR, lalu menampilkan jumlahnya di seven segment. Karena tampilannya satu digit, hitungan berjalan dari 0 sampai 9 lalu kembali ke 0.

Board: Arduino Uno3 komponen
Rangkaian simulasi Counter orang (PIR + 7-segment) dengan Arduino Uno di NOVIOT

Komponen yang dipakai

  • Arduino Uno
  • Breadboard (setengah)
  • Sensor gerak (PIR)
  • Display 7-segment

Cara kerja

  1. Sensor PIR di pin D2 mendeteksi orang yang lewat di depannya.
  2. Setiap deteksi baru menaikkan variabel penghitung sebanyak satu.
  3. Seven segment terhubung ke pin D3 sampai D10; kombinasi segmen a sampai g yang menyala membentuk angka hitungan.
  4. Setelah angka 9, hitungan berikutnya kembali ke 0.

Konsep yang dipelajari

Seven segment displaySensor PIR sebagai pemicu hitungVariabel penghitung (counter)Pola segmen angka 0 sampai 9

Kode program

/*
  Counter orang: setiap gerakan yang terdeteksi PIR menambah hitungan,
  angka 0-9 tampil di display 7-segment.
  Rangkaian: PIR (VCC -> 5V, GND -> GND, OUT -> D2),
             7-segment (A-G,DP -> D3-D10, COM1/COM2 -> GND).
  Klik kubah PIR di kanvas untuk mensimulasikan orang lewat.
*/
// Segment A, B, C, D, E, F, G untuk angka 0-9 (common-cathode: 1 = nyala).
const byte ANGKA[10] = {
  0b00111111, // 0
  0b00000110, // 1
  0b01011011, // 2
  0b01001111, // 3
  0b01100110, // 4
  0b01101101, // 5
  0b01111101, // 6
  0b00000111, // 7
  0b01111111, // 8
  0b01101111, // 9
};
const int PIN_SEG[7] = {3, 4, 5, 6, 7, 8, 9}; // A..G
const int PIN_PIR = 2;

int hitungan = 0;
bool terakhirAdaGerak = false;

void tampilkan(int angka) {
  byte pola = ANGKA[angka % 10];
  for (int i = 0; i < 7; i++) {
    digitalWrite(PIN_SEG[i], (pola >> i) & 1);
  }
}

void setup() {
  pinMode(PIN_PIR, INPUT);
  for (int i = 0; i < 7; i++) {
    pinMode(PIN_SEG[i], OUTPUT);
  }
  pinMode(10, OUTPUT); // DP tidak dipakai, pastikan mati.
  digitalWrite(10, LOW);
  Serial.begin(9600);
  tampilkan(0);
  Serial.println(F("Counter siap. Klik PIR untuk menghitung."));
}

void loop() {
  bool adaGerak = digitalRead(PIN_PIR) == HIGH;
  if (adaGerak && !terakhirAdaGerak) {
    hitungan = (hitungan + 1) % 10;
    tampilkan(hitungan);
    Serial.print(F("Orang ke-"));
    Serial.println(hitungan);
  }
  terakhirAdaGerak = adaGerak;
  delay(50);
}

Template Arduino Uno lainnya