Das Sensorprogramm in ein SD Karten Programm übertragen

Hey!

Ich sitze an einem Projekt mit dem Pulsesensor. Da ich die Daten gerne auf einer SD Karte speichern würde, muss ich das Programm vom Pulsesensor in das der SD Karte einfügen, da ich ansonsten nur mir nutzlose zahlen bekomme. Habe jetzt schon mehrmals verschiedene Möglichkeiten ausprobiert nur hat es nie funktioniert. Vielleicht kann mir hier jemand helfen.
Danke im Vorraus!

Das wäre das Programm vom Pulsesensor

#define USE_ARDUINO_INTERRUPTS true    
#include <PulseSensorPlayground.h>     

const int PulseWire = 0;       
int Threshold = 511;          
                               
PulseSensorPlayground pulseSensor; 
void setup() {   
  Serial.begin(9600);         
  pulseSensor.analogInput(PulseWire);   
  pulseSensor.setThreshold(Threshold);   

   if (pulseSensor.begin()) {
    Serial.println("We created a pulseSensor Object !");   
  }
}

void loop() {

 int myBPM = pulseSensor.getBeatsPerMinute();   

if (pulseSensor.sawStartOfBeat()) {            
 Serial.println("♥  A HeartBeat Happened ! ");
 Serial.print("BPM: ");                         
 Serial.println(myBPM);                        
}
  delay(20);                   
}

und das für das SD Karten Modul, mit dem ich gearbeitet habe: (vielleicht ist das ja auch das Falsche?)

#include <SPI.h>
#include <SD.h>

const int chipSelect = 4;

void setup() {
  Serial.begin(9600);
  while (!Serial) {
    ; 
  }


  Serial.print("Initializing SD card...");

  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
   
    while (1);
  }
  Serial.println("card initialized.");
}

void loop() {
  String dataString = "";

  for (int analogPin = 0; analogPin < 3; analogPin++) {
    int sensor = analogRead(analogPin);
    dataString += String(sensor);
    if (analogPin < 2) {
      dataString += ",";
    }
  }

  File dataFile = SD.open("datalog.txt", FILE_WRITE);

  if (dataFile) {
    dataFile.println(dataString);
    dataFile.close();
    
    Serial.println(dataString);
  }
  else {
    Serial.println("error opening datalog.txt");
  }
}

Wieso bekommst du nutzlose Daten des Sensor auf der SD-Karte ?
Dann machst du etwas falsch.
Du brauchst dazu nicht das Programm auf der SD-Karte.

Das Programm des Sensors zählt die Gemessenen Werte aus und ermittelt daraus einen Puls. Die Werte an sich helfen mir nicht viel, da ich daraus keinen Puls rauslesen kann.

So wie ich den Sketch lese, wird der Puls doch seriell ausgegeben. Wenn der nicht stimmt, wird an deinem Aufbau was falsch sein.
Die sd-Karte hilft dir da nicht viel. Sie nutzt dir nur was, wenn du die Pulswerte über einen längeren Zeitraum speichern willst.

Genau das will ich tun :wink:
Damit das ganze auch ohne PC funktioniert. Die Ausgabe am Seriellen Monitor funktioniert auch einwandfrei.

Die Ausgabe am Seriellen Monitor funktioniert auch einwandfrei.

Ob du in eine Datei druckst, oder auf die serielle Schnittstelle, ist dem *.print() doch völlig egal.
Sowohl File, als auch Serial nutzen das selbe Interface

Ich sehe also dein Problem nicht......

Es sei denn, wir sollen die Arbeit für dich machen.

Hi

Sein Problem wird sein, daß Er beim Puls-Sketch in Seinem Puls-Rhythmus angezeigt bekommt, wie viele Schläge Er akut pro Minute hat.
Denke, Er will eher, die aktuelle Zeit zu diesem Herzschlag und dort ggf. die BPM als Zusatz-Schmankerl.
Für die Zeit wäre millis() vll. ein Blick wert.
Für 49,batsch Tage wäre Das ausreichend, wenn's länger laufen soll, musst Du einen eigenen Zähler mithalten oder den Überlauf von millis() rausrechnen.

MfG

Vielleicht sollte der TE mal genau sagen, was er denn erreichen möchte.

Ich bekomme vom Sensorprogramm in den Seriellen Plotter dann die Ausgabe um wie viel Uhr ich welchen Puls (BPM) habe. Ich möchte aber, dass ich diese Informationen auch ausgegeben bekomme ohne einen PC. Deswegen hatte ich den Gedanken mit der SD Karte, sodass die Messergebnisse dann auf die Karte gespeichert werden und ich sie nachträglich auswerten kann. Nur schaffe ich es mit meinem geringen Anfängerwissen nicht, das Programm des Sensors so umzuschreiben, dass die Daten auf die SD Karte geschrieben werden...

Stelle mich wohl ganz schön doof an

Stelle mich wohl ganz schön doof an

Hmmm...

Ich sachs mal anders:

Wenn du Serial.println("irgendwas") in deinem Programm schreiben kannst, was hindert dich daran stattdessen, oder zusätzlich datei.println("irgendwas") zu schreiben?
(natürlich muss datei vorher vorbereitet/geöffnet werden)

Hi,

hier dürften genug Beispiele dabei sein, wie es gehen kann: SdFat/examples at master · greiman/SdFat · GitHub

Gruß André

noahlpaka:
Ich bekomme vom Sensorprogramm in den Seriellen Plotter dann die Ausgabe um wie viel Uhr ich welchen Puls (BPM) habe.

Die Zeitangabe wird vom Seriellen Plotter beigesteuert. Bei der SD musst Du die Dir selbst besorgen (z.B. RTC DS3231).

Gruß Tommy