Sensore MPU6050 con scrittura di log su SD

Salve a tutti sono docente di una scuola superiore e stò realizzando un piccolo progetto per un "Sismografo" sfruttando ArduinoNano.
Premetto che nei miei esperimenti sono riuscito a salvare su SD i dati provenienti dal sensore MPU6050, ma non usando la libreria MPU6050_tockn.h che ho voluto usare nel codice riportato sotto.

Il mio problema, che ho evidenziato con un commento nel codice, arriva quando devo scrivere sulla SD (<myFile.println("PROVA");>).
Se non tento di scrivere sulla SD tutto "funziona", nel momento che inserisco la scrittura su SD tutto si blocca e addirittura la scheda ArduinoNano sembra bloccata e devo togliere l'alimentazione e rimetterla per poter modificare lo sketch!!
Ripeto che scrivo e leggo sulla SD e leggo regolarmente i dati dal sensore se uso un altro metodo ma per altri motivi non posso usare quel metodo....(se poi vi interessa ve lo spiegherò).
Non so se sono stato chiaro e se il mio problema riscontrerà interesse ma ringrazio chiunque aticipatamente!

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

MPU6050 mpu6050(Wire);
File myFile;
long timer = 0;

void setup() {
  Serial.begin(9600);
  Wire.begin();
  mpu6050.begin();
  Serial.print("Initializing SD card...");

  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    while (1);
  }
  Serial.println("initialization done.");
}

void loop() {
  mpu6050.update();
  if(millis() - timer > 1000){
    Serial.print("accX : ");Serial.print(mpu6050.getAccX());
    Serial.print("\taccY : ");Serial.print(mpu6050.getAccY());
    Serial.print("\taccZ : ");Serial.println(mpu6050.getAccZ());
    myFile = SD.open("test.txt", FILE_WRITE);
    delay(20);
      if (myFile) {
         Serial.println("Writing to test.txt...");
         delay(1000);

         myFile.println("PROVA"); // *Togliendo questa riga di codice il progetto "funziona" come si inserisce questa riga tutto si blocca rendendo difficoltoso (devono essere fatti diversi tentativi) anche il caricamento di nuovi sketch.*

         myFile.close();
         delay(2);
       } 
    
    timer = millis();
    
  }

}

Buongiorno e benvenuto nella sezione Italiana del forum,

cortesemente, come prima cosa, leggi attentamente il REGOLAMENTO di detta sezione, (... e, per evitare future possibili discussioni/incomprensioni, prestando molta attenzione al punto 15), dopo di che, come da suddetto regolamento (punto 16.7), fai la tua presentazione NELL'APPOSITA DISCUSSIONE spiegando bene quali esperienze hai in elettronica e programmazione, affinché noi possiamo conoscere la tua esperienza ed esprimerci con termini adeguati.

Grazie,

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposita discussione, nel rispetto del succitato regolamento nessuno ti risponderà (eventuali risposte o tuoi ulteriori post, verrebbero temporaneamente nascosti), quindi ti consiglio di farla al più presto. :wink:

Non conosco quella libreria e con mpu6050 ho fatto solo qualche esperimento molto misero, quindi la butto lì senza troppa convinzione...
Che succede se metti l'update dentro l'if del millis?

Ringrazio della celere risposta, leggendo il regolamento non ho capito (essendo anche nuovo) che ci fosse una discussine dedicata all'inserimento della presentazione personale infatti ho cercato e trovato sotto le impostazioni la gestione del mio profilo dove pensavo che fosse il posto giusto dove fare una mia descrizione.
Ho provveduto a inviare la mia presentazione nel posto giusto.

GRAZIE!
Succede che non si blocca più, leggo dal sensore e scrive "PROVA" sulla SD!!
Premetto che l'UPADATE era li come da esempio della libreria che ho preso...

Resta il fatto che non dormirò sonni tranquilli fino a che non ho capito il motivo di questa cosa!!!
Non ha senso logico guardando solo i metodi usati per interagire con le varie librerie.

Ora proverò ad inserire il resto del codice ("che avevo escluso per restringere il mio problema") e se mi consentite "Incrocio le dita".....

Messo in quel modo (fuori dall'if) viene richiamato a raffica... Magari manda in crisi l'mpu...
Tra l'altro fare l'update continuo anche se usi i valori solo una volta al secondo non credo abbia molto senso...

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.