ALAT UKUR TINGGI BADAN DIGITAL

📏 ALAT UKUR TINGGI BADAN OTOMATIS

Proyek ini menggunakan sensor ultrasonik untuk mengukur tinggi badan secara otomatis. Saat dinyalakan, alat akan kalibrasi jarak ke lantai selama 3 detik, lalu siap digunakan. Hasil pengukuran akan ditampilkan di layar selama 10 detik agar mudah dibaca!


🔌 WIRING

Komponen

Pin Arduino

HC-SR04 VCC

5V

HC-SR04 GND

GND

HC-SR04 TRIG

D9

HC-SR04 ECHO

D10

LCD I2C SDA

A4

LCD I2C SCL

A5

Buzzer (+)

D8

Buzzer (–)

GND


💻 SOURCE CODE

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

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

LiquidCrystal_I2C lcd(0x27, 16, 2);

long lantai = 0;
bool sudahKalibrasi = false;

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(buzzerPin, OUTPUT);
  
  lcd.init();
  lcd.backlight();
  lcd.setCursor(0,0);
  lcd.print("Kalibrasi...");
  
  // Kalibrasi lantai (ambil rata-rata 30x)
  long total = 0;
  for (int i = 0; i < 30; i++) {
    total += bacaJarak();
    delay(100);
  }
  lantai = total / 30;
  sudahKalibrasi = true;
  
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Siap ukur!");
  delay(2000);
  lcd.clear();
}

void loop() {
  if (!sudahKalibrasi) return;

  // Tunggu benda mendekat (kepala)
  if (bacaJarak() < lantai - 10) {
    lcd.setCursor(0,0);
    lcd.print("Mengukur...");
    
    long total = 0;
    for (int i = 0; i < 30; i++) {
      total += bacaJarak();
      delay(100);
    }
    long rata2 = total / 30;
    long tinggi = lantai - rata2;

    tone(buzzerPin, 2000);
    delay(500);
    noTone(buzzerPin);

    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("Tinggi:");
    lcd.setCursor(0,1);
    lcd.print(tinggi);
    lcd.print(" cm");

    delay(10000); // tahan tampilan selama 10 detik
    lcd.clear();
    lcd.print("Siap ukur!");
    delay(1000);
    lcd.clear();
  }

  delay(300);
}

long bacaJarak() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  long durasi = pulseIn(echoPin, HIGH);
  return durasi * 0.0343 / 2; // dalam cm
}

🧠 PENJELASAN PROGRAM

🧒 Cocok untuk alat pengukur tinggi di rumah, sekolah, atau lab sains mini!


Yuk bikin versi digital pengukur tinggi kamu sendiri! Tambahkan fitur NFC, logging ke SD card, atau bahkan upload ke IoT kalau mau lebih keren 😎


Revision #2
Created 22 May 2025 06:27:09 by satria
Updated 4 June 2025 07:59:51 by satria