Bonjour à tous !
Alors voilà je suis face à un problème que je n'arrive pas à résoudre depuis 3 jours.
J'ai une LED blanche branché sur la broche 11, avec un potentiomètre branché en A0, qui me permet de gérer la luminosité.
D'un autre côté, j'ai un capteur de pulsation avec un servomoteur. Le capteur capte un battement, le servomoteur bouge en fonction, simple.
Seulement voilà, quand j'utilise la ligne "if (pulseSensor.begin()) {
; la led ne fonctionne plus comme je le désire. Elle se met à clignoter très rapidement, mais sans aucune logique. Tantôt elle va clignoter, tantôt non, et le potentiomètre ne fait plus rien.
J'ai essayer de mettre en commentaire tout le reste du code, et j'ai petit à petit dé-commenter le code pour trouver d'où venait le problème, c'est la que j'ai découvert que c'était justement cette ligne au dessus, ligne 24 donc. Sachant que le code du capteur de pulsation est un code que j'ai récupérer sur Youtube, je ne suis pas exactement sur du rôle de chaque ligne, j'ai pu écrire une connerie plus grosse que moi (Et je suis pas un poids plume) et ne pas m'en rendre compte.
Merci d'avoir pris le temps de me lire. C'est la première fois que je poste ici, si j'ai fait une erreur quelconque, n'hésitez pas à me le dire évidemment.
#include <Servo.h>
#define USE_ARDUINO_INTERRUPTS true //--> Set-up low-level interrupts for most acurate BPM math.
#include <PulseSensorPlayground.h> //--> Includes the PulseSensorPlayground Library.
Servo monServo; //On donne le nom monServo à un servomoteur
//----------------------------------------Led et potentiomètre
int led = 11;
int sensorValue;
//----------------------------------------Variable Declaration
const int PulseWire = 1; //--> Le capteur de pulsation est branché sur A1
int Threshold = 550; //--> Determine quel Signal je dois compter comme un battement et quel signal je dois ingnorer
//----------------------------------------
PulseSensorPlayground pulseSensor; //--> Creates an instance of the PulseSensorPlayground object called "pulseSensor"
//--------------------------------------------------------------------------------void setup
void setup() {
monServo.attach (5); //Commande du servomoteur en D5
Serial.begin(9600); //--> Set's up Serial Communication at certain speed.
//----------------------------------------Configure the PulseSensor object, by assigning our variables to it.
pulseSensor.analogInput(PulseWire);
pulseSensor.setThreshold(Threshold);
//----------------------------------------
//----------------------------------------Double-check the "pulseSensor" object was created and "began" seeing a signal.
if (pulseSensor.begin()) {
Serial.println("We created a pulseSensor Object !"); //--> This prints one time at Arduino power-up, or on Arduino reset.
}
//----------------------------------------
}
//--------------------------------------------------------------------------------
//--------------------------------------------------------------------------------void loop
void loop() {
sensorValue = analogRead(A0);
sensorValue = map(sensorValue, 0, 1023, 0, 255);
analogWrite(led, sensorValue);
int myBPM = pulseSensor.getBeatsPerMinute(); //--> Calls function on our pulseSensor object that returns BPM as an "int". "myBPM" hold this BPM value now.
//----------------------------------------Constantly test to see if "a beat happened".
if (pulseSensor.sawStartOfBeat()) { //--> If test is "true", then the following conditions will be executed.
Serial.println("♥ Oh ! Un battement de coeur ! "); //--> Print a message "a heartbeat happened".
Serial.print("BPM: "); //--> Print phrase "BPM: "
Serial.println(myBPM); //--> Print the value inside of myBPM.
}
//----------------------------------------
delay(20); //--> considered best practice in a simple sketch.
if(myBPM < 40){
monServo.write (180);
}
if((myBPM >= 41) && (myBPM<=49)){
monServo.write (170);
}
if((myBPM >= 50) && (myBPM<=59)){
monServo.write (160);
}
if((myBPM >= 60) && (myBPM<=69)){
monServo.write (160);
}
if((myBPM >= 70) && (myBPM<=79)){
monServo.write (150);
}
if((myBPM >= 80) && (myBPM<=89)){
monServo.write (140);
}
if((myBPM >= 90) && (myBPM<=99)){
monServo.write (130);
}
if((myBPM >= 100) && (myBPM<=109)){
monServo.write (120);
}
if((myBPM >= 110) && (myBPM<=119)){
monServo.write (110);
}
if((myBPM >= 120) && (myBPM<=129)){
monServo.write (100);
}
if((myBPM >= 130) && (myBPM<=139)){
monServo.write (90);
}
if((myBPM >= 140) && (myBPM<=149)){
monServo.write (80);
}
if((myBPM >= 150) && (myBPM<=159)){
monServo.write (70);
}
if((myBPM >= 160) && (myBPM<=169)){
monServo.write (60);
}
if((myBPM >= 170) && (myBPM<=179)){
monServo.write (50);
}
if((myBPM >= 180) && (myBPM<=189)){
monServo.write (40);
}
if((myBPM >= 190) && (myBPM<=199)){
monServo.write (30);
}
}