Skip to main content

PENGHITUNG RAKAAT SHALAT

πŸŽ₯ VIDEO TUTORIAL LENGKAP

Pengen bikin alat yang bisa bantu ngitung rakaat saat shalat? Simak dulu video ini biar makin paham alurnya sebelum ngetik kodenya:


πŸ”Œ WIRING ATAU RANGKAIAN

Gak perlu tebak-tebakan kabel! Skema pemasangan lengkap bisa kamu lihat di halaman berikut ini: πŸ‘‰ WIRING MAKE KIT ULTRASONIC


πŸ’» SOURCE CODE

Yuk kita masuk ke bagian utama: source code! Kode berikut akan membaca jarak dari sensor ultrasonik dan menghitung rakaat berdasarkan jumlah sujud. Cukup praktis untuk digunakan saat latihan atau pembelajaran. πŸš€

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define trigPin 9
#define echoPin 10
#define buzzerPin 8

LiquidCrystal_I2C lcd(0x27, 16, 2);

int sujudCount = 0;
int rakaatCount = 0;
bool isSujud = false; // status sebelumnya

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(buzzerPin, OUTPUT);
  
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Hitung Rakaat");
  delay(1500);
  lcd.clear();
}

void loop() {
  long duration;
  float distance;

  // Baca jarak dari sensor ultrasonik
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration * 0.0343) / 2;

  // Tampilkan jarak di LCD baris 1
  lcd.setCursor(0, 0);
  lcd.print("Jarak: ");
  lcd.print(distance, 1);
  lcd.print(" cm   ");

  // Deteksi sujud (misalnya kepala <10 cm dari sensor)
  if (distance < 10 && !isSujud) {
    sujudCount++;
    tampilkanSujud(sujudCount);
    isSujud = true;

    // Cek jika sudah genap 2 sujud => 1 rakaat
    if (sujudCount % 2 == 0) {
      rakaatCount++;
      tampilkanRakaat(rakaatCount);
      bunyikanBeep(rakaatCount);
    }
  }

  // Reset status saat tidak sujud (jarak lebih dari threshold)
  if (distance > 30) {
    isSujud = false;
  }

  delay(100);
}

void tampilkanRakaat(int rakaat) {
  lcd.setCursor(0, 1);
  lcd.print("Rakaat: ");
  lcd.print(rakaat);
  lcd.print("   ");
}

void tampilkanSujud(int sujud) {
  lcd.setCursor(13, 1);
  lcd.print("S");
  lcd.print(sujud);
  lcd.print("   ");
}

void bunyikanBeep(int jumlah) {
  for (int i = 0; i < jumlah; i++) {
    tone(buzzerPin, 1000);
    delay(200);
    noTone(buzzerPin);
    delay(200);
  }
}

Sudah di-copy? Sekarang tinggal upload ke board Arduino kamu! Untuk panduan lengkap cara upload program, buka: SEMUA TENTANG ARDUINO IDE


🧠 PENJELASAN PROGRAM

  • Sensor Ultrasonik: Digunakan untuk mendeteksi jarak kepala ke lantai saat sujud.
  • Deteksi Sujud: Jika jarak kurang dari 10 cm dan sebelumnya belum sujud β†’ tambah 1 hitungan sujud.
  • Hitung Rakaat: Setiap 2 sujud dianggap 1 rakaat. Jumlah rakaat otomatis bertambah.
  • LCD 16x2: Menampilkan jarak + status rakaat & sujud secara real-time.
  • Buzzer: Memberi bunyi tiap selesai 1 rakaat, jumlah beep sesuai jumlah rakaat.

Alat ini cocok untuk latihan shalat mandiri, pembelajaran anak-anak, atau bahan eksperimen AIoT berbasis gesture sederhana. Cukup andal untuk digunakan sebagai pelatihan logika mikrokontroler juga!


Semoga bermanfaat, dan semoga ibadahmu makin khusyuk dan teknologinya makin canggih! πŸŒ™πŸ€–