From ba1e357124f9cd5bb7201f045529e5b360406e63 Mon Sep 17 00:00:00 2001 From: laure Date: Sat, 3 May 2025 11:24:35 +0200 Subject: [PATCH] change the sleep method because not working in main3, better in main4 --- main4.cpp | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ test.cpp | 9 ++++++ 2 files changed, 105 insertions(+) create mode 100644 main4.cpp create mode 100644 test.cpp diff --git a/main4.cpp b/main4.cpp new file mode 100644 index 0000000..558b2f3 --- /dev/null +++ b/main4.cpp @@ -0,0 +1,96 @@ +#include +#include +#include +#include // rand() +#include // time() +#include + +// === Parameters === +const int BPM_MIN = 50; +const int BPM_MAX = 120; +const int SAMPLE_INTERVAL_MS = 100; // Sampling every 10 ms +const int THRESHOLD = 550; // Threshold for heartbeat detection +const int NOISE_LEVEL = 100; // Simulated noise level + +// === Initialize random generator === +void initialiserRandom() { + srand(static_cast(time(0))); +} + +// === Simulate heart signal from sensor === +int simulerSignalCardiaque() { + static int t = 0; + t++; + + // Simulate a peak every ~800 ms (≈75 BPM) + if (t % 80 == 0) { + return 700 + rand() % 50; // Simulated peak + } else if (t % 10==0){ + return 300 + rand() % NOISE_LEVEL; // Background noise + } +} + +// === 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() { + initialiserRandom(); + + bool battementDetecte = false; + auto dernierBattement = std::chrono::steady_clock::now(); + + std::cout << " Demarrage de la simulation du capteur cardiaque...\n"; + + while (true) { + int signal = simulerSignalCardiaque(); + //std::cout << "Signal: " << signal << std::endl; // verify the signal detected + + // Détection de battement + if (signal > THRESHOLD && !battementDetecte) { + auto maintenant = std::chrono::steady_clock::now(); + auto intervalle = std::chrono::duration_cast(maintenant - dernierBattement).count(); + + if (intervalle > 300) { // BPM > 200 => ignore + int bpm = 60000 / intervalle; + std::cout << " BPM mesure : " << bpm; + + bool anomalie = (bpm < BPM_MIN || bpm > BPM_MAX); + if (anomalie) { + std::cout << " [ANOMALIE]"; + activerBuzzer(); + activerVibreur(); + envoyerMessageBluetooth(true); + } else { + envoyerMessageBluetooth(false); + } + std::cout << std::endl; + + dernierBattement = maintenant; + } + + battementDetecte = true; + } + + // Prêt pour détecter le prochain battement + if (signal < THRESHOLD) { + battementDetecte = false; + } + + Sleep(SAMPLE_INTERVAL_MS); // expects milliseconds + } + + return 0; +} diff --git a/test.cpp b/test.cpp new file mode 100644 index 0000000..da9602f --- /dev/null +++ b/test.cpp @@ -0,0 +1,9 @@ +#include +#include +#include + +int main() { + std::cout << "Sleeping..." << std::endl; + std::this_thread::sleep_for(std::chrono::seconds(1)); + std::cout << "Awake!" << std::endl; +}