Problème de liaison capteur / ecran

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);
}

Quel CPU utilises-tu?

J'utilise un STM32F401RE via l'IDE arduino

Je ne connais pas la librairie TFT_eSPI mais si elle crée un buffer graphique, le STM32F401E a-t-il suffisamment de RAM pour allouer le buffer graphique et traiter le capteur?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.