Bonjour à tous !
Depuis quelque jour j'essaie de connecter un ecran ili9488 à un capteur MAX30102 (fréquence cardiaque) les deux marchent super bien de manière seul mais dès que j'essaie d'afficher les BPM sur l'ecran je me retrouve avec 0BPM d'afficher alors que le doigt est bien détecté sur le capteur. Quelqu'un peut me venir en aide ? Voici mon code.
#include <Wire.h> // Communication I2C
#include "MAX30105.h" // Bibliothèque pour le capteur MAX30105
#include "heartRate.h" // Calcul du rythme cardiaque
#include <TFT_eSPI.h> // Bibliothèque pour l'écran TFT_eSPI
// Déclarations pour l'écran TFT_eSPI
TFT_eSPI tft = TFT_eSPI();
// Déclarations pour le capteur MAX30102
MAX30105 particleSensor;
const byte RATE_SIZE = 10; // Taille pour stocker les lectures
byte rates[RATE_SIZE];
byte rateSpot = 0;
long lastBeat = 0;
float beatsPerMinute;
int beatAvg;
void setup() {
// Initialisation de la communication série
Serial.begin(115200);
// Initialisation de l'écran
tft.init();
tft.setRotation(1);
tft.fillScreen(TFT_BLACK);
tft.setTextColor(TFT_WHITE, TFT_BLACK);
tft.setTextSize(2);
// Initialisation du capteur MAX30102
if (!particleSensor.begin(Wire, I2C_SPEED_STANDARD)) {
tft.setCursor(10, 10);
tft.print("MAX30102 non detecte!");
while (1);
}
particleSensor.setup();
particleSensor.setPulseAmplitudeRed(0x0A);
particleSensor.setPulseAmplitudeGreen(0);
// Message d'accueil
tft.setCursor(10, 10);
tft.print("Initialisation... OK");
delay(2000);
tft.fillScreen(TFT_BLACK);
}
void loop() {
long irValue = particleSensor.getIR();
if (checkForBeat(irValue)) {
long delta = millis() - lastBeat;
lastBeat = millis();
beatsPerMinute = 60 / (delta / 1000.0);
if (beatsPerMinute < 255 && beatsPerMinute > 20) {
rates[rateSpot++] = (byte)beatsPerMinute;
rateSpot %= RATE_SIZE;
beatAvg = 0;
for (byte i = 0; i < RATE_SIZE; i++) {
beatAvg += rates[i];
}
beatAvg /= RATE_SIZE;
}
}
// Affichage des données
tft.fillScreen(TFT_BLACK);
tft.setCursor(10, 50);
tft.print("Rythme cardiaque:");
tft.setCursor(10, 100);
tft.setTextColor(TFT_RED, TFT_BLACK);
tft.print(beatAvg);
tft.setTextColor(TFT_WHITE, TFT_BLACK);
tft.print(" BPM");
delay(500);
}