[Guide] Mémoire 2.0+

Un log shield sur carte SD avec horloge RTC et zone de prototypage à pastilles carrées

[Guide] Mémoire 2.0+

Message non lude Laetitia » Jeu 13 Aoû 2015 15:12

La version 2.0 du shield Mémoire offre la possibilité de remplacer l'habituelle DS1307 par une DS3231.

Image

Le Mémoire 2.0+ bénéficie donc d'une horloge plus précise, munie d'un capteur de température, et de deux alarmes programmables, permettant de déclencher des actions à des heures précises de la journée. Elle communique également par I²C donc le câblage n'est pas modifié.

Cette horloge est la même que celle embarquée sur Le Sablier, elle fonctionne donc avec la même librairie :)

Voici un sketch d'exemple pour tester le Mémoire 2.0+ : un datalogger simple, qui enregistre sur la carte SD les valeurs lues sur 3 entrées analogiques. Au début du sketch la RTC est testée et le moniteur série affiche la date, l'heure et la température en début de sketch.

Code: Tout sélectionner
// Test complet du shield Mémoire 2.0+
// Carte SD + DS3231 + LED sur D9
// Copyleft Snootlab 2015

// Librairies DS3231
#include <Wire.h>
#include <LeSablier.h>

// Librairies SD
#include <SD.h>
#include <SPI.h>

// Constantes utiles
#define LED 9
#define chipSelect 10

void setup()
{   
  Serial.begin(9600);
 
  // Test de la LED
  Serial.print("Test led...");
  pinMode(LED, OUTPUT);
  digitalWrite(LED, HIGH);
  delay(500);
  digitalWrite(LED, LOW);
  delay(500);
  digitalWrite(LED, HIGH);
  delay(500);
  digitalWrite(LED, LOW);
  delay(500);
 
  // Initialisation de l"horloge
  Serial.print("Initialisation RTC...");
  Wire.begin();
  LeSablier.begin();

  // Modifiez la ligne suivante pour initialiser la RTC
  // Format pour la date:  jour   date    mois   année   heures  minutes  secondes
  // Valeurs:             (1-7) (01-31) (01-12) (00-99)  (00-24) (00-59)  (00-59)
  LeSablier.setAll(4, 13, 8, 15, 17, 00, 00);
 
  // Impression de la date, l'heure et la température
  Serial.print(LeSablier.getDayStr());
  Serial.print(", ");
  Serial.print(LeSablier.getMonth());
  Serial.print("/");
  Serial.print(LeSablier.getDate());
  Serial.print("/");
  Serial.print(LeSablier.getYear());
  Serial.print(" - ");
  Serial.print(LeSablier.getHours());
  Serial.print(":");
  Serial.print(LeSablier.getMinutes());
  Serial.print(":");
  Serial.print(LeSablier.getSeconds());
  Serial.print(" - Temp : ");
  Serial.println(LeSablier.getTemp());
 
  delay(2000);
 
  Serial.print("Initialisation carte SD... ");
  // Il faut que le SS hardware soit paramétré en sortie
  // pour que les librairies SPI et SD fonctionnent correctement
  // même si on ne l'utilise pas
  pinMode(10, OUTPUT);
 
  // Initialisation carte SD
  if (!SD.begin(chipSelect))
  {
    Serial.println("carte absente, ou erreur.");
    return;
  }
  Serial.println("carte initialisee.");
}

void loop()
{
  // Chaîne de caractères pour stocker toutes les valeurs à enregistrer
  String dataString = "";

  // Lire les 3 capteurs et ajouter les valeurs à la chaîne
  for (int analogPin = 0; analogPin < 3; analogPin++)
  {
    int sensor = analogRead(analogPin);
    dataString += String(sensor);
    if (analogPin < 2)
    {
      dataString += ","; // séparateur
    }
  }

  // Ouvrir le fichier. Un seul fichier peut être ouvert à la fois,
  // Il faudra fermer celui-ci avant d'en ouvrir un autre.
  File dataFile = SD.open("datalog.txt", FILE_WRITE);

  // Si le fichier est disponible, y écrire les données
  if (dataFile)
  {
    dataFile.println(dataString);
    dataFile.close();
    // Les écrire sur le moniteur série également
    Serial.println(dataString);
  } 
  // Si le fichier n'existe pas, afficher une erreur
  else
  {
    Serial.println("Erreur d'ouverture fichier");
  }
}
"If it's itchy, scratch it !" - "DIY or die"

RTFM (À lire avant de poster) - ANDb (Arduino Noob Database)
Avatar de l’utilisateur
Laetitia
 
Messages: 296
Inscription: Mar 7 Aoû 2012 15:07
Localisation: Toulouse

Retourner vers Mémoire

Qui est en ligne

Utilisateurs parcourant ce forum: Google [Bot] et 1 invité