Bonjour petit problème à vous soumettre sur un programme, l’heure apparaît bien sur le moniteur serial mais sur la sd c’est un peut n'importe quoi, je joint le programme
#include <SPI.h>
#include <SD.h>
#include <Wire.h>
#include "RTClib.h"
#include <FreqCounter.h> //Inclure la librairie de fréquence
// Variables utilisées
unsigned long frq; //fréquence mesurée
int cnt; //nombre de mesures réalisées
int encoches=9; //16; //nombre d encoches de la roue codeuse (1 ou plus)
float trmin; //vitesse de rotation en tour/min
RTC_DS1307 rtc;
File fichierSD;
int sensorValue;
void setup() {
Serial.begin(9600);
Serial.println("Frequencemetre");
//Pour la carte SD=====================
//Initialisation de l'instance
if(!SD.begin(10)) {//10 pour notre carte, peut etre different
Serial.println(F("Initialisation impossible !"));
return;
}
Serial.println(F("Initialisation OK"));
//Fin carte SD==========================
//Pour l'horloge=========================
#ifdef AVR
Wire.begin();
#else
Wire1.begin(); // Shield I2C pins connect to alt I2C bus on Arduino Due
#endif
rtc.begin();
if (! rtc.isrunning()) {
Serial.println("RTC ne fonctionne PAS!");
//Si RTC ne fonctionne pas
//Met à l'heure à date à laquelle le sketch est compilé
// RTC.adjust(DateTime(__DATE__, __TIME__));
// La ligne qui suit ajuste le RTC à la date et time du moment de compilation(si connectee a ordinateur)
rtc.adjust(DateTime("Nov 3 2017","9:32:10"));
//Cela fonctionne également :
//RTC.adjust(DateTime("Dec 5 2012","12:00:00"));
//RTC.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
//Fin horloge=============================
}
void loop() {
sensorValue = analogRead(A0);//Le capteur est ici en A0
DateTime now = rtc.now();
//On envoie dans le moniteur série l'info écrite
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.print("->");
Serial.print(sensorValue);
//On nomme le fichier selon la date, donc toutes les donnees prises le meme jour dans un seul fichier==========
char datafile[13]; //tableau de 13 espaces pour le nom
int jour=now.day();
int mois = now.month();
int annee= now.year();
sprintf(datafile,"%02d%02d%04d.csv",jour,mois,annee); // %d pour un int
datafile[13]='\0';//à mettre pour fermer convenablement le fichier
//Fin nommer fichier==================
//Fonction qui écrit la date et l'heure dans le fichierSD
//void maintenant() {
// Attendre le signal
//compensation (étalonnage)
FreqCounter::f_comp=10; // Cal Value / Calibrate with professional Freq Counter
// 10, 100 ou 1000 ms pour une résolution de 100, 10 et 1 Hz
FreqCounter::start(100); // 100 ms Gate Time
// Attendre jusqu'à avoir un comptage terminé
while (FreqCounter::f_ready == 0)
// Afficher la mesure de fréquence (et de rotation)
frq=FreqCounter::f_freq;
Serial.print(cnt++);
Serial.print(" Freq (Hz): ");
Serial.print(frq);
//Test pour écriture
//if(fichierSD) {
// Serial.println(F("Ecriture en cours"));
//Ecriture
//maintenant();
//fichierSD.print(cnt++);
// fichierSD.print(" Freq (Hz): ");
//fichierSD.print(frq);
trmin = frq/encoches*60; //Vitesse de rotation en tour/min
Serial.print(" tour/min: ");
Serial.println(trmin);
delay(10000);
//Ouverture du fichier==========================
fichierSD = SD.open(datafile, FILE_WRITE);
//Test pour écriture
if(fichierSD) {
Serial.println(F("Ecriture en cours"));
//Ecriture
//maintenant();
//fichierSD.print(' ');
//fichierSD.print(sensorValue);
//fichierSD.print(' ');
//fichierSD.print(', ');
fichierSD.print(now.year(), DEC);
fichierSD.print('/');
fichierSD.print(now.month(), DEC);
fichierSD.print('/');
fichierSD.print(now.day(), DEC);
//fichierSD.print(', ');
fichierSD.print(now.hour(), DEC);
fichierSD.print(':');
fichierSD.print(now.minute(), DEC);
fichierSD.print(':');
fichierSD.print(now.second(), DEC);
fichierSD.print(",");
fichierSD.print(cnt++);
fichierSD.print(" Freq (Hz): ");
fichierSD.print(frq);
fichierSD.print(",");
fichierSD.print(" tour/min: ");
fichierSD.println(trmin);
fichierSD.close();
//Fermeture du fichier avec une ligne de plus============
delay(20000);//durée en ms entre les mesures
}}