Récepteur

Bonjour,

J'ai fait un montage pouvant réceptionner le poul d'une personne malheureusement il détecte toujours le même poul (ce qui n'est pas possible) et j'ai beau me creuser la tête, je ne vois vraiment pas la solution.
Donc est-ce que quelqu'un pourrait me dire si il voit quelque chose d'anormale dans le code ci-dessous.

Merci d'avance à vous :wink:

#include "param.h"
#include "Cardio.h"

int last;

void setup()
{
  last= millis();
  int i=0;
  for (int i=4; i<=13; i++)
  {
    pinMode(i, OUTPUT);
    digitalWrite(i, LOW);
  }
  Serial.begin(9600);
  Serial.println("START");
}

void loop()
{
   while(millis()>10000)
 {   
    if (analogRead(A0)>630)
    {
      
      Chenille();
      UNEsurDEUX();
      UNEsurTROIS();
      TOUS();

      Serial.print(last);
      Serial.print(";");
      Serial.println(Pouls(last));
      delay(750);
      
      last = millis();
    }
 }
}

Bonsoir,

c'est vraiment compliqué de déduire le but des fonctions de ton programme, il serait judicieux que tu nous les explique.

Oui c'est vrai désolé ^^, alors la fonction "param.h" fait un appelle a des fonctions qui permettent de changer l'allumage des LED et la fonction "Cardio.h" contient la fonction qui permet de transformer les fréquence récupérer en battements par minute et cela donne:

int temps()
{
return millis();
}

int Pouls(int last)
{
  int pouls;
  pouls = (60000/(millis()-last));
  if (pouls>62 && pouls<150)
  {
    return pouls;
  }
}
int last;

void setup()
{
  last= millis();

Une variable de type int est stockée en mémoire sur 2 octets (16 bits) 1 bit pour le signe et 15 bits pour la valeur. Ce qui donne un domaine de validité allant de -32768 à +32767

Si tu stocke dans un int la valeur retournée par la fonction millis(); ton programme va planter au bout de 32 secondes (32 767 / 1000)

Voir la doc de la fonction millis()

Notes and Warnings

Please note that the return value for millis() is an unsigned long, logic errors may occur if a programmer tries to do arithmetic with smaller data types such as int’s. Even signed long may encounter errors as its maximum value is half that of its unsigned counterpart

Donc si je "grandi" l'ensemble mes valeurs de pouls varieront et le programme donnera les bonnes valeurs? :slight_smile:

Je viens de changer cela n'a pas d'effet