6. Utilisation d'une carte SD avec Arduino UNO▲
6-1. Rendre la carte Arduino autonome.▲
La carte Arduino peut très bien être utilisée sans qu'elle soit branchée à l'ordinateur. Dans ce cas, il est nécessaire d'alimenter la carte par l'intermédiaire du port d'alimentation ou bien à l'aide de la borne d'entrée Vin. Les deux ont les mêmes caractéristiques, les tensions d'alimentation recommandées sont comprises entre 7 V et 12 V.
Une fois la carte autonome, il est possible de faire de l'acquisition avec une carte Arduino mobile. Nous avons alors un véritable système embarqué. C'est-à-dire un système autonome capable de réaliser une tâche précise en temps réel.
Dans ce cadre, il devient primordial de pouvoir sauvegarder l'information acquise à l'aide des capteurs branchés sur la carte. Pour cela nous allons utiliser un shield SD (caractéristiques).
6-2. Écrire des données sur la carte SD.▲
La documentation pour la SD Library. Vous y trouverez tous les renseignements nécessaires sur la communication entre le microcontrôleur et la carte SD à travers le bus SPI.
6-2-1. Initialiser la carte SD▲
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
#include
<SPI.h>
// Pour la communication SPI
#include
<SD.h>
// Pour la communication avec la carte SD
void
setup() {
/* Initialisation du port série */
Serial
.begin(9600
);
/* Initialisation de la carte SD */
SD.begin(10
);
}
void
loop() {
// Votre code
}
6-2-2. Écrire sur la carte▲
Pour notre premier exemple, nous allons enregistrer les changements de valeur d'un compteur dans un fichier nommé data.csv.
Avant cela, nous commencerons par créer le fichier, à l'aide la fonction open
DESCRIPTION DE LA FONCTION open
Opens a file on the SD card. If the file is opened for writing, it will be created if it doesn't already exist (but the directory containing it must already exist).
Syntax
SD.open(filepath)
SD.open(filepath, mode)
Parameters
filename : the name the file to open, which can include directories (delimited by forward slashes, ) - char
*
mode (optional) : the mode in which to open the file, defaults to FILE_READ - byte. one of :
- FILE_READ : open the file for reading, starting at the beginning of the file.
- FILE_WRITE : open the file for reading and writing, starting at the end of the file.
Returns
a File object referring to the opened file; if the file couldn't be opened, this object will evaluate to false in a boolean context, i.e. you can test the return value with if
(f).
Dans un souci de simplicité, le choix a été fait d'effacer le fichier data.csv s'il existe déjà afin de ne pas l'allonger à chaque nouvelle acquisition.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
#include
<SPI.h>
#include
<SD.h>
/* Nom du fichier d'enregistrement */
File fichier ;
/* Le compteur */
int
i =
0
;
void
setup() {
Serial
.begin(9600
);
SD.begin(10
);
if
(SD.exists("data.csv"
)) // Si le fichier existe sur la carte
SD.remove("data.csv"
) ; // Il est effacé
fichier =
SD.open("data.csv"
, FILE_WRITE); // Création d'un nouveau fichier
fichier.println("Compteur"
); // Information à écrire sur la carte
fichier.flush (); // On force l'écriture
}
void
loop ( ) {
fichier.println(i);
i =
i +
1
;
fichier.flush();
}
7. Réaliser une acquisition avec un capteur en conservant les données sur la carte SD. Penser à formater vos données au format CSV.
8. Que fait le code suivant ?
2.
3.
4.
int
numero =
0
;
while
(SD.exists("data"
+
String
(numero) +
".csv"
))
numero =
numero +
1
;
fichier =
SD.open("data"
+
String
(numero)+
".csv"
, FILE_WRITE);
9. Comment l'insérer dans votre code pour obtenir l'effet escompté ?