Capteur fréquence cardiaque code

Bonjour à tous.
Il y a peu, j'ai eu une idée de projet. J'aimerais réaliser quelque chose qui capte ma fréquence cardiaque, grâce à un capteur de pouls (le XD58), quatre LEDs (une bleue, une verte, une jaune et une rouge, et les résistances correspondantes) et une carte Arduino Nano. Je voudrais que la LED bleue (Pin9) clignote au rythme de mon coeur, que la verte (Pin3) s'allume lorsque mon pouls est supérieur à 70bpm, que la jaune (Pin4) s'allume lorsque mon pouls est supérieur à 100bpm, et que la rouge (Pin5) s'allume lorsque mon pouls est supérieur à 130bpm. J'ai tout le matériel nécessaire, mais je n'ai pas les connaissances en codage pour réaliser mon projet :confused:
J'ai fouillé Internet, et j'ai réussi à combiner des codes pour arriver à ce résultat :

Mais il ne fonctionne pas, sauf la LED bleue, elle est en rythme avec mon pouls. J'avoue que je ne comprends pas vraiment le code... j'utilise l'application Arduino pour coder. J'aimerais vraiment pouvoir réussir mon projet :slight_smile: Est-ce que vous pourriez m'aider svp ?

Merci

une photo du code... avec ça on va aller loin... même avec mes lunettes c'est illisible...

J'aimerais vraiment pouvoir réussir mon projet
souhaitez vous apprendre à coder? il faut peut-être commencer par plus simple...

:warning: La rédaction de votre message ne répond pas aux critères attendus. Il n'aura sans doute pas de réponse tant que vous n'aurez pas pris en compte et mis en application les recommandations listées dans "Les bonnes pratiques du Forum Francophone”

hello
merci de mettre ton code et pas une copie d'écran.
dans l'IDE arduino, menu "outil", "formater"
puis tu sélectionnes ton code et "copier"
dans ton post, tu cliques sur "</>" et tu verras apparaitre une ligne dans laquelle tu deposes ton curseur et fais "coller"
tu code sera propre et présenté dans une fenetre avec ascenseur si besoin

edit: grillé par JML

D'accord, désolé, mais quels sont les critères attendus ?

Et oui désolé, je reposte le code :

#include <PulseSensorPlayground.h>

PulseSensorPlayground pulseSensor;

//  Variables
int PulseSensorPurplePin = 0;      
int LED9 = 9;
int LED3 = 3;
int LED4 = 4;
int LED5 = 5;
int pinCount = 4;



int Signal;             
int Threshold = 516;           


void setup() {
  pinMode(LED3, OUTPUT);       
  Serial.begin(9600);      
  pinMode(LED4, OUTPUT);      
  Serial.begin(9600);
  pinMode(LED5, OUTPUT);       
  Serial.begin(9600);
  pinMode(LED9, OUTPUT);       
  Serial.begin(9600);
}

void loop() {

  Serial.begin(115200);

  Signal = analogRead(PulseSensorPurplePin); 

  Serial.println(Signal);                  


  if (Signal > Threshold) {                       
    digitalWrite(LED9, HIGH);
  } else {
    digitalWrite(LED9, LOW);               
  }

  int myBPM = pulseSensor.getBeatsPerMinute();
  if ( 70 < myBPM ) {
    digitalWrite(LED3, HIGH);
  } else {
    digitalWrite(LED3, LOW);
  }
  if ( 100 < myBPM ) {
    digitalWrite(LED4, HIGH);
  } else {
    digitalWrite(LED4, LOW);
  }
  if ( 130 < myBPM ) {
    digitalWrite(LED5, HIGH);
  } else {
    digitalWrite(LED5, LOW);
  }


  delay(10);


}

Merci de votre aide.
Et je ne souhaite pas apprendre particulièrement à coder, c'est juste que j'aurais besoin d'un objet comme cela (à cause d'une pathologie que j'ai, qui fait que je peux faire de la tachycardie sans m'en rendre compte, mais ce n'est rien de grave) donc je voulais le faire moi-même. J'ai les connaissances en mécanique, soudure etc... mais presque aucune en code

si vous lisez le texte du lien vous aurez plus d'info

D'accord merci, j'y vois plus clair. Comment puis-je mettre mon post dans la catégorie Forum Francophone ?

Apres la mesure de myBPM, tu ajoutes ces lignes de débogage:

Serial.print ( "myBPM=" );
Serial.println ( myBPM );

pour vérifier que ta mesure est correcte

Et tu ne laisses qu'un seul Serial.begin(115200) dans le setup() - pas dans la loop()

J'ai fait ce que vous avez dit, mais la LED3 ne s'allume pas alors que mon pouls est supérieur à 70bpm, que manque-t-il d'après vous pour qu'elle s'allume sous ma condition ?

Comment avez vous câblé tout le montage ?

J'utilise une breadboard pour relier les LEDs à la carte nano, et j'ai relié directement les fils du capteur cardiaque à la carte nano

Faites un schéma lisible sur un bout de papier et postez une photo
Listez les composants, résistances, etc..

Tenez, je l'ai fait sur ordinateur pour mettre des couleurs, j'espère que cela vous conviendra, sinon, j'en referai un

Tu es certain que les LEDs sont câblées dans le bon sens?
Tu pourrais ajouter ces lignes à la fin du setup()

digitalWrite(LED3, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED5, HIGH);
delay(5000); // allume les LEDs pendant 5 secondes pour les vérifier
digitalWrite(LED3, LOW);
digitalWrite(LED4, LOW);
digitalWrite(LED5, LOW);

Au passage, tu aurais pu mettre des noms plus explicites.

Oui elles le sont, et oui je les ai ajoutées et elles fonctionnent merci :slight_smile:
Mais vous ne savez pas comment je pourrais faire en sorte que la LED3 s'allume lorsque mon pouls est supérieur à 70bpm ? Est-ce qu'il faut retranscrire en battements par minute ce que le capteur reçoit ? Si je réussis pour celle-là, j'y arriverai pour les autres (lorsque mon pouls est supérieur à 100bpm, puis lorsqu'il est supérieur à 130bpm) en répétant la même opération normalement

Dans le moniteur série, il est écrit "myBPM = 0"
Le problème vient peut-être de là, je pense que le capteur ne retranscrit pas mes battements de coeur à proprement parler, mais simplement un signal de mon rythme cardiaque, mais comment faut-il faire pour que le programme traduise mon rythme cardiaque en battements par minute ??

Tu as essayé les codes des exemples installés avec la librairie.
Ils fonctionnent?

Parce que dans les codes en question il y a cette remarque:

/*
Every Sketch that uses the PulseSensor Playground must
define USE_ARDUINO_INTERRUPTS before including PulseSensorPlayground.h.
Here, #define USE_ARDUINO_INTERRUPTS true tells the library to use
interrupts to automatically read and process PulseSensor data.
See ProcessEverySample.ino for an example of not using interrupts.
*/

Or dans ton code ce define n’apparaît pas.

Oui j'avais essayé un code de la librairie, et il fonctionne. Je viens de rajouter ce define, mais à quoi est-ce qu'il sert exactement ?

Que de temps perdu avec tes histoires de LEDs, alors qu'en fait ton capteur ne te donne aucune information. Faut faire les choses dans l'ordre.

Il faut lire les commentaires dans les exemples.
En particulier, ceux en tête de programme

Chaque croquis qui utilise PulseSensorPlayground doit
définir USE_ARDUINO_INTERRUPTS avant d'inclure PulseSensorPlayground.h.
Ici, USE_ARDUINO_INTERRUPTS true indique à la bibliothèque d'utiliser
les interruptions pour lire et traiter automatiquement les données de PulseSensor

Oui j'avais compris, mais comment est-ce que mon capteur peut me donner une information en battements par minute ??