bonjour à tous, j'ai un bug assez contraignant avec mon arduino ( nano atmega 328p ), j'ai écrit un code qui consiste à récupérer une valeur d'un capteur avec analogread, après traitement de cette valeur, je les affiches dans le moniteur série mais ça affiche des choses bizarres
en gros mon code consiste à récupérer un signal cardiaque sur les doigts et à le traiter pour trouver un BPM, le bug a surement été déjà vu, ou est un bug basic mais je ne comprend vraiment pas l'erreur.
voici le code:
#include <Arduino.h>
int valeurPrecedente = 0;
long tempsPrecedent = 0;
float BPM = 0.0;
void setup(){
Serial.begin(1200);
}
void loop()
{
float valeurActuelle, valeurSeuil;
long tempsDetection;
valeurActuelle = analogRead(0);
valeurSeuil = 520.0;
if ( valeurActuelle > valeurSeuil){
if (valeurPrecedente <= valeurSeuil){
tempsDetection = millis();
if (tempsDetection > (tempsPrecedent + 300)){
BPM = float(1000.0*60.0) / float(tempsDetection - tempsPrecedent), 0;
Serial.print(BPM);
Serial.println("BPM");
tempsPrecedent = tempsDetection;
}
}
}
valeurPrecedente = valeurActuelle;
}
photo du moniteur serie :
Ici c'est pas le même code mais le même problème.
Mes questions sont donc les suivantes :
Quelle est l'origine de ce bug ?
comment le corriger ici, et éviter de l'avoir dans le futur ?
je vous remercie.