diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..01d967f --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,28 @@ + + { + "version": "0.2.0", + "configurations": [ + { + "name": "Debug C++", + "type": "cppdbg", + "request": "launch", + "program": "${workspaceFolder}/main", + "args": [], + "stopAtEntry": false, + "cwd": "${workspaceFolder}", + "environment": [], + "externalConsole": true, + "MIMode": "gdb", + "setupCommands": [ + { + "description": "Enable pretty-printing for gdb", + "text": "-enable-pretty-printing", + "ignoreFailures": true + } + ], + "preLaunchTask": "build", + "miDebuggerPath": "/usr/bin/gdb" // ou chemin vers gdb sous Windows + } + ] + } + diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..53b0dab --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "C_Cpp.default.compilerPath": "C:/MinGW/bin/g++.exe" +} \ No newline at end of file diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..b7d1300 --- /dev/null +++ b/main.cpp @@ -0,0 +1,75 @@ +#include +#include +#include +#include + +// Seuils de BPM +const int BPM_MIN = 50; +const int BPM_MAX = 120; + +// === Simule la récupération de données du capteur === +int acquerirDonnees() { + // Ici tu brancherais ton ADC ou capteur réel + // Simulation d'une fréquence cardiaque variable + static int fakeBPM = 70 + rand() % 60 - 30; + return fakeBPM; +} + +// === Calcule le BPM à partir d'une série de battements === +int calculerBPM(const std::vector& battements) { + // Moyenne simple des valeurs simulées + if (battements.empty()) return 0; + + int somme = 0; + for (int bpm : battements) { + somme += bpm; + } + return somme / battements.size(); +} + +// === Vérifie si le BPM est dans la plage normale === +bool verifierAnomalie(int bpm) { + return bpm < BPM_MIN || bpm > BPM_MAX; +} + +// === Déclenche une alerte === +void alerter(int bpm) { + std::cout << "⚠ Alerte : rythme cardiaque anormal (" << bpm << " BPM) !" << std::endl; + // Tu peux ici allumer une LED, déclencher un buzzer, etc. +} + +// === Affiche les données sur un terminal ou un écran === +void afficher(int bpm, bool anomalie) { + std::cout << "BPM actuel : " << bpm; + if (anomalie) { + std::cout << " [ANOMALIE]"; + } + std::cout << std::endl; +} + +// === Fonction principale === +int main() { + std::vector bufferBPM; + const int tailleBuffer = 5; + + while (true) { + int mesure = acquerirDonnees(); + bufferBPM.push_back(mesure); + + if (bufferBPM.size() > tailleBuffer) { + bufferBPM.erase(bufferBPM.begin()); // Supprimer l’ancienne + } + + int bpm = calculerBPM(bufferBPM); + bool anomalie = verifierAnomalie(bpm); + afficher(bpm, anomalie); + + if (anomalie) { + alerter(bpm); + } + + std::this_thread::sleep_for(std::chrono::seconds(1)); // simulation de délai entre mesures + } + + return 0; +} \ No newline at end of file