Exit status 1 con sensore per BPM

Ciao a tutti, sto provando a ottenere la frequenza dei battiti cardiaci tramite un arduino nano esp32 e un sensore pulsesensor (quindi utilizzando la libreria “PulseSensorPlayground”).

Nel momento in cui svolgo l’invio del codice alla scheda (codice proveniente dall’esempio della libreria) mi appare questo errore:


C:\Users\PC\Documents\Arduino\libraries\PulseSensor_Playground\src\PulseSensorPlayground.cpp: In member function 'bool PulseSensorPlayground::setupInterrupt()':
C:\Users\PC\Documents\Arduino\libraries\PulseSensor_Playground\src\PulseSensorPlayground.cpp:493:37: error: too few arguments to function 'hw_timer_t* timerBegin(uint8_t, uint16_t, bool)'
     sampleTimer = timerBegin(1000000); // 1MHz ticker, 1uS tick period
                                     ^
In file included from C:\Users\PC\AppData\Local\Arduino15\packages\arduino\hardware\esp32\2.0.18-arduino.5\cores\esp32/esp32-hal.h:92,
                 from C:\Users\PC\AppData\Local\Arduino15\packages\arduino\hardware\esp32\2.0.18-arduino.5\cores\esp32/Arduino.h:36,
                 from C:\Users\PC\Documents\Arduino\libraries\PulseSensor_Playground\src/PulseSensorPlayground.h:21,
                 from C:\Users\PC\Documents\Arduino\libraries\PulseSensor_Playground\src\PulseSensorPlayground.cpp:17:
C:\Users\PC\AppData\Local\Arduino15\packages\arduino\hardware\esp32\2.0.18-arduino.5\cores\esp32/esp32-hal-timer.h:33:14: note: declared here
 hw_timer_t * timerBegin(uint8_t timer, uint16_t divider, bool countUp);
              ^~~~~~~~~~
C:\Users\PC\Documents\Arduino\libraries\PulseSensor_Playground\src\PulseSensorPlayground.cpp:494:51: error: too few arguments to function 'void timerAttachInterrupt(hw_timer_t*, void (*)(), bool)'
     timerAttachInterrupt(sampleTimer, &onInterrupt);
                                                   ^
In file included from C:\Users\PC\AppData\Local\Arduino15\packages\arduino\hardware\esp32\2.0.18-arduino.5\cores\esp32/esp32-hal.h:92,
                 from C:\Users\PC\AppData\Local\Arduino15\packages\arduino\hardware\esp32\2.0.18-arduino.5\cores\esp32/Arduino.h:36,
                 from C:\Users\PC\Documents\Arduino\libraries\PulseSensor_Playground\src/PulseSensorPlayground.h:21,
                 from C:\Users\PC\Documents\Arduino\libraries\PulseSensor_Playground\src\PulseSensorPlayground.cpp:17:
C:\Users\PC\AppData\Local\Arduino15\packages\arduino\hardware\esp32\2.0.18-arduino.5\cores\esp32/esp32-hal-timer.h:40:6: note: declared here
 void timerAttachInterrupt(hw_timer_t *timer, void (*fn)(void), bool edge);
      ^~~~~~~~~~~~~~~~~~~~
C:\Users\PC\Documents\Arduino\libraries\PulseSensor_Playground\src\PulseSensorPlayground.cpp:495:5: error: 'timerAlarm' was not declared in this scope
     timerAlarm(sampleTimer, 2000, true, 0);
     ^~~~~~~~~~
C:\Users\PC\Documents\Arduino\libraries\PulseSensor_Playground\src\PulseSensorPlayground.cpp:495:5: note: suggested alternative: 'timerStart'
     timerAlarm(sampleTimer, 2000, true, 0);
     ^~~~~~~~~~
     timerStart

Uso la libreria PulseSensor Playground alla versione 2.4.0 nella cartella: C:\Users\PC\Documents\Arduino\libraries\PulseSensor_Playground 
exit status 1

Compilation error: exit status 1

Potreste aiutarmi a capire cortesemente?

Grazie in anticipo

Cosi a naso direi che la libreria in questione è compatibile solo con i core ESP32 più recenti.

La Arduino Nano-ESP32 usa di default ancora il vecchio 2.0.18, mentre l'ultimo disponibile è il 3.3.5.
Nel passaggio alla major release 3.x.x sono cambiate moltissime API e quindi se la libreria non supporta la vecchia versione 2.x.x devi passare ad altro, oppure usare il Nano-ESP32 con il core di casa Espressif.

Dovrebbe essere possibile senza troppi problemi (la scheda risulta tra quelle disponibili).

Se utilizzassi una versione più vecchia della libreria?

Magari invece della versione 2.4, la 1.9 in giù o non cambia nulla?

Nel repository della libreria non ci sono molte informazioni sui cambiamenti introdotti tra una versione e la successiva.

La versione 2.0.17 del core ESP32 (ultima v2.x "ufficiale" Espressif) è stata rilasciata nei primi mesi del 2024, magari prova con una versione che sia stata rilasciata intorno a quella data, anche se io abbandonerei il core Arduino che non viene più mantenuto ormai da tempo, passando a quello Espressif se fossi in te.

1 Like