Hola, me encuentro realizando un proyecto donde tengo que conectar un sensor MLX90614 y un Max30100 mediante I2C a un ESP8266. Este es el codigo que utilizo sin tener exito. El problema es que no me da mediciones correctas en el monitor serial. ¿Por favor, alguien tiene alguna idea de solución?
#include <Wire.h>
#include "MAX30100_PulseOximeter.h"
#include <Adafruit_MLX90614.h>
#define I2C_SDA 21
#define I2C_SCL 22
#define REPORTING_PERIOD_MS 1000
uint8_t bm280_address = 0x76;
uint8_t max30100_address = 0x57;
uint8_t irmlx90614_address = 0x5A;
uint32_t tsLastReport = 0;
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
PulseOximeter pox;
void setup() {
Serial.begin(9600);
Wire.begin();
mlx.begin();
pox.begin();
//delay(2000);
Serial.println();
}
void loop() {
//printTemp();
printFreq();
//delay(1000);
}
void printTemp(){
Serial.print("Ambient = ");
Serial.print(mlx.readAmbientTempC());
Serial.print("*C\tObject = ");
Serial.print(mlx.readObjectTempC());
Serial.println("*C");
}
void printFreq(){
pox.update();
if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
Serial.print("Heart rate:");
Serial.print(pox.getHeartRate());
Serial.print("bpm / SpO2:");
Serial.print(pox.getSpO2());
Serial.println("%");
printTemp();
tsLastReport = millis();
}
}
Moderador:
Por favor, lee las Normas del foro y edita tu código/error usando etiquetas de código.
Ve a edición, luego selecciona todo el código que has publicado, lo cortas y click en </>
Qué módulo no te da valores correctas?
Lo has aislado, o sea, usaste algún código de ejemplo de la librería?
Gracias por responder.
Si, ya probé los sensores individualmente y si funcionan correctamente. Pero a la hora de unirlos es cuando el MAX30100 (oxímetro) no me da valores correctos mientras que el MLX90614 (temperatura) sí.
Prueba seteando el clock de wire a 400K.
Prueba invirtiendo el orden de la inicialización (begin) de los sensores.
Saludos
Que raro que tengas que poner esto
Wire.begin();
A ver como va esto?
#include <Wire.h>
#include "MAX30100_PulseOximeter.h"
#include <Adafruit_MLX90614.h>
#define I2C_SDA 21
#define I2C_SCL 22
#define REPORTING_PERIOD_MS 1000
uint8_t bm280_address = 0x76;
uint8_t max30100_address = 0x57;
uint8_t irmlx90614_address = 0x5A;
uint32_t tsLastReport, tempLastReport;
Adafruit_MLX90614 mlx = Adafruit_MLX90614();
PulseOximeter pox;
void setup() {
Serial.begin(9600);
Wire.begin();
mlx.begin();
pox.begin();
Serial.println();
}
void loop() {
printTemp();
printFreq();
}
void printTemp(){
if (millis() - tempLastReport > REPORTING_PERIOD_MS) {
Serial.print("Ambient = ");
Serial.print(mlx.readAmbientTempC());
Serial.print("*C\tObject = ");
Serial.print(mlx.readObjectTempC());
Serial.println("*C");
tempLastReport = millis();
}
}
void printFreq(){
pox.update();
if (millis() - tsLastReport > REPORTING_PERIOD_MS) {
Serial.print("Heart rate:");
Serial.print(pox.getHeartRate());
Serial.print("bpm / SpO2:");
Serial.print(pox.getSpO2());
Serial.println("%");
printTemp();
tsLastReport = millis();
}
}
system
Closed
October 12, 2022, 6:19pm
6
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.