Bonjour
J'apprends à me servir d'un module de carte microSD et je remarque qu'après avoir écrit dessus depuis mon Arduino UNO, la carte microSD n'accepte plus d'être écrite depuis l'ordi (Ubuntu 16.04). Elle semble en "lecture seule" alors que les droits en écriture sont toujours là. (Selon Ubuntu)
Cependant, je n'arrive même pas à la reformater ou à refaire la table de partition (même en mode root...). Linux me dit que la SD est en lecture seulement...
Mon UNO, lui, arrive à créer de nouveaux fichiers !!!
Quelqu'un saurait pourquoi ?
Merci
Voici mon code :
/** Programme pour tester l'écrire sur une carte SD.
Il est inspiré de ce tutoriel :
https://www.youtube.com/watch?v=M9VvsFL-vZI&t=15s (U=RI)
https://www.youtube.com/watch?v=fpTUT5k0_4o (Procuste pour les brachements)
Ici, j'essaye d'écrire seulement, les informations données par un compteur "compt".
J'y mettrai prochainement des informations utiles. ;-) --> station météo
Sur Arduino MEGA 2560
** MOSI - pin 51
** MISO - pin 50
** CLK - pin 52
** CS - pin 53
Sur Arduino UNO
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 10
**/
// Inclusion de la bibliothèque de lecture/écriture sur une carte SD
#include <SD.h>
// Inclusion de la bibliothèque de contrôle du bus SPI
#include <SPI.h>
// Affectation de broche CS du module SD à la PIN 10
#define CS_PIN 10 // Ne fonctionnait pas depuis la PIN 6 sur un Arduino Nano !!!
// Pourrait être omis si la pin est indiquée lors de l'initialisation --> if (SD.begin(10))
// Création d'un objet (instance de "SD.h") qui s'appellera "monStylo" (Dans le programme d'origine, c'était "monFichier")
// C'est le processus qui sera capable d'écrire dans la mémoire de la SD. En fait, c'est comme créer un stylo !
File monStylo;
int compt = 0; // Création d'une variable pour faire un compteur d'essai.
const int ledTemoin = 3; // Définir la pin où je mettrai la LED qui témoignera de l'écriture sur la SD
int pinBuz = 5; // Définir la pin où je mettrai le buzzer qui fera un "bip"
void setup()
{
Serial.begin(9600); // Initialise le moniteur série.
Serial.println("Initialisation de la carte SD en cours..."); // Affiche ce texte dans le moniteur série.
pinMode(ledTemoin, OUTPUT); // Pour activer la PIN "ledTemoin" en sortie et faire allumer une diode témoinn lors de l'écriture
// histoire de vérifier, même sans moniteur, qu'il écrit quelque-chose.
if (SD.begin()) // Si l'initialisation de la SD réussit
{
Serial.println("Initialisation a reussi !"); // Affiche le texte.
}
else // Si l'initialisation de la SD a échoué
{
Serial.println("L'initialisation a echoue."); // Affiche le texte
return; // Revérifie le "if" ??? / Mais je ne le vois pas faire une boucle... ???
}
}
void loop() {
compt++ ; // Incrémenter le compteur de 1 (= "compt = compt + 1")
monStylo = SD.open("TEST.TXT", FILE_WRITE); // Ouverture (ou création, s'il n'existe pas déjà), en mode écriture, d'un fichier texte.
if (monStylo) // --> Si "monStylo" a bien réussi à ouvrir/créer le fichier .txt
{
monStylo.print("Boucle n° : "); // Écrire le texte dans le fichier
monStylo.println(compt); // Écrire la valeur de la variable compt
digitalWrite(ledTemoin, HIGH); // Allumer la diode "ledTemoin" pour montrer qu'il écrit
tone(pinBuz, 500, 50); // "Bip" témoin
monStylo.close(); // Fermer le fichier (Rebouche le stylo :-) )
Serial.print("Écriture terminée ! C'était la boucle : "); // Prévient dans le moniteur série que l'écriture est terminée
Serial.println(compt); // Prévient dans le moniteur série que l'écriture est terminée
}
else // --> Si "monStylo" n'a pas réussi à ouvrir le fichier .txt
{
Serial.println("N'arrive pas à écrire..."); // Prévient dans le moniteur série que l'écriture a échoué
}
digitalWrite(ledTemoin, LOW); // Éteindre la diode "ledTemoin"
delay (1000);
}