Je suis actuellement en train de faire un petit projet, qui consiste à ouvrir une boite à partir d'une certaine fréquence de frappe sur celle-ci, secrète. Qui peut évidemment être changé une fois la boite ouverte pour personnalisé la combinaison.
J'aimerais mettre un petit bouton "On/Off" à l’extérieur de la boite afin de l'éteindre, et l'allumer quand on a besoin de l'ouvrir.
Malheureusement, une fois éteinte et rallumé, la combinaison est oublié, et donc la boite in-ouvrable (j'ai du coup mis une combinaison de base qui marche donc après chaque "reboot" mais évidemment c'est donc pas très intéressant)
J'ai entendu dire qu'il fallait utiliser la mémoire EEPROM mais je ne comprends pas tout.
Concrètement ce que je voudrais serait :
variable1 = code n
input nouveau code
variable 1 = code n+1
et donc le code n+1 reste en mémoire après un reboot..
La librairie EEPROM vient avec quelques exemples montrant comment enregistrer et récupérer une information.
Un peu de recherche perso t'indiquera des tutoriels comme celui-çi : Carnet du Maker
L'eeprom du microcontrôleur, comme toutes les eeproms, a un nombre d'écriture limité (10 000 écriture par octet), il est préférable de ne pas y enregistrer en permanence.
Il existe des solutions oubliées avec les modules horloges sauvegardées (RTC in angliche).
Par exemple dans le module du DS3231 on trouve aussi un boîtier eeprom, le prix du module tourne autour de 1,5 € ce ne sera pas un problème de changer préventivement l'eeprom.
Le module du DS1307 qui est moins précis que le DS3231 comporte aussi une eeprom et cadeau dans le DS1307 on trouve 56 octets de Ram sauvegardée sans limite d'écriture. Le module toujours à 1,5 €.
La DS3232 est un DS3231 avec plus de ram sauvegardée que le DS1307. Mais le DS3232 est assez difficile à trouver donc plus cher.
Il doit aussi exister des boîtiers de ram autonome sauvegardée par pile.
Pour le Mega328 l'EEPROM est donnée pour 100.000 écritures, la mémoire flash pour 10.000
Dans la série de EEPROM oubliées.... le DS18B20 et ses 2 octets d'EEPROM (User data)
(Je m'en sers avec des ESP8266 qui émulent l'EEPROM dans leur mémoire flash ... que je veux préserver)
Le Compilateur a du crier un peu quand vous avez essayé de compiler votre code, non?
Ce bout de codeint valeur1[2] = {42, 2};déclare et définit un tableau de 2 entiers en initialisant les 2 cases mémoire à 42 et 2
Ce bout de codeEEPROM.put(0, valeur_1[2]); (outre le fait que ce n’est pas le bon nom du tableau) essaye de sauver en EEPROM la 3ème case d’un tableau qui n’en contient que 2...
Idem pour la lecture
(indice: le pointeur sur le début du tableau de n’est que le nom du tableau tout seul)
Je dois avouer avoir fait un paquet de test niveau syntaxe etc, donc oui c'est possible que les noms de valeurs ne correspondent plus désolé.
J'ai du mal à comprendre car des fois le [2] corresponds aux nombres de valeur dans le tableau, et des fois donc c'est la 3eme valeur, comme stocker tout le tableau alors ?
mettre juste le nom du tableau sans les crochets, ou mettre des crochets vides ne fonctionne pas
J'ai du mal à comprendre car des fois le [2] corresponds aux nombres de valeur dans le tableau, et des fois donc c'est la 3eme valeur, comme stocker tout le tableau alors ?
Bonjour,
ce sont des choses qui ont été définies une fois pour toutes, donc qu'il faut admettre ...
les tableaux doivent être déclarés dans "la partie déclaration"
tu dois donc écrire :
int tableau1[2];
ceci déclare :
int = le type des variables que le tableau contient
tableau1 = le nom du tableau
[2] = le nombre de variables int contenus dans le tableau : le tableau contient 2 variables
quand tu veux utiliser le tableau dans ton programme :
tableau1[0] désigne le 1er élément du tableau (on commence par 0 !)
tableau1[1] désigne le 2ème élément du tableau, etc pour la suite
tableau1[2] désigne le 3ème élément du tableau, ce qui n'est pas possible, car tableau1 est déclaré pour n'en contenir que 2
notons que ceci ne génère pas systématiquement une erreur, car les compilateurs peuvent se contenter d'aller à la "case" suivante dans l'espace adressé, ce qui créé un redoutable bug dans le programme