hola foro!! estoy teniendo problemas nuevamente con el max30100 un pulsioximetro, este presenta los valores en un lcd 16x2 hasta ahi todo bien, pero en cuanto intento agregar un pulsador y envio todo a una fuancion (lo del loop) deja de funcionar, envio programa e imagenes del proyecto
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h>
#include "MAX30100_PulseOximeter.h"
int p,pulsado;
#define Raporlama_hizi 1000
PulseOximeter pox;
void pulso (void);
// I2C LCD modülümüzü 0x27 adresine ayarlıyoruz ve kullanacağımız ekran tipini 16x2 olarak belirliyoruz.
LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7,3,POSITIVE);
uint32_t SonKayit = 0;
// Pulse algıladığında bu fonksiyon çalışıyor.
void atimalgilandi()
{
Serial.println("Atım Algılandı ...");
lcd.setCursor(15,1);
lcd.print("*");
}
void setup()
{
Serial.begin(9600);
lcd.begin(16,2);
pinMode (13,INPUT);
// LCD Ekranın Arkaplan ışığını açıyoruz.
lcd.backlight();
delay(1500);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("SpO2 Sensor");
lcd.setCursor(0,1);
lcd.print("OKUMA PROJESI");
delay(1500);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("SpO2 Sensor");
lcd.setCursor(0,1);
lcd.print("Hazirlaniyor");
delay(2000);
Serial.print("Pulse Oksimetre Sensörü Hazırlanıyor ...");
lcd.clear();
lcd.setCursor(0,0);
// Pulse Oksimetre sensörünü kontrolünü yapıyoruz.
// Arızalar genelde yanlış I2C kablolaması, eksik güç kaynağı nedeniyledir.
if (!pox.begin()) {
Serial.println("BAŞARISIZ");
lcd.print("BASARISIZ");
for(;;);
} else {
Serial.println("TAMAMLANDI");
lcd.print("TAMAMLANDI");
}
delay(500);
// Atım algılandığında geri çağrılacak olan fonksiyon
pox.setOnBeatDetectedCallback(atimalgilandi);
}
void loop ()
{
int i;
if(digitalRead(13)==HIGH)
{
for(i=0;i<1000;i++)
pulso();
}
}
void pulso (void)
{
// Sensöre tarama yapmasını sağlıyoruz.
pox.update();
// Asenkron olarak kalp atış hızı ve oksidasyon seviyelerini okuyoruz
// Her ikisi için de 0 değeri "geçersiz" anlamına gelir
if (millis() - SonKayit > Raporlama_hizi) {
SonKayit = millis();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("HR: ");
lcd.print(pox.getHeartRate());
lcd.print(" bpm");
lcd.setCursor(0,1);
lcd.print("SpO2: ");
lcd.print(pox.getSpO2());
lcd.print("%");
}
}