// --- Inclusion des librairies ---
#include <SD.h>
// --- Déclaration des constantes utiles ---
// --- Déclaration des constantes des broches E/S numériques ---
const int brocheSDCardSelect=4;
// --- Déclaration des constantes des broches analogiques ---Gamer Racing Hjh GamingFauteuil En SoupleSiège De Cuir Bureau Pace Baquet Chaise Accoudoirs Et 621720 Noir Rouge Simili Au Office Avec Capitonnage Qtsrhd
// --- Déclaration des variables globales ---
volatile int comptageImpulsion=0; // variable accessible dans la routine interruption externe 0
int test; // Variable utilisée pour tester valeur renvoyée par fonctions SD Card
// --- Déclaration des objets utiles pour les fonctionnalités utilisées ---
File file; // objet file
File root; // objet root pour le répertoire racine
// ////////////////////////// 2. FONCTION SETUP = Code d'initialisation //////////////////////////
// La fonction setup() est exécutée en premier et 1 seule fois, au démarrage du programme
void setup() { // debut de la fonction setup()
// --- ici instructions à exécuter 1 seule fois au démarrage du programme ---
// ------- Initialisation fonctionnalités utilisées -------
Serial.begin(115200); // initialise connexion série à 115200 bauds
// IMPORTANT : régler le terminal côté PC avec la même valeur de transmission
//---- initialise l'utilisation de la carte mémoire SD en mode SPI
pinMode(10, OUTPUT); // met la broche 10 (SS) en sortie (nécessaire avec module ethernet)
digitalWrite(10, HIGH); // mais désactive le circuit intégré W5100 du module ethernet!Gamer Racing Hjh GamingFauteuil En SoupleSiège De Cuir Bureau Pace Baquet Chaise Accoudoirs Et 621720 Noir Rouge Simili Au Office Avec Capitonnage Qtsrhd
//----- initialisation de la carte SD -----
Serial.println("Initialisation de la SD card...");
pinMode(10, OUTPUT); // laisser la broche SS en sortie - obligatoire avec librairie SD
test=SD.begin(brocheSDCardSelect); // initialisation de la carte SD avec broche 4 en tant que CS - renvoie true/false
if (test!=true) { // si initialisation n'est pas réussie
Serial.println("Echec initialisation!"); // message port Série
}
else { // si nitialisation réussie
Serial.println("Initialisation reussie !"); // message port Série
Gamer Racing Hjh GamingFauteuil En SoupleSiège De Cuir Bureau Pace Baquet Chaise Accoudoirs Et 621720 Noir Rouge Simili Au Office Avec Capitonnage Qtsrhd
//----- affiche le contenu du répertoire
root = SD.open("/"); // ouvre la SD Card à la racine
Serial.println("Repertoire racine ouvert !");
}
attachInterrupt(0, gestionINT0, RISING); // attache l'interruption externe n°0 à la fonction gestionINT0()
// mode déclenchement possibles = LOW, CHANGE, RISING, FALLING
// ------- Broches en sorties numériques -------
// ------- Broches en entrées numériques -------
// ------- Activation si besoin du rappel au + (pullup) des broches en entrées numériques -------
// ------- Initialisation des variables utilisées -------
} // fin de la fonction setup()
// ********************************************************************************
////////////////////////////////// 3. FONCTION LOOP = Boucle sans fin = coeur du programme //////////////////
// la fonction loop() s'exécute sans fin en boucle aussi longtemps que l'Arduino est sous tension
void loop(){ // debut de la fonction loop()Gamer Racing Hjh GamingFauteuil En SoupleSiège De Cuir Bureau Pace Baquet Chaise Accoudoirs Et 621720 Noir Rouge Simili Au Office Avec Capitonnage Qtsrhd
//---- crée fichier en écriture ---
file = SD.open("data.txt", FILE_WRITE); // ouvre le fichier en écriture
// NB : le fichier est créé si il n'existe pas !
//---- test si fichier dispo en écriture
if (!file) { // si fichier pas dispo
Serial.println ("Erreur ouverture fichier !");
} // fin if
else { // si le fichier existe et est ouvert
Serial.println ("Fichier pret pour ecriture !");
//----- Ecriture dans le fichier au format CSV -----
// premiere ligne du fichier CSV - entete avec liste des champs
file.println("Nbreimpulsion;Millis");
Serial.println ("Enregistrement en cours :");
// valeur deuxieme champ
Chaise Bois M6 Confort BoisAccrochable FonctionnelTendanceEn CdWrxBeo file.print(comptageImpulsion), file.print(';');
// valeur quatrieme champ
file.print(millis());
// le dernier champ doit se terminer par un saut de ligne +++
file.println();
file.close(); // ferme le fichier
Serial.println("Fin enregistrement !");
Serial.println("Fermeture fichier !");
delay(60000);
} // fin else
} // fin de la fonction loop() - le programme recommence au début de la fonction loop sans fin
// ********************************************************************************
// ////////////////////////// FONCTIONS DE GESTION DES INTERRUPTIONS ////////////////////
// ------------------- fonction de gestion l'interruption externe n°0 (broche 2) ----------------
// cette fonction est appelée à chaque fois que l'interruption a lieu selon le mode configuré (LOW, CHANGE, RISING, FALLING)
void gestionINT0() {// la fonction appelée par l'interruption externe n°0
comptageImpulsion=comptageImpulsion+1; // Incrémente la variable de comptage
//---- affiche le nombre d'impulsions sur le port série
Serial.print("Nombre impulsions = ");
Serial.println(comptageImpulsion);
}
The Uno contains a trace that can be cut to disable the auto-reset. The pads on either side of the trace can be soldered together to re-enable it. It's labeled "RESET-EN". You may also be able to disable the auto-reset by connecting a 110 ohm resistor from 5V to the reset line; see this forum thread for details.
Ce reset est lié au terminal de l'IDE, quand j'utilise un soft maison pour discuter avec la carte arduino, aucun reset, ni à l'ouverture ou fermeture du port série du PC. c'est dommage, car on upload le programme, ça ferme automatiquement le terminal de l'IDE s'il est ouvert, et quand on relance le terminal, ça reset l'arduino... c'est un peu abusif, je trouve... de même, changer la vitesse de transmission du terminal reset la carte... L'utilisation du port série sur PC (ouverture, reconfiguration...) ne gêne absolument pas l'arduino, il ne recevra bien les données que si côté PC on est à la même config...
Pourquoi ne pas mettre un cavalier sur cette piste ?
Un cavalier, qui surgit hors de la nuit
Court vers l'aventure au galop
Son nom, il le signe à la pointe de l'épée
D'un Z qui veut dire Zéro
c'est dommage, car on upload le programme, ça ferme automatiquement le terminal de l'IDE s'il est ouvert, et quand on relance le terminal, ça reset l'arduino... c'est un peu abusif, je trouve... de même, changer la vitesse de transmission du terminal reset la carte...