Je suis en élaboration d'une petite station météo avec affichage par tube Nixie.
J'affiche l'heure puis la date puis la temperature ensuite le taux d'humidité et enfin la pression atmospherique.
j'ai fait un developpement sur uno et breathboard et ensuite j'ai réalisé un PCB et mon code tourne avec un IC AtMega 328P en standalone
Au démarrage j'enregistre dans une variable (pression ref) la pression amosphérique que je compare en permanence avec la pression actuelle pour relever une hausse ou baisse de pression puis à minuit je remet à jour ma variable (pression ref).
J'ai ajouté sur ma carte une eprom 24LC256 et je voudrais toutes les heures + 1min enregistrer la pression atmospherique tout au long des 24h de la journée dans un emplacement different pour chaque heure.
Aujourd'hui à 1h du matin ou 2h ou 3h etc je compare ma pression avec ma ref enregistrée à minuit.
Je voudrais comparer avec 24h de decallage par exemple le lundi de 0h à 0h59 je compare avec la pression du dimanche à minuit
de 1hà 1h59 je compare avec ma pression du dimanche à 1h
Je bloque sur l'adressage de chaque pression à enregistrer et j'ai lu qu'il n'était possible que d'enregistrer des valeurs juqu'a 255 mais ma pression peut être par exemple 1023.2
Merci à ceux qui pourront m'aider
Le mieux est de mettre toutes les valeurs à sauver dans une structure, structure qui est sauvée en une opération, EEPROM.put et restituée par un EEPROM.get(). Ainsi tu n'as plus de problème quand au format des données à enregistrer.
Salut.
Oui, chaque byte de l'EEPROM vaut 0xFF au maximum (255).
Mais un integer (deux bytes) peut contenir une valeur max de 0xFFFF (65535).
Donc pour chaque valeur il faut enregistrer ou lire 2 bytes consécutifs.
Comptes-tu utiliser une librairie ?
Celle-ci permet d'écrire / lire différents types de données, à l'aide de 2 méthodes : put() et get().
Ces deux méthodes s'utilisent comme celles de la classe EEPROM ARDUINO.
Ok merci pour l'info pour la structure je pense pouvoir me debrouiller avec ça mais par contre comment enregistrer "pression 0h" dans un endroit de l'eprom pression 1h dans un autre endroit et ainsi de suite sur 24h
Merci
il me faudrait 24 decoupage dans l'eprom et dans chacun des decoupage j'y enregistrerait une pression differente.
Il n'est pas nécessaire de "découper" la mémoire, tu crées une structure, tu en fais un tableau à 24 éléments et tu sauves le tout par un EEPROM,put(0, structure).
Tu peux calculer la place mémoire nécessaire avec un sizeof()
Donnes la liste des variables que tu as à sauver.
Je ne comprend pas comment envoyer dans l'eprom mes 24 elements ou peut-etre me suis-je mal exprimé.
Je recommence
Je souhaite toutes les heures envoyer dans l'eprom la valeur de la pression atmospherique pour la récuperer le lendemain à la même heure et remettre à jour la valeur a l'heure H
Le lundi à 1h je récupere la valeur que j'avais enregistré le dimanche à 1h, je la sauvegarde dans une variable et je mets à jour mon eprom (je remets la valeur de la pression du lundi à 1h à la place de celle du dimanche à 1h)
Valeur que je reviendrai chercher le mardi à 1h
Et ça pour toute les heures de la journée.
J'avoue que ce n'est peut être pas très clair
Merci
A chaque heure, tu lis tes capteurs et mets les valeurs lues dans une structure temporaire, tu lis la mémoire (les 24 éléments), si c'est 11 heures, tu compare la structure temporaire avec la structure[11] et éventuellement tu mets la structure temporaire dans structure[11] et tu sauves le tout.
Le fait de tout lire et tout écrire dans l'EEPROM n'impacte pas beaucoup le nombre de cycles d'écriture possibles, du fait que EEPROM.put() utilise la méthode EEPROM.update() qui n'écrit que s'il y a changement.
à noter que la structure est utile que si on a des types différents. ici un simple tableau de 24 éléments peut faire l'affaire et on peut le sauver et le lire avec get et put
Oui, c'est juste, mais au niveau pratique?
Pour moi, le principal avantage de l'utilisation des structures, est le pratique de leur usage à l'écriture du programme, surtout avec l'autocomplétion, on tape le nom de la structure puis point pour en avoir la liste des éléments, avec un tableau "neutre" il n'y a pas ce côté pratique.
Je me pose une question, est-il réellement indispensable de sauver ces valeurs en EEPROM?
Les valeurs en question peuvent parfaitement tenir dans un tableau en mémoire. Un tableau de 24 entiers n'occupe pas beaucoup de place.
Une alternative à l'EEPROM est la mémoire FRAM avec un nombre de cycles d'écriture nettement plus élevés, également en i2C.
Avel la bibliothèque Adafruit_FRAM_I2C on peut aussi manipuler les structures avec writeObject() et readObject().
Oui en général les structures sont pratiques pour grouper des choses différentes mais dans ce cas précis ça fait un peu lourd surtout si on n’utilise pas la programmation objet pour la structure.
En gros vous devez dire maStructure.pression[12] versus juste pression[12]