Yahoo refuse tous les emails du site. Si vous avez une adresse chez un autre prestataire, c'est le moment de l'utiliser ;)

En cas de soucis, n'hésitez pas à aller faire un tour sur la page de contact en bas de page.

Topic "manipulations de fichiers"

Flux RSS des posts récents dans ce topic ( Flux Atom)


Pas de photo de profil

Xavier29

Membre

#453 | Signaler ce message


Bonjour à tous, Tout d'abord, merci pour ce site qui permet d'apprendre les notions de base avec l'arduino.

Je suis en train de mettre en place un tracker GPS. Pour cela, j'utilise : - un module GPS (logique…), - un module SD pour enregistrer, - une batterie, - temporairement un écran LCD en I2C pour ne pas rester coller à mon ordi et contrôler les données, - un nodeMCU pour le reste.

L'objectif du tracker est simple : enregistrer la position en permanence puis lorsqu'un bouton poussoir est activé, se connecter en WIFI puis si la connection est faite, d'envoyer les données dans une base de données qui est sur mon réseau interne.

La fonction loop est très simple :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
void loop() {
  //le bouton est à l'état haut par défaut (montage pull-up)
  etatBouton = digitalRead(pinBouton);
  if (etatBouton) {
    partieEnregistrement();
  }
  else {
    partieLecture();
  }
}

La procédure partieEnregistrement() fait ce pourquoi elle est faite : enregistrer les données. Lecture de la voie série du GPS, "parser" les données (fonction maison car je n'utilise pas la bibliothèque TinyGPS++) puis enregistrement sur la carte SD avec la création d'un nouveau fichier toutes les 15 minutes. A chaque fois que je vais écrire dans le fichier, je teste l'existence puis l'ouverture , j'écris les données et enfin je ferme le fichier avec file.close().

La procédure partieLecture() connecte le WIFI puis pour chaque fichier enregistré, lit le contenu pour ensuite envoyer les données via une requête sur une page php…

Les 2 parties fonctionnent parfaitement séparément.

Quand j'exécute ça :

1
2
3
void loop() {
    partieLecture();
}

Tous les fichiers sont lus les uns à la suite des autres. C'est ce que je veux.

Mais dès que j'appuie sur le bouton, aucun fichier n'est listé… J'ai pourtant lu, relu et rerelu mais je ne vois pas le soucis.

Pour faire mes essais, je ne touche absolument pas au montage ni à la partie setup ni aux autres fonctions seulement à la partie loop.

J'ai aussi tester les exemples SD, notamment le ReadWrite, qui évidemment fonctionne.

D'où est-ce que cela peut venir ? L'objet SD qui est créé au départ et bien global et donc tout le temps accessible ? Il n'y a aucun risque de le fermer par erreur ?

En attendant de vous lire, je vous souhaite une bonne journée

Xavier

Derniére modification le par Xavier29


Photo de profil de skywodd

skywodd

Membre

Membre du staff

#459 | Signaler ce message


Bonjour,

Sans le code complet, c'est difficile de faire un diagnostic.

Je vois deux hypothèses : un conflit entre partieEnregistrement() et partieLecture(), ou un probléme de bouton.

As-tu vérifié que le bouton fonctionne (en commutant une LED dans le if par exemple) ?