Hola, si soy yo de nuevo, he estado probando el sensor GY-MAX30102 pero el codigo al llegar a la parte que debe inicializar el sensor, se reinicia desde cero y entra en un bucle infinito; (enciende, muestra la animacion en la pantalla, llega a la configuracion del sensor y se reinicia y etc... ) he visto que para que no pase esto, escriben la configuracion al final de void setup()
pero eso tampoco funciona.

Prueba con los ejemplos de la librería que usas así descartas un problema del sensor.
Por otro lado, no pretendas que seamos adivinos porque no estamos ni en tu cabeza ni frente a tu escritorio.
No nos cuentes lo que hace o deja de hacer sin adjuntar el código y un esquema de tus conexiones (siempre ayuda).
he probado con ejemplos y si funciona, la conexiones son las siguientes:
Sensor ----------- Arduino
VIN----------------- VCC (5V)
GND -------------- GND
SDA-----------------A4 (pin analógico)
SCL ---------------- A5 (pin analógico)
INT ----------------- sin conexión
el código no lo puedo dar ya que mi computadora se ha "frito" (le hice un corto en un puerto USB) pero apenas lo recupere lo voy a publicar.
La librería que estoy usando es la pulse and proximity sensor MAX3010x de sparkFun
tengo que reconocer que he sido MinimoEsfuerzo y que no he publicado la informacion necesaria ![]()
Si con los ejemplos funciona entonces el problema es del código que no puedes subir.
Cuando arregles el problema del puerto seguimos. ![]()
ok, estoy escribiendo el código (no pude recuperarlo) desde cero, lo mas parecido posible al anterior.
te dejo un enlace a un video escribiendo el programa:
Programación (parte 1)
también posteo el código hasta donde se bloquea:
#include <Adafruit_SSD1306.h> // libreria para pantalla
#include <Adafruit_GFX.h> // libreria para Graficos de la pantalla
#include <Wire.h> // libreria para comunicacion I2C
#include <SPI.h> // libreria para comunicacion SPI
#include <RTClib.h> // libreria para RTC (Real Time CLock)
#include "MAX30105.h" // librria para el sensor de pulsos cardiacos
#include "heartRate.h" // algoritmo para medicion de pulsos
Adafruit_SSD1306 oled(128, 64, 9, 10, 11, 13, 12); // declaracion de la pantalla oled
RTC_DS3231 rtc; // declaracion del RTC
MAX30105 sensor; // declaracion de sensor de pulsos cardiacos
#define boton1 5 // boton para navegar por el menù
#define boton2 6 // boton para cerrar las funciones
#define boton3 7 // boton para entrar a las funciones
#define linterna 8 // pin de salida para el LED de la linterna
#define buzzer 3 // Parlante de notificacion
#define zumbador 4 // Motor vibrador para notificar
#define Delay 150 // demora de 0,15 segundos
int chargeOfBatery; // variable entera para medir la carga de la bateria
int medidabateria = A3; // entrada analogica para la medicion de la bateria
int temperatura = A0; // variable para tomar medida de la temperatura
int setMenu = 0; // variable para navegar por el menu
int setSelect = 7; // variable para entrar en el menu
int pulsos = 125; // variable para el Metronomo.
String semana[7] = {"Domingo", "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado"}; // array para mostrar el dia de la semana
/* Funciones:
Reloj, Linterna, Metronomo, informacion de usuario,
Alarma y Control cardiaco;
*/
void setup(){
pinMode(boton1, INPUT); // boton 1, entrada
pinMode(boton2, INPUT); // boton 2, entrada
pinMode(boton3, INPUT); // boton 3, entrada
pinMode(linterna, OUTPUT); // linterna, salida
pinMode(buzzer, OUTPUT); // buzzer, salida
pinMode(zumbador, OUTPUT); // zumbador, salida
//las entradas analogicas no requieren inicializacion.
oled.begin(SSD1306_SWITCHCAPVCC, 0x3C); //inicializacion de la pantalla
Wire.begin(); //inicializacion de el BUS I2C
oled.setTextColor(WHITE); // texto color blanco para la pantalla
oled.clearDisplay(); //elimina el buffer de la pantalla
if(! rtc.begin()){
oled.setCursor(0, 16); // lugar de donde se quiere escribir
oled.setTextSize(2); // tamaño del texto
oled.println(F(":(")); // emoji de cara triste
oled.setTextSize(1); // tamaño del texto
oled.println(F("RTC no encontrado, verifique conexiones, pulse boton 2 para continuar.")); // mensaje de error
oled.print(F("0x68I2C_NOT_FOUNDED")); // codigo de error
digitalWrite(zumbador, HIGH); // zumbador, encendido.
delay(500); // espera de 0,5 segundos
digitalWrite(zumbador, LOW); // zumbador, apagado.
while(digitalRead(boton2) == LOW); // mientras boton2 no presionado, nada.
}
sensor.setup(65); // Brillo de led para medicion
sensor.setPulseAmplitudeRed(0xA1); // intensidad del led
sensor.setPulseAmplitudeGreen(0x0); // led verde, apagado
// al llegar a estas lineas de codigo de arriba, se resetea;
}
void loop(){
// no puedo escribir nada; no se ejecuta
}
lo estoy escribiendo desde una computadora prestada; no la mia.
![]()
Olvidaste iniciar el sensor con sensor.begin()
pero se supone que con Wire.begin(); se inicia el sensor; pero de todas maneras lo voy a probar.
Si funcionò, pero habia que escribirle un extra:
void setup() {
Wire.begin();
sensor.begin(Wire, I2C_SPEED_FAST);
sensor.setup(65); // Brillo de led para medicion
sensor.setPulseAmplitudeRed(0xA1); // intensidad del led
sensor.setPulseAmplitudeGreen(0x0); // led verde, apagado
}
No, se inicia la interfaz I2C.
ah ok, Muchas gracias
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.