Hallo zusamm.
Projekt erklärung:
Der MPU-6050 soll mit hilfe des UP501 die Kurvenlage und die Position eines Motorrads auf der SD-Karte speichern.Wunsch programm,mit dem man die Messwerte auf SD-Karte speichern.Hier ist meine gesammte Code
Vielen Dank im Voraus
#include <SoftwareSerial.h>
#include <SPI.h>
#include <SD.h>
#include "Wire.h"
#include "I2Cdev.h"
#include "MPU6050.h"
const int chipSelect = 4;
char GPS;
MPU6050 mpu;
int16_t ax, ay, az;
int16_t gx, gy, gz;
SoftwareSerial mySerial(2, 3); // RX, TX ... the 10 is what matters based on my suggested wiring above
#define PMTK_SET_NMEA_UPDATE_1HZ "$PMTK220,1000*1F"
#define PMTK_SET_NMEA_UPDATE_5HZ "$PMTK220,200*2C"
#define PMTK_SET_NMEA_UPDATE_10HZ "$PMTK220,100*2F"
// turn on only the second sentence (GPRMC)
#define PMTK_SET_NMEA_OUTPUT_RMCONLY "$PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*29"
// turn on ALL THE DATA
//#define PMTK_SET_NMEA_OUTPUT_ALLDATA "$PMTK314,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0*28"
void setup()
{
Wire.begin();
Serial.begin(115200);
Serial.println("Adafruit MTK3329 NMEA test!");
Serial.print("Initializing SD card...");
// see if the card is present and can be initialized:
if (!SD.begin(chipSelect)) {
Serial.println("Card failed, or not present");
// don't do anything more:
return;
}
Serial.println("card initialized.");
Serial.println("Initialize MPU");
mpu.initialize();
Serial.println(mpu.testConnection() ? "Connected" : "Connection failed");
// 9600 NMEA is the default baud rate
mySerial.begin(9600);
// uncomment this line to turn on only the "minimum recommended" data for high update rates!
mySerial.println(PMTK_SET_NMEA_OUTPUT_RMCONLY);
// uncomment this line to turn on all the available data - for 9600 baud you'll want 1 Hz rate
//mySerial.println(PMTK_SET_NMEA_OUTPUT_ALLDATA);
// Set the update rate
// 1 Hz update rate
//mySerial.println(PMTK_SET_NMEA_UPDATE_1HZ);
// 5 Hz update rate- for 9600 baud you'll have to set the output to RMC only (see above)
mySerial.println(PMTK_SET_NMEA_UPDATE_5HZ);
// 10 Hz update rate - for 9600 baud you'll have to set the output to RMC only (see above)
//mySerial.println(PMTK_SET_NMEA_UPDATE_10HZ);
File dataFile = SD.open("GPS.txt", FILE_WRITE);
dataFile.println("");
dataFile.println("");
dataFile.println("");
dataFile.println("");
dataFile.println("##############################################################################################################");
dataFile.println("");
dataFile.println("#################");
dataFile.println("##Neue Messung###");
dataFile.println("#################");
dataFile.println("ax;ay;az;gx;gy;gz;ms");
dataFile.close();
}
/*
void loop() // run over and over
{
if (mySerial.available()) {
GPS = (char)mySerial.read();
Serial.print(GPS);
File dataFile = SD.open("GPS.txt", FILE_WRITE);
dataFile.print(GPS);
dataFile.close();
}
if (Serial.available()) {
mySerial.print((char)Serial.read());
}
}
*/
File dataFile;
void loop() // run over and over
{
if (mySerial.available()) {
GPS = (char)mySerial.read();
dataFile.print(GPS);
Serial.print(GPS);
if (GPS == '\n') // bei erkanntem Zeilenende
{
mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);
dataFile.print(ax); dataFile.print("\t"); Serial.print(ax); Serial.print("\t");
dataFile.print(ay); dataFile.print("\t"); Serial.print(ay); Serial.print("\t");
dataFile.print(az); dataFile.print("\t"); Serial.print(az); Serial.print("\t");
dataFile.print(gx); dataFile.print("\t"); Serial.print(gx); Serial.print("\t");
dataFile.print(gy); dataFile.print("\t"); Serial.print(gy); Serial.print("\t");
dataFile.print(gz); dataFile.print("\t"); Serial.print(gz); Serial.print("\t");
dataFile.print(millis()); dataFile.print("\t"); Serial.print(millis()); Serial.print("\t");
// hier ggf. Funktion aufrufen zur Ausgabe von X, Y, Z
dataFile.close(); // Datei schließen
dataFile = SD.open("GPS.txt", FILE_WRITE); // und sofort wieder öffnen
}
}
if (Serial.available()) {
mySerial.print((char)Serial.read());
}
}