Arduino+ Physik Programmierung: hat jemand zwei Programme einmal um Daten wie Umdrehungszahl und Winkelgeschwindigkeit zu sammeln?

4 Antworten

Schau auf YouTube oder github

dies haben für mir funktioniert:

für die datenmesser esp:

#include <Wire.h>

#include <SoftwareSerial.h>

// HC12 Pin-Konfiguration

#define HC12_TX 17

#define HC12_RX 16

SoftwareSerial hc12(HC12_TX, HC12_RX);

// ADXL345 I2C-Adresse

#define ADXL345_ADDR 0x53

void setup() {

  Serial.begin(115200);       // Serieller Monitor

  hc12.begin(9600);           // HC12 Baudrate

  Wire.begin();               // I2C starten

  // ADXL345 initialisieren

  Wire.beginTransmission(ADXL345_ADDR);

  Wire.write(0x2D);           // Power-Control-Register

  Wire.write(0x08);           // Messmodus aktivieren

  Wire.endTransmission();

}

void loop() {

  // Winkelgeschwindigkeit vom ADXL345 lesen

  int16_t x, y, z;

  readADXL345(x, y, z);

  // Daten an HC12 senden

  String data = String(x) + "," + String(y) + "," + String(z);

  hc12.println(data);

  Serial.println("Gesendet: " + data);

  delay(100); // Sendeintervall

}

void readADXL345(int16_t &x, int16_t &y, int16_t &z) {

  Wire.beginTransmission(ADXL345_ADDR);

  Wire.write(0x32); // Startadresse der Daten

  Wire.endTransmission(false);

  Wire.requestFrom(ADXL345_ADDR, 6, true);

  if (Wire.available() == 6) {

    x = Wire.read() | (Wire.read() << 8);

    y = Wire.read() | (Wire.read() << 8);

    z = Wire.read() | (Wire.read() << 8);

  }

}

für den datenspeicher esp:

#include <SdFat.h>

// HC12 Pin-Konfiguration

#define HC12_TX 17

#define HC12_RX 16

// Puffergröße für eingehende Daten

#define BUFFER_SIZE 100

// SD-Karte Objekt

SdFat SD;

// SD-Karten Konfiguration

#define SD_CONFIG SdSpiConfig(SS, SHARED_SPI, SD_SCK_MHZ(25))

// Datenpuffer

char dataBuffer[BUFFER_SIZE];

void setup() {

  Serial.begin(115200); // Serieller Monitor

  Serial2.begin(9600, SERIAL_8N1, HC12_RX, HC12_TX); // HardwareSerial für HC12

  Serial.println("Initialisiere SD-Karte...");

  // SD-Karte initialisieren

  if (!SD.begin(SD_CONFIG)) {

    Serial.println("SD-Karte konnte nicht initialisiert werden. Überprüfe die Karte und die Verbindungen.");

    while (1); // Endlosschleife bei Fehler

  }

  Serial.println("SD-Karte erfolgreich initialisiert.");

}

void loop() {

  // Daten von HC12 empfangen

  if (Serial2.available()) {

    size_t index = 0;

    unsigned long startMillis = millis(); // Timeout für langsame Daten

    while (Serial2.available() && index < BUFFER_SIZE - 1) { // Platz für Null-Terminierung lassen

      char c = Serial2.read();

      // Nur druckbare Zeichen und Zeilenendezeichen akzeptieren

      if (isPrintable(c) || c == '\n') {

        dataBuffer[index++] = c;

      }

      // Prüfe auf Nachrichtenende

      if (c == '\n') {

        break;

      }

      // Timeout prüfen

      if (millis() - startMillis > 1000) { // 1 Sekunde Timeout

        Serial.println("Timeout beim Empfang von Daten!");

        break;

      }

    }

    dataBuffer[index] = '\0'; // Null-Terminierung des Strings

    // Ausgabe auf dem Seriellen Monitor

    if (index > 0) {

      Serial.print("Empfangen: ");

      Serial.println(dataBuffer);

      // Daten in CSV-Datei schreiben

      if (writeToFile("/data.csv", dataBuffer)) {

        Serial.print("Daten gespeichert: ");

        Serial.println(dataBuffer);

      } else {

        Serial.println("Fehler beim Speichern der Daten auf der SD-Karte.");

      }

    } else {

      Serial.println("Keine gültigen Daten empfangen.");

    }

  }

}

// Funktion zum Schreiben in die Datei

bool writeToFile(const char* path, const char* data) {

  File dataFile = SD.open(path, FILE_WRITE);

  if (dataFile) {

    dataFile.println(data);

    dataFile.close();

    return true;

  } else {

    Serial.println("Fehler beim Öffnen der Datei. Stelle sicher, dass die SD-Karte genügend Speicherplatz hat und beschreibbar ist.");

    return false;

  }

}

Im Netz findest Du diverse Code-Schnipsel für Drehzahlmesser mit einem Arduino.

Nein😔

Woher ich das weiß:eigene Erfahrung