Pages: 1 [2] 3   Go Down
Author Topic: Valeur compteur stocker en eeprom  (Read 4391 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Full Member
***
Karma: 0
Posts: 110
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Voici les fonctions
Elle ne sont pas optimiser pour tout type d'utilisation à toi de les adapter en fonction de tes besoins

Code:
void eeprom_ecriture(long valeur)
{
  long part_1 = valeur >> 8;
  part_1 = part_1 << 8;
  int result_1 = valeur - part_1;
 
  long part_2 = valeur >> (8*2);
  part_2 = part_2 << (8*2);
  int result_2 = (valeur - part_2)>>8;
 
  long part_3 = valeur >> (8*3);
  part_3 = part_3 << (8*3);
  int result_3 = (valeur - part_3)>>16;
 
  long result_4 = valeur >>(8*3);
 
   EEPROM.write(0,result_1);
   EEPROM.write(1,result_2);
   EEPROM.write(2,result_3);
   EEPROM.write(3,result_4);
}

long eeprom_lecture()
{
  long resultat = (EEPROM.read(0) + (EEPROM.read(1)<<8) + (EEPROM.read(2)<<16) + (EEPROM.read(3)<<24));
 
  return resultat;
}

Pour ce qui est de l'apprentissage du c je l'ai apprise sur http://www.siteduzero.com/ ils y'a des années avant même d'avoir un Arduino, je te conseille le c++ car l'orienter objet est très utile dans la conception de librairie pour l'arduino, il existe un tutoriel sur le site exprès rédiger pour les utilisateurs d'arduino, pour ce qui est des livres le site du zero publie des versions livre des tutoriels les plus populaires.
Logged

www.hatokuro.comuf.com site consacrer au rétrogaming

Offline Offline
Sr. Member
****
Karma: 0
Posts: 348
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci Lacolombenoir !!!

Je vais essayer ça même si ça me parait un peu du chinois...



Edit :

Je viens de télécharger le tuto du language C++ sur le site du zero, je vais le lire, si je vois que ça rentre, je commanderai leur livre.

Je m'aperçois qu'il faut quand même une base de programmation dès l'instant qu'on veut vraiment faire quelque chose de sérieux.

« Last Edit: April 08, 2013, 02:59:05 am by gunsman76 » Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 110
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui la programmation c'est le seul moyen de communiquer avec une machine,
Le jour ou tout le monde l'aura comprit des topics du genre "comment faire un jeu sans programmer" disparaitrons.  smiley-lol (je dit pas sa pour toi rassure toi)
Logged

www.hatokuro.comuf.com site consacrer au rétrogaming

Offline Offline
Full Member
***
Karma: 0
Posts: 110
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salut je suis revenu car j'ai découvert un moyen plus efficace pour découper une variable, sa ce nomme le "masquage" il requinque l'opérateur ET le principe est explique dans ce tutoriel si sa t'intéresse http://www.siteduzero.com/sciences/tutoriels/arduino-pour-bien-commencer-en-electronique-et-en-programmation/programmons-pour-utiliser-ce-composant.
Logged

www.hatokuro.comuf.com site consacrer au rétrogaming

Offline Offline
Sr. Member
****
Karma: 0
Posts: 348
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci !!!


Je vais etudier ça ce week-end, j'espère que ce sera la solution ultime !
Logged

Belgium
Offline Offline
Full Member
***
Karma: 1
Posts: 147
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour
Pas besoin de découper la variable en bytes.
Utiliser une variable de type long (4 bytes, valeur max. 2.147.483.647 environ).
Utiliser
Quote
    index = EEPROM_writeAnything (adresse,variable);
qui va écrire les 4 bytes .
A+
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 348
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Là je suis carrément content, ça va me simplifier la chose.


Je teste ça ce week-end et je vous tiens au courant.


Encore merci pour aide !
Logged

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5413
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Avant que tu demandes pourquoi ça compile pas voici le lien pour télécharger le code de EEPROM_writeAnything smiley-wink
http://playground.arduino.cc/Code/EEPROMWriteAnything
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Offline Offline
Sr. Member
****
Karma: 0
Posts: 348
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Vous commencez à me connaître...


Mais j'arriverai à faire bien, je commence à potasser le C++ ! (Tuto du site du Zero)



Merci pour votre aide, ce week-end ça va programmer dur  smiley
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 110
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ive123
Quote
Utiliser une variable de type long (4 bytes, valeur max. 2.147.483.647 environ).
j'ai du mal a te suivre comment un type long peu faire 4 bytes alors que en réaliser il en fais 32 ?
Logged

www.hatokuro.comuf.com site consacrer au rétrogaming

IDF/SO
Offline Offline
Edison Member
*
Karma: 41
Posts: 2311
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tu copiera 100 fois 4*8 =32 !

"byte" est un terme anglais, le terme officiel français est "octet" .
Donc 1 byte = 8 bits

et comme 4*8=32 tout est bon
Logged

IDF/SO
Offline Offline
Edison Member
*
Karma: 41
Posts: 2311
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Je viens de trouver ceci:
http://deans-avr-tutorials.googlecode.com/svn/trunk/EEPROM/Output/EEPROM.pdf

c'est un document écrit par un ingénieur d'application travaillant chez Atmel
Logged

Offline Offline
Full Member
***
Karma: 0
Posts: 110
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Oui le terme bytes et bits a crée un sacrée quiproquo, donc oui je confirme 4 bytes 32 bits.
Logged

www.hatokuro.comuf.com site consacrer au rétrogaming

Offline Offline
Sr. Member
****
Karma: 0
Posts: 348
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Donc je peux y aller ?

Je vois ça demain, je vous mettrai mon code ici.

En espérant que ça marche parce qu'hier, reset de la carte (je n'ai pas compris pourquoi), le comptage en cours a été perdu.


Une vrai galère
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 348
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour
Pas besoin de découper la variable en bytes.
Utiliser une variable de type long (4 bytes, valeur max. 2.147.483.647 environ).
Utiliser
Quote
    index = EEPROM_writeAnything (adresse,variable);
qui va écrire les 4 bytes .
A+



Là j'ai un soucis...


Dans la partie Setup :

EEPROM.read (0,compteur);


Dans la partie void :


EEPROM.write (0,compteur);


Donc là pas de soucis, sauf que maintenant je sais que le nombre de bits n'étant que de 1, je ne peux utiliser la valeur total de mon compteur.


Maintenant si j'ajoute :

EEPROM.writeAnything (0,compteur);

Là j'ai une erreur



 
Logged

Pages: 1 [2] 3   Go Up
Jump to: