Table des matières:

Ajout d'une EEPROM 24LC256 à l'Arduino Due : 3 étapes
Ajout d'une EEPROM 24LC256 à l'Arduino Due : 3 étapes

Vidéo: Ajout d'une EEPROM 24LC256 à l'Arduino Due : 3 étapes

Vidéo: Ajout d'une EEPROM 24LC256 à l'Arduino Due : 3 étapes
Vidéo: Начало работы с Ардуино 2024, Novembre
Anonim
Ajout d'une EEPROM 24LC256 à l'Arduino Due
Ajout d'une EEPROM 24LC256 à l'Arduino Due

L'arduino due n'a pas d'eeprom. Cette instructable en ajoute une et vous permet de stocker des valeurs dans une mémoire non volatile qui survivra à une mise à jour du micrologiciel arduino.

Étape 1: la planche à pain

Planche à pain
Planche à pain

Il y a de très bonnes instructions ici: https://www.hobbytronics.co.uk/arduino-external-eeprom Je viens de les suivre. La photo montre le circuit en maquette. les broches 1 à 4 et la broche 7 sont mises à la terre. la broche 8 est connectée à l'alimentation 3,3 V sur la carte due. Les fils jaune (broche 6) et blanc (broche 5) connectés aux broches i2c SDA (données) et SCL (horloge) sur la carte due (numérotés 21 et 20).

Étape 2: Temps de codage

Temps de code
Temps de code

Voici quelques extraits de code que j'utilise dans mes croquis. Tout d'abord, incluez les en-têtes de la bibliothèque Wire quelque part vers le haut de votre croquis: /* Utilisez l'EEPROM 24LC256 pour enregistrer les paramètres */ #include Ensuite, ajoutez des fonctions pour lire et écrire des octets à partir de l'EEPROM fonction d'écriture de page dans la puce également). Notez qu'il existe une définition de macro de 0x50.. c'est l'adresse de la puce sur le bus i2c (vous pouvez connecter plus d'un truc i2c sur un bus i2c et sélectionner celui à qui vous voulez parler en changeant l'adresse). /* Ces deux fonctions nous aident à écrire sur la puce EEPROM 24LC256 */ #define EEPROM_ADDR 0x50 void EEPROM_write(unsigned int addr, byte data) { int rdata = data; Wire.beginTransmission(EEPROM_ADDR); Wire.write((int)(addr >> 8)); // MSB Wire.write((int)(addr & 0xFF)); // Fil LSB.write(rdata); Wire.endTransmission(); //Serial.print("EEPROM write: addr: "); //Série.print(addr); //Série.print(" "); //Série.println(données); retard(5); } octet EEPROM_read(unsigned int addr) { octet data = 0xFF; Wire.beginTransmission(EEPROM_ADDR); Wire.write((int)(addr >> 8)); // MSB Wire.write((int)(addr & 0xFF)); // Fil LSB.endTransmission(); Wire.requestFrom(EEPROM_ADDR, 1); if (Wire.available()) data = Wire.read(); //Serial.print("EEPROM read: addr: "); //Série.print(addr); //Série.print(" "); //Série.println(données); retard(5); renvoyer des données; } Vous pouvez décommenter les lignes Serial.print(…) si vous voulez voir une sortie de débogage. Dans la fonction setup() d'arduinos, vous démarrez la bibliothèque de fils et pouvez lire les valeurs initiales. Ici, j'ai lu en deux octets (flags et max_cc), deux mots (lean_min et lean_max) et un tableau de mots sd_max[3]: // lecture des valeurs enregistrées dans l'EEPROM Wire.begin(); drapeaux=EEPROM_read(0); max_cc=EEPROM_read(1); maigre_min=mot(EEPROM_read(3), EEPROM_read(2)); maigre_max=mot(EEPROM_read(5), EEPROM_read(4)); for(int j=0;j<3;j) { sd_max[j]=mot(EEPROM_read(7 j*2), EEPROM_read(6 j*2)); } Voici le bout de code qui les écrit dans l'EEPROM: EEPROM_write(0, flags); EEPROM_write(1, max_cc); EEPROM_write(2, lowByte(lean_min)); EEPROM_write(3, highByte(lean_min)); EEPROM_write(4, lowByte(lean_max)); EEPROM_write(5, highByte(lean_max)); for(int j=0;j<3;j) { EEPROM_write(6 j*2, lowByte(sd_max[j])); EEPROM_write(7 j*2, highByte(sd_max[j])); } C'est à peu près tout.

Étape 3: câblez-le

Câblez-le
Câblez-le

Câblez-le sur un veroboard pour le visser dans un boîtier et les travaux sont effectués.

Conseillé: