#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#include <SD.h>
// Variables utilisées pour la SD Card
#define sdCardPinChipSelect 10 // Le lecteur de SD card sera branché sur les pins 10 (CS), 11 (MOSI), 12 (MISO), et 13 (SCK)
#define nomDuFichier "fic-test.txt" // Format 8.3 (c'est à dire 8 lettres maximum pour le nom, et optionnellement 3 pour l'extension)
#define texteDeTest "Blabla écrit dans un fichier logé sur la carte SD, via un Arduino !"
File monFichier;
File data
Adafruit_MPU6050 mpu;
void setup(void) {
Serial.begin(115200);
while (!mpu.begin()) {
Serial.println("MPU6050 not connected!");
delay(1000);
}
Serial.println("MPU6050 ready!");
// ------------------------------------------------------------------
// Étape 1 : test si la carte SD est bien accessible depuis l'arduino
// ------------------------------------------------------------------
Serial.println(F("Étape 1 : Initialisation de la carte SD :"));
if (!SD.begin(sdCardPinChipSelect)) {
Serial.println(F("Échec de l'initialization !"));
while (1); // Boucle infinie (stoppage du programme)
}
Serial.println(F("Initialisation terminée."));
Serial.println();
// ------------------------------------------------------------------
// Étape 3 : écriture de données dans le fichier 'nomDuFichier'
// ------------------------------------------------------------------
Serial.println(F("Étape 3 : écriture de données dans le fichier '" nomDuFichier "' :"));
monFichier = SD.open(nomDuFichier, FILE_WRITE);
if (monFichier) {
Serial.println(F("Écriture de la chaîne suivante, dans le fichier '" nomDuFichier "' : « " texteDeTest " »"));
monFichier.println(texteDeTest); // Écriture dans le fichier
monFichier.close(); // Fermeture du fichier
Serial.println("Écriture terminée.");
}
else {
Serial.println(F("Échec d'ouverture en écriture, pour le fichier '" nomDuFichier "', sur la carte SD !"));
while (1); // Boucle infinie (arrêt du programme)
}
Serial.println();
// ------------------------------------------------------------------
// Étape 4 : lecture des données précédemment enregistrées
// ------------------------------------------------------------------
Serial.println(F("Étape 4 : lecture des données précédemment enregistrées dans le fichier '" nomDuFichier "' :"));
monFichier = SD.open(nomDuFichier, FILE_READ);
if (monFichier) {
Serial.println(F("Affichage du contenu du fichier '" nomDuFichier "', ci-après."));
Serial.write("-> Texte présent dans le fichier = ");
while (monFichier.available()) { // Lecture, jusqu'à ce qu'il n'y ait plus rien à lire
Serial.write(monFichier.read()); // ... et affichage sur le moniteur série !
}
monFichier.close(); // Fermeture du fichier
Serial.println(F("Lecture terminée."));
}
else {
Serial.println(F("Échec lors de l'ouverture en lecture du fichier '" nomDuFichier "' sur la carte SD !"));
while (1); // Boucle infinie (arrêt du programme)
}
Serial.println();
// ------------------------------------------------------------------
// Fin du programme de test !
// ------------------------------------------------------------------
Serial.println(F("Fin !"));
}
sensors_event_t event;
void loop() {
data = SD.open(data, FILE_WRITE);
mpu.getAccelerometerSensor()->getEvent(&event);
if (monFichier) {
monFichier.print("[");
monFichier.print(millis());
monFichier.print("] X: ");
monFichier.print(event.acceleration.x);
monFichier.print("] Y: ");
monFichier.print(event.acceleration.y);
monFichier.print("] Z: ");
monFichier.print(event.acceleration.z);
monFichier.println(" m/s^2");
monFichier.close();
monFichier = SD.open(nomDuFichier, FILE_READ);
while (monFichier.available()) {
Serial.write(monFichier.read());
}
}
/*
else {
Serial.println(F("Échec d'ouverture en écriture, pour le fichier '" nomDuFichier "', sur la carte SD !"));
while (1); // Boucle infinie (arrêt du programme)
}
Serial.println();
Serial.print("[");
Serial.print(millis());
Serial.print("] X: ");
Serial.print(event.acceleration.x);
Serial.print(", Y: ");
Serial.print(event.acceleration.y);
Serial.print(", Z: ");
Serial.print(event.acceleration.z);
Serial.println(" m/s^2");
delay(500);
*/
}