#include <Wire.h>
#include <MPU6050.h>
MPU6050 mpu;
#define BUZZER_PIN 13 // Pin untuk buzzer
#define LED_PIN 12 // Pin untuk LED
unsigned long lastMoveTime = 0;
const unsigned long remindInterval = 10000; // 1 jam dalam milidetik (3600 detik)
void setup() {
Serial.begin(115200);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
Wire.begin();
mpu.initialize();
if (!mpu.testConnection()) {
Serial.println("MPU6050 tidak terhubung!");
while (1);
}
Serial.println("MPU6050 berhasil terhubung.");
lastMoveTime = millis();
}
void loop() {
int16_t ax, ay, az;
mpu.getAcceleration(&ax, &ay, &az);
// Deteksi pergerakan (threshold disesuaikan)
if (abs(ax) > 1000 || abs(ay) > 1000 || abs(az) > 1000) {
lastMoveTime = millis();
}
// Cek apakah waktunya untuk mengingatkan minum
if (millis() - lastMoveTime >= remindInterval) {
remindToDrink();
lastMoveTime = millis(); // Reset waktu setelah mengingatkan
}
Serial.print("Akselerasi X: "); Serial.print(ax);
Serial.print(" | Akselerasi Y: "); Serial.print(ay);
Serial.print(" | Akselerasi Z: "); Serial.println(az);
delay(500); // Tunggu sebentar untuk melihat data dengan jelas
}
void remindToDrink() {
Serial.println("Saatnya minum air!");
// Nyalakan LED dan buzzer
digitalWrite(LED_PIN, HIGH);
tone(BUZZER_PIN, 1000); // Frekuensi buzzer (misal: 1000 Hz)
delay(10000); // Durasi nyala pengingat
// Matikan LED dan buzzer
digitalWrite(LED_PIN, LOW);
noTone(BUZZER_PIN);
}