Page 1 sur 3

Une histoire à dormir debout

Posté : 07 août 2025, 11:57
par herwat
Bonjour à tous,

En ce moment, je suis en train d'écrire le programme pour l'APT de Patrice Et il vient de m'arriver une drôle d'histoire .
Je vous passe les détails mais en fin de "setup " , j'ai écrit les lignes suivantes :

EEPROM.get(20,Position [0][2]) ;
Serial.print("Position :");Serial.println(Position [0][2]);

J'avais au préalable écrit ces valeurs dans l'EEProm :

EEPROM.put(10, 12000) ; // Nombre de pas pour une position à 6 cm
EEPROM.put(20, 24000) ;
EEPROM.put(30, 36000) ;
EEPROM.put(40, 48000) ;

Pour essai, je téléverse le programme dans l'arduino MEGA et j'ouvre l'écran de controle .
La valeur afficjée est n’importe quoi

étonné, je téléverse le programme dans un Nano et là, pas de problème, j'obtiens bien la valeur 24000 . . . .

Alors si quelqu'un peut m'expliquer pourquoi un programme fonctionnant sur un nano, ne fonctionne pas sur mega , je serais très heureux ! ! !

J'ai fait de multiples tests .
Si j'écris la ligne suivante : EEPROM.get(20,y) ;Position [0][2] = y ; là, pas de problème ! ! ! :3: :3: :3: :3:

Pour fnir, j'ai écrit le petit programme test :

Code : Tout sélectionner

             /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
              * * * * *            Test EEPROM                          * * * * *
              * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


     */

    #include <EEPROM.h>
    #include <LiquidCrystal_I2C.h>
    #include <AccelStepper.h>
    #include <RotaryEncoder.h>     // Bibliothéque pour l'encodeur rotatif
    RotaryEncoder encodeur(A2, A3);// Borne de l'encodeur (DT, CLK) et déclaration de l'objet
    unsigned long Hauteur[2] = { 0,0} ;
    unsigned long Position [3][10] = { {0,0,0,0,0,0,0,0,0,0},
                                       {0,0,0,0,0,0,0,0,0,0},
                                       {0,0,0,0,0,0,0,0,0,0}, } ;
 
                                    
    void setup()
      { Serial.begin(9600);
     

        Premierefois () ;       // N'est executé qu'à la première mise sous tension
                                                                         // du Nano 
        EEPROM.get(1,Hauteur[1]) ;
        EEPROM.get(20,Position [0][2]) ;
        Serial.print("Hauteur :");Serial.println(Hauteur[1]);
        Serial.print("Position :");Serial.println(Position [0][2]);
      }

    void loop()
      {
        
      }
Et là, ça fonctionne sans soucis !
C'est à n'y rien comprendre . . . . .

Re: Une histoire à dormir debout

Posté : 07 août 2025, 12:00
par herwat
Ce matin, sans trop y croire, j'ai écrit les lignes suivantes :

for (i=1 ; i <= 4 ; i++) {EEPROM.get(10*i,Position [0]) ;
Serial.print("Position 0 :");Serial.println(Position [0]); }

Eh bien, devinez quoi, ça fonctionne parfaitement ! ! ! ! ! !

Ayant été jusqu'à mettre en doute mon arduino MEGA, j'ai fait les tests sur un autre et même soucis . . . .

Re: Une histoire à dormir debout

Posté : 07 août 2025, 13:12
par ramasoft
Je pense que tu as eu simplement un problème de liaison avec l'Arduino.
Faux contact dans les prises USB, interférences ou problème du driver USB sur ton PC ou même du câble.
Les Eprom sont aussi sensibles aux rayonnements électromagnétiques.

L'autre jour, j'allume ma bécane (j'ai 3 écrans) et sur l'écran du milieu les couleurs sont toutes rouges.
Je me dis que c'est un problème de faux contact d'une prise, je débranche, rebranche tripote les prises dans tous les sens, rien.
L'idée lumineuse me vient de relancer le PC ... rien, pareil.
Je finis par tout éteindre en coupant le courant, moniteurs compris et de rallumer ... et tout remarche normalement.

Re: Une histoire à dormir debout

Posté : 07 août 2025, 13:32
par herwat
ramasoft a écrit : 07 août 2025, 13:12 Je pense que tu as eu simplement un problème de liaison avec l'Arduino.
Faux contact dans les prises USB, interférences ou problème du driver USB sur ton PC ou même du câble.
Les Eprom sont aussi sensibles aux rayonnements électromagnétiques.
Hummm, pas convaincu, mais je veux bien y croire . . .
Le problème s'est étalé sur deux jours et sur plusieurs arduino, quand même, mais bon . . . .
Le principal est que maintenant ça fonctionne .

Sinon oui, il y a parfois des phénomènes bizarres et inexpliqué, en informatique ! :hhhaaaa:
Et un reset général résout le problème .

Re: Une histoire à dormir debout

Posté : 07 août 2025, 14:03
par likiki
J'ai passé le programme du NANO vers le MEGA, aucun soucis. :gratte:

Un problème de câble peut être ?

:a_suivre:

Re: Une histoire à dormir debout

Posté : 07 août 2025, 14:13
par herwat
likiki a écrit : 07 août 2025, 14:03
Un problème de câble peut être ?

:a_suivre:
Sais pas . . . .
Je ne pense pas car j'ai fait des tests sur deux postes de travail différents avec du matériel différents : le problème est récurent . . .

Mais puisqu'avec la boucle, le problème a disparu, je continue !
Humm, il a disparu mais n'est pas résolu ! :pur:

Re: Une histoire à dormir debout

Posté : 07 août 2025, 14:15
par C2Vues-BricoTrain
ramasoft a écrit : 07 août 2025, 13:12.
Je finis par tout éteindre en coupant le courant, moniteurs compris et de rallumer ... et tout remarche normalement.
Un phénomène que j'ai aussi connu dû à l'électricité statique qui se charge dans l'appareil.
Sur les PC portabes, il suffisait de retirer la batterie et d'appuyer sur le bouton marche pendant 10 à 20 secondes, histoire de "vider" le peu de courant résiduel, mais aussi de vider la Novram...
On remettait la batterie, puis on redémarrait le portable
Sur les PC fixes, on les débranchait du secteur, et on faisait la même manipulation d'appuyer sur le bouton marche pendant quelques secondes, puis de le rebrancher et le démarrer.
Pour vider la Novram sur PC, on le faissait directement sur la carte mère, il y avait un cavalier pour celà...

Re: Une histoire à dormir debout

Posté : 07 août 2025, 14:36
par herwat
Je pense, hélas, avoir trouvé tout ou partie de la solution
Programme chargé sur le MEGA 1 ; résultat :
.
Ecran01.JPG
.
Et sur le MEGA 2 :
.
Ecran02.JPG
.
Serait-il "légèrement" défectueux ? ? ? je le crains, oui . . . . :hurt4: :hurt4: :hurt4:

Re: Une histoire à dormir debout

Posté : 07 août 2025, 14:54
par ramasoft
C'est possible que son Eprom soit défectueuse. C'est toujours la 2eme valeur qui est fausse.
Tu peux essayer d'occuper la zone mémoire qui semble poser problème avec des données de remplissage et d'écrire plus loin = écrire 8 valeurs pour ne se servir que des 4 dernières.

Re: Une histoire à dormir debout

Posté : 07 août 2025, 15:14
par herwat
Oui, tu as raison .
J'essaierai plus tard , raz le bol ! :hhhaaaa:


Aaaahhhhh ! ! ! ! ces composants chinois . . . .

Re: Une histoire à dormir debout

Posté : 07 août 2025, 16:06
par ramasoft
Oui, ce n'est pas de la première qualité et de temps en temps il y a des problèmes mais vu la différence de prix, on reste quand même gagnant.
Il est aussi possible de choisir l'adresse d'écriture du tableau.

Re: Une histoire à dormir debout

Posté : 07 août 2025, 16:12
par herwat
Il fait parti d'une série d'arduino MEGA achetés avant covid à environ 5€ ! Depuis, ils ne sont jamais redescendus aussi bas .
il sont en ce moment à environ 12 ou 13 €
Contrairement aux Nano que l'on trouve maintenant aux alentour de 2€ .

Re: Une histoire à dormir debout

Posté : 07 août 2025, 16:13
par ramasoft
Ah oui, bonne affaire :cooooool:
J'avais payé 16,19€ le Mega que j'avais pris pour l'ascenseur...

Re: Une histoire à dormir debout

Posté : 07 août 2025, 17:05
par likiki
Ha oui, 5€ la MEGA ? Superbe affaire.

essaye avec un adressage de 100 comme par exemple :

Code : Tout sélectionner

EEPROM.put(100, 12000) ; // Nombre de pas pour une position à 6 cm
EEPROM.put(200, 24000) ;
EEPROM.put(300, 36000) ;
EEPROM.put(400, 48000) ;

Re: Une histoire à dormir debout

Posté : 07 août 2025, 17:18
par herwat
Je te ferai la même réponse qu'à Patrick, un peu plus haut . . . : Raz le bol ! :hhhaaaa:
J'ai assez galéré sur c'histoire !
Mais j'essaierai un jour . . . . peut-être . . . . :siffle:

Re: Une histoire à dormir debout

Posté : 07 août 2025, 17:45
par likiki
:hhhaaaa: :hhhaaaa: :hhhaaaa: :hhhaaaa:

Re: Une histoire à dormir debout

Posté : 07 août 2025, 18:32
par ramasoft
Ras le bol.jpg
:haaaa:

Re: Une histoire à dormir debout

Posté : 07 août 2025, 20:05
par C2Vues-BricoTrain
:hhhaaaa: :hhhaaaa: :hhhaaaa: :hhhaaaa:

Re: Une histoire à dormir debout

Posté : 08 août 2025, 14:38
par patrice_b
Truc de fou cette histoire. :pur: :pur:

Re: Une histoire à dormir debout

Posté : 08 août 2025, 18:46
par herwat
Bon, ça me tracasse, tout de même . . . .
J'ai donc fait ce petit programme simple pour tester toutes les adresses mémoire de 1 à 100 :

Code : Tout sélectionner

    #include <EEPROM.h>
    int a ; int y ; int i ; 
void setup()
     {
      Serial.begin(9600);
      for (i=1 ; i <= 100 ; i++)
          {
           EEPROM.write(i, i);
          }
      for (i=1 ; i <= 100 ; i++)
          {
           a = EEPROM.read(i) ;
           Serial.print("Valeur lue :");Serial.println(a);
          }

     }

void loop()
     {
  
     
Eh bien tout est correct !
Histoire de rajouter du flou au flou ! :siffle:

Re: Une histoire à dormir debout

Posté : 08 août 2025, 18:50
par herwat
Et dans une tentative désespérée , j'ai fait cette petite transformation :

Serial.begin(9600);
for (i=1 ; i <= 100 ; i++)
{
EEPROM.write(i, 255);

Histoire de saturer tous les octets .
Eh ben, c'est pareil : tout bon . . . .

Re: Une histoire à dormir debout

Posté : 08 août 2025, 19:42
par ramasoft
C'est un défaut aléatoire mais qui se produit quand même sur une adresse précise: celle de la position 2.
Donc en ne l'utilisant plus, ça devrait aller, du moins s'il n'y a pas d'autres cellules mémoires défectueuses.

Re: Une histoire à dormir debout

Posté : 08 août 2025, 20:25
par herwat
J'ai changé de MEGA . C'est plus simple ! :siffle:

Re: Une histoire à dormir debout

Posté : 08 août 2025, 20:26
par patrice_b
Et ca ne le fait plus ?

Bug sur un vieux Arduino méga alors...

Re: Une histoire à dormir debout

Posté : 08 août 2025, 20:28
par herwat
patrice_b a écrit : 08 août 2025, 20:26 Et ca ne le fait plus ?
ça recommencera quand il sera chez toi ! ! ! :siffle: :siffle: :siffle: :hhhaaaa: :hhhaaaa: :hhhaaaa: