Mise à jour le 28/09/2021 : Comment traiter le stockage d’informations en mémoire EEPROM sur arduino avec l’instruction EEPROM.put.
Sommaire :
- But du tutoriel
- Principe de capture et d’ecriture
- Vidéo sur l’ecriture de la mémoire EEPROM
- Programme pour l’écriture et la lecture de la mémoire EEPROM
- Pour tout probléme
- Retour au menu principal
.
But du tutoriel |
.
Dans le cadre du projet Oryon nous avons une partie programmation pour le système d’apprentissage du cobot. Le principe de l’apprentissage et d’enseigner au cobot les mouvements que l’on souhaite qu’il réalise en le manipulant simplement, et d’enregistrer des différents mouvements dans une mémoire afin qu’il nous les restitue quand on lui demande
Pour que l’on utilise le mode d’apprentissage il faut déjà ecrire un programme qui nous permettra que ce mode nous retranscrive automatiquement les déplacements de celui-ci. Voici un petit programme qui nous permet déjà d’avoir un petit aperçu de ce mode de stockage. La difficulté sur arduino étend de récupérer les valeurs du convertisseur 10 bits et de stocker la valeur des 2 octets en une seule fois dans la mémoire.
Le but de cet exemple est de montrer aussi l’instruction EEPROM.put() qui écrit des données sur EEPROM ou en utilisant également EEPROM.update() qui écrit des données uniquement si elles sont différentes du contenu précédent des emplacements à écrire. Le nombre d’octets écrits est lié au type de données ou à la structure personnalisée de la variable à écrire.
.
Retour au sommaire
Principe de capture et d’ecriture en EEPROM de plusieurs octets |
.
.
.
Retour au sommaire.
Video sur l’ecriture de la mémoire EEPROM |
.
.
Retour au sommaire.
.
Programme pour l’ecriture et la lecture en EEPROM de plusieurs octets |
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 |
// // //****************************************************** // //But : Lecture d'une valeur de 10 bits et enregistrement // de celle-ci en memoire EEPROM // // Par H-Mazelin // RedOhm // Le 26/05/2021 //****************************************************** #include <EEPROM.h> // le potentiomètre, branché sur la broche analogique 6 int potentiometre1 = 6; //int address = 0 ; int valeur_eeprom ; // ************************************************************* // Declaration des entrees et des sorties pour l'enregistrement const int Led_enregistrement = 25 ; // déclaration de l'entrée du bouton branché sur la broche 15 // de votre carte Arduino int bouton15 = 15; // variable du type int pour stocker les valeurs de passage du bouton15 int bouton15v; // ************************************************************* // Declaration des entrees et des sorties la lecture const int Led_lecture = 26; // déclaration de l'entrée du bouton branché sur la broche 16 // de votre carte Arduino int bouton16 = 16; // variable du type int pour stocker les valeurs de passage du bouton16 int bouton16v; void setup() { //**************************************** //Mise en service du port de com //**************************************** //ouvre le port série et fixe le debit de communication à 9600 bauds Serial.begin(9600); // on attent que le port de communication soit pret while (!Serial) { ; } //**************************************** //Configuration des entrees pour les boutons de selection //**************************************** pinMode (bouton15,INPUT ); pinMode (bouton16,INPUT ); //**************************************** //Configuration des sorties pour les Led //**************************************** pinMode (Led_enregistrement,OUTPUT ); pinMode (Led_lecture,OUTPUT ); } void loop() { // **************************************************** // creation de la commande enregistrement // **************************************************** bouton15v = digitalRead(bouton15); if (bouton15v == 1) { digitalWrite (Led_enregistrement,HIGH); // appel de la fonction -> lecture de la position du servomoteur lecture_position(); } else if (bouton15v == 0) { digitalWrite (Led_enregistrement,LOW); } // **************************************************** // creation de la commande de lecture // **************************************************** bouton16v = digitalRead(bouton16); if (bouton16v == 1) { digitalWrite (Led_lecture,HIGH); // appel de la fonction -> lecture de la memoire lecture_memoire_et_pilotage_servomoteur(); } else if (bouton16v == 0) { digitalWrite (Led_lecture,LOW); } } // Creation de la fonction lecture_position // //******************************************************* // Lecture des positions du servomoteur et enregistrement //******************************************************* // void lecture_position() { Serial.println(" Attention lecture de la position et ecriture de la memoire dans 5 secondes : "); delay (5000); Serial.print (""); Serial.println("c'est parti"); for (int i=0 ; i <= 32 ; i=i+2) { // conversion de la tension de la borne 6 et transfert de la valeur // numerique dans la variable valeur_eeprom valeur_eeprom=analogRead(potentiometre1); delay(20); Serial.print("ecriture a l'adresse : ");Serial.print(i); Serial.print(" de la valeur => ");Serial.println(valeur_eeprom); // EEPROM.put permet d'ecrire n'importe quel type de données ou objet dans l'EEPROM. // la valeur de i permet de pointer l'adresse pour stocker la valeur EEPROM.put (i,valeur_eeprom); delay(200); } bouton15v == 0; Serial.println("Fin d'enregistrement"); delay(2000); } //******************************** // Lecture de la memoire EEPROM //******************************** // // Creation de la fonction lecture_memoire_et_pilotage_servomoteur void lecture_memoire_et_pilotage_servomoteur() { Serial.println(""); Serial.println(" Attention lecture de la memoire EEPROM dans 5 secondes"); delay (5000); for (int i=0 ; i <= 32 ; i=i+2) { // lire un octet à partir de l'adresse specifie dans la variable i EEPROM. get ( i , valeur_eeprom ) ; delay (100); Serial.print(i); Serial.print("\t"); Serial.print(valeur_eeprom); Serial.println(); } delay(500); bouton16v == 0; Serial.println("Fin de lecture "); } |
.
Retour au sommaire
Pour tout probléme |
.
Pour tout problème de téléchargement ou pour nous suivre sur les réseaux sociaux voici les plateformes sur lesquelles nous éditons.
Cliquez sur celle qui vous intéresse .
.
Retour au sommaire
.