Problème troublant.....

Bonjour,

Ceci est mon premier post sur le forum arduino. Je vais essayer de vous exposer mon problème ainsi qu'un petit bout de code montrant le dysfonctionnement constaté.

j'ai deux variables déclarées comme suit :

char* numero1 = "TOTO"
char* numero2 = "TOTO"

Une fonction Lire_eprom qui lit l'EEprom de l'arduino et stocke le numéro lu dans l'eeprom dans numero2. J'ai simplifié pour que vous puissiez tester sans avoir a remplir votre EEPROM, j'ai echangé par un un autre char* qui se copie dedans comme la copie eeprom

Jusque là tout va bien dans le principe mais si on essaye ça ne marche pas !!!

Par contre si vous changer numero1 ou numero2 pour qu'ils soient differents l'un de l'autre cela marche :astonished: :fearful:

OU est l'erreur ?

D'avance merci pour vos réponses

#include <EEPROM.h>


char* numero1 = "TOTO";
char* numero2 = "TOTO";
char* num_eprom = "azer";

void setup() {
  // put your setup code here, to run once:


Serial.begin (9600);
delay(1500);
//ecrire_eeprom();
//delay(50000);



Serial.println ("Avant la modif");
Serial.print ("numero1 : ");
Serial.println (numero1);
Serial.print ("numero2 : ");
Serial.println (numero2);
delay(1500);

lire_eeprom ();
delay(1500);

Serial.println ("Apres la modif");
Serial.print ("numero1 : ");
Serial.println (numero1);
Serial.print ("numero2 : ");
Serial.println (numero2);

}

void loop() {
  // put your main code here, to run repeatedly:

}
void lire_eeprom()
{
	int i = 0;
	Serial.print("Avant lecture eprom :");
	Serial.println (numero2);
		
	for (i=0;i<5;i++)
	{	
		Serial.print(char(num_eprom[i]));
		Serial.print (" ");
		numero2[i]=(num_eprom[i]);
	}
	
	Serial.print("Apres lecture eprom :");
	Serial.println (numero2);
}

:confused:
La description de ton problème est incompréhensible.

Je me disait aussi je comprend rien je suis pas le seul...

Ben c'est pourtant simple,
numéro1 et numéro2 sont des pointeurs
tu les fais pointer vers la même chose "TOTO"
donc ils sont égaux, je pense qu'il n'y a pas de problème.
Maintenant, c'est peut être pas ce que tu voulais faire.
Si tu veux qu'ils pointent vers 2 zones mémoires différentes il faut les déclarer différemment.
Le plus simple serait d'ailleurs de déclarer tout simplement 2 tableaux de 5 char ce qui éviterait ton problème.

Merci pour la réponse.
Je suis d'accord avec vous numero1 et numero2 sont des pointeurs.

ok. Je ne pensais pas que le compilateur comprenne ces choses là. Pour moi pointeur numero1 pointe sur "TOTO" et pointeur numero2 pointe "TOTO" mais ailleurs.

Je comprends mieux certaines choses du coup. Merci.

Il faut donner un nom de variable à la chaîne "TOTO".
Et tu fais pointer numero1 et numero2 sur cette variable unique.