Table des matières:

L'EEPROM intégrée de votre Arduino : 6 étapes
L'EEPROM intégrée de votre Arduino : 6 étapes

Vidéo: L'EEPROM intégrée de votre Arduino : 6 étapes

Vidéo: L'EEPROM intégrée de votre Arduino : 6 étapes
Vidéo: Sauvegarder des Données dans l'Arduino avec l'EEPROM - ARDUINO #3 2024, Novembre
Anonim
L'EEPROM intégrée de votre Arduino
L'EEPROM intégrée de votre Arduino

Dans cet article, nous allons examiner l'EEPROM interne de nos cartes Arduino. Qu'est-ce qu'une EEPROM, certains d'entre vous peuvent-ils dire ? Une EEPROM est une mémoire morte programmable effaçable électriquement.

C'est une forme de mémoire non volatile qui peut se souvenir de choses lorsque l'alimentation est coupée ou après avoir réinitialisé l'Arduino. La beauté de ce type de mémoire est que nous pouvons stocker les données générées dans un croquis de manière plus permanente.

Pourquoi utiliseriez-vous l'EEPROM interne ? Pour les situations où les données qui sont uniques à une situation ont besoin d'un emplacement plus permanent. Par exemple, stocker le numéro de série unique et la date de fabrication d'un projet commercial basé sur Arduino - une fonction du croquis peut afficher le numéro de série sur un écran LCD, ou les données peuvent être lues en téléchargeant un « croquis de service ». Ou vous devrez peut-être compter certains événements et ne pas permettre à l'utilisateur de les réinitialiser, comme un odomètre ou un compteur de cycles de fonctionnement.

Étape 1: quel type de données peut être stocké ?

Quel type de données peut être stocké ?
Quel type de données peut être stocké ?

Tout ce qui peut être représenté sous forme d'octets de données. Un octet de données est composé de huit bits de données. Un bit peut être activé (valeur 1) ou désactivé (valeur 0) et est parfait pour représenter des nombres sous forme binaire. En d'autres termes, un nombre binaire ne peut utiliser que des zéros et des uns pour représenter une valeur. Ainsi, le binaire est également connu sous le nom de "base-2", car il ne peut utiliser que deux chiffres.

Comment un nombre binaire avec seulement l'utilisation de deux chiffres peut-il représenter un nombre plus grand ? Il utilise beaucoup de uns et de zéros. Examinons un nombre binaire, disons 10101010. Comme il s'agit d'un nombre en base 2, chaque chiffre représente 2 à la puissance x, à partir de x=0.

Étape 2:

Image
Image

Voyez comment chaque chiffre du nombre binaire peut représenter un nombre en base 10. Ainsi, le nombre binaire ci-dessus représente 85 en base 10 – la valeur 85 est la somme des valeurs en base 10. Un autre exemple – 11111111 en binaire équivaut à 255 en base 10.

Étape 3:

Maintenant, chaque chiffre de ce nombre binaire utilise un "bit" de mémoire, et huit bits forment un octet. En raison des limitations internes des microcontrôleurs de nos cartes Arduino, nous ne pouvons stocker que des nombres de 8 bits (un octet) dans l'EEPROM.

Cela limite la valeur décimale du nombre entre zéro et 255. Il vous appartient ensuite de décider comment vos données peuvent être représentées avec cette plage de nombres. Ne vous laissez pas décourager: les nombres disposés correctement peuvent représenter presque n'importe quoi ! Il y a une limitation à prendre en compte - le nombre de fois que nous pouvons lire ou écrire dans l'EEPROM. Selon le fabricant Atmel, l'EEPROM est bonne pour 100 000 cycles de lecture/écriture (voir la fiche technique).

Étape 4:

Maintenant que nous connaissons nos bits et nos octets, combien d'octets peuvent être stockés dans le microcontrôleur de notre Arduino ? La réponse varie selon le modèle de microcontrôleur. Par exemple:

  • Cartes avec un Atmel ATmega328, telles que Arduino Uno, Uno SMD, Nano, Lilypad, etc. - 1024 octets (1 kilo-octet)
  • Cartes avec un Atmel ATmega1280 ou 2560, telles que la série Arduino Mega - 4096 octets (4 kilo-octets)
  • Cartes avec un Atmel ATmega168, telles que l'original Arduino Lilypad, l'ancien Nano, Diecimila, etc. - 512 octets.

Si vous n'êtes pas sûr, consultez l'index du matériel Arduino ou demandez à votre fournisseur de carte. Si vous avez besoin de plus de stockage EEPROM que ce qui est disponible avec votre microcontrôleur, envisagez d'utiliser une EEPROM I2C externe.

À ce stade, nous comprenons maintenant quel type de données et combien peuvent être stockées dans l'EEPROM de notre Arduino. Il est maintenant temps de mettre cela en action. Comme discuté précédemment, il y a une quantité finie d'espace pour nos données. Dans les exemples suivants, nous utiliserons une carte Arduino typique avec l'ATmega328 avec 1024 octets de stockage EEPROM.

Étape 5:

Pour utiliser l'EEPROM, une bibliothèque est nécessaire, utilisez donc la bibliothèque suivante dans vos croquis:

#include "EEPROM.h"

Le reste est très simple. Pour stocker une donnée, on utilise la fonction suivante:

EEPROM.write(a, b);

Le paramètre a est la position dans l'EEPROM pour stocker l'entier (0~255) des données b. Dans cet exemple, nous avons 1024 octets de stockage mémoire, donc la valeur de a est comprise entre 0 et 1023. Pour récupérer une donnée est tout aussi simple, utilisez:

z = EEPROM.read(a);

Où z est un entier pour stocker les données de la position EEPROM a. Voyons maintenant un exemple.

Étape 6:

Image
Image

Cette esquisse créera des nombres aléatoires entre 0 et 255, les stockera dans l'EEPROM, puis les récupérera et les affichera sur le moniteur série. La variable EEsize est la limite supérieure de la taille de votre EEPROM, donc (par exemple) ce serait 1024 pour un Arduino Uno, ou 4096 pour un Mega.

// Démonstration EEPROM interne Arduino

#comprendre

entier zz; int EEsize = 1024; // taille en octets de l'EEPROM de votre carte

void setup()

{ Serial.begin(9600); randomSeed(analogRead(0)); } void loop() { Serial.println("Écriture de nombres aléatoires…"); for (int i = 0; i < EEsize; i++) { zz=random(255); EEPROM.write(i, zz); } Serial.println(); for (int a=0; a < EEsize; a++) { zz = EEPROM.read(a); Serial.print("Position EEPROM: "); Serial.print(a); Serial.print(" contient "); Serial.println(zz); retard (25); } }

La sortie du moniteur série apparaîtra, comme indiqué dans l'image.

Alors voilà, un autre moyen utile de stocker des données avec nos systèmes Arduino. Bien qu'il ne s'agisse pas du didacticiel le plus excitant, il est certainement utile.

Cet article vous est présenté par pmdway.com - tout pour les fabricants et les passionnés d'électronique, avec une livraison gratuite dans le monde entier.

Conseillé: