eu acabei de começar a programar no arduino e estou tentando fazer uma luva com sensor cardiaco que por sua vez manda os batimentos por minuto pra um display oled sh1106 1.3 128x64 7pin spi.
O problema é que os BPM começam a subir pra 232~ e não saem desse valor , por algum motivo que eu desconheço o sensor volta a funcionar normalmente sem o display.
como que eu conserto isso ?
nota: o pino reset do display esta ligado direto no 5v
#include <U8glib.h>
#define USE_ARDUINO_INTERRUPTS true
#include <PulseSensorPlayground.h>
const int PulseWire = A0;
const int LED13 = 13;
const int Threshold = 375;
const int pinSCK = 4;
const int pinMOSI = 5;
const int pinCS = 6;
const int pinDC = 7;
int bpm = 0;
PulseSensorPlayground pulseSensor;
U8GLIB_SH1106_128X64 SH1106_Display( 4, 5, 6, 7 );
void DrawHeartBeat( int pulseBPM )
{
char
szBpm[10];
SH1106_Display.setFont ( u8g_font_courB12);
SH1106_Display.drawStr (8, 15 , " MG-MARK-1 ");
SH1106_Display.setFont ( u8g_font_courB12);
SH1106_Display.drawStr (3,54 , "BPM:");
SH1106_Display.drawFrame(0, 0, 128, 64);
SH1106_Display.drawFrame(72 ,41, 50, 16);
sprintf( szBpm, "%d", pulseBPM );
SH1106_Display.drawStr( 40,54, szBpm );
SH1106_Display.drawBox( 74 ,44, 14, 10);
SH1106_Display.drawBox( 90,44, 14, 10);
SH1106_Display.drawBox( 106 ,44, 14, 10);
}
void setup(void)
{
SH1106_Display.setFont(u8g_font_courB12);
Serial.begin(9600);
pulseSensor.analogInput(PulseWire);
pulseSensor.blinkOnPulse(LED13);
pulseSensor.setThreshold(Threshold);
//
if (pulseSensor.begin())
Serial.println(" pulseSensor activated ");
}//setup
void loop(void)
{
UpdateBPM();
UpdateDisplay();
}
void UpdateBPM( void )
{
static unsigned long
timeUpdate = 0;
unsigned long
timeNow;
timeNow = millis();
if ( (timeNow - timeUpdate) < 50 )
return;
timeUpdate = timeNow;
bpm = UpdateHeartRate();
if ( bpm >= Threshold )
digitalWrite( LED13, HIGH );
else
digitalWrite( LED13, LOW );
}
void UpdateDisplay( void )
{
static unsigned long
timeUpdate = 0;
unsigned long
timeNow;
timeNow = millis();
if ( (timeNow - timeUpdate) < 250 )
return;
timeUpdate = timeNow;
SH1106_Display.firstPage();
do
{
DrawHeartBeat( bpm );
Serial.print("BPM: ");
Serial.println( bpm );
} while ( SH1106_Display.nextPage() );
}
int UpdateHeartRate( void )
{
return ( pulseSensor.getBeatsPerMinute() );
}