#include #include #include #include // rand() #include // time() #include // === Parameters === //const int BPM_MIN = 50; //const int BPM_MAX = 120; const int SAMPLE_INTERVAL_MS = 1000; // Sampling every 10 ms const int THRESHOLD_CARDIAC_ARREST = 2; //const int NOISE_LEVEL = 100; // Simulated noise level // === Initialize random generator ===// === Simulate heart signal from sensor === int generateRandomHeartRate() { //int bpm = 30 + rand() % 111; // génère un BPM entre 30 et 140 int bpm = rand() % 141; // génère un BPM entre 0 et 140 return bpm; } // === Simulate buzzer activation === void activerBuzzer() { std::cout << " Buzzer active (ALERTE CARDIAQUE)!" << std::endl; } // === Simulate vibration motor activation === void activerVibreur() { std::cout << " Vibreur active (ALERTE CARDIAQUE)!" << std::endl; } // === Simulate Bluetooth transmission === void envoyerMessageBluetooth(bool urgence) { std::cout << " Message Bluetooth envoye: " << (urgence ? "TRUE (urgence)" : "FALSE (normal)") << std::endl; } // === Main program === int main() { bool battementDetecte = false; auto dernierBattement = std::chrono::steady_clock::now(); std::cout << " Demarrage de la simulation du capteur cardiaque...\n"; int i=0; int lastBPM; while (true) { //int signal = simulerSignalCardiaque(); //std::cout << "Signal: " << signal << std::endl; // verify the signal detected // Détection de battement if (!battementDetecte) { //signal > THRESHOLD && auto maintenant = std::chrono::steady_clock::now(); auto intervalle = std::chrono::duration_cast(maintenant - dernierBattement).count(); int bpm = generateRandomHeartRate(); std::cout << " BPM mesure : " << bpm; if (bpm < 55 && bpm > 40){ std::cout << " [BRADYCARDIA]" << std::endl; activerVibreur(); } else if(bpm < 140 && bpm > 110) { std::cout << " [TACHYCARDIA]" << std::endl; activerVibreur(); }else if(bpm < 110 && bpm > 55){ std::cout << " [NORMAL]" << std::endl; envoyerMessageBluetooth(false); } else if (bpm < 40){ if (i>THRESHOLD_CARDIAC_ARREST && lastBPM < 40){ i=0; std::cout << " [CARDIAC ARREST]" << std::endl; activerBuzzer(); activerVibreur(); envoyerMessageBluetooth(true); }else{ i+=1; } } std::cout << std::endl; dernierBattement = maintenant; battementDetecte = true; lastBPM =bpm; std::cout << lastBPM << std::endl; }else { battementDetecte = false;// Prêt pour détecter le prochain battement } Sleep(SAMPLE_INTERVAL_MS); // expects milliseconds } return 0; }