Bonjour,

Comme toujours après avoir passé des heures sur un programme, on finit par ne plus voir ce qui est sans doute évident....

J'ai une fonction appelée f3 qui ne doit pouvoir faire quelque chose QUE si une variable nommée "active_input" prend un certaine valeur, en l'occurrence la valeur "REW_CUEING_1/3rd".

Le code de f3 commence donc par un test (voir si active_input a une valeur autorisant f3 à continuer), qui, s'il n'est pas satisfait, interdit à fd'exécuter les actions qu'elle est sensée faire;

Le code et la sortie du Moniteur série se trouvent ci-dessous, mais je ne comprends pas pourquoi rien ne se passe alors que le test devrait être satisfait puisque "active_input" a bien la valeur souhaitée ???

Voici la sortie du Moniteur Série:
Nom : if de F3_M.JPG
Affichages : 275
Taille : 66,3 Ko

et le code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
void f3()
	{	//les 5 lignes ci-dessous permettent de connaitre les valeurs des booléens permettant ou pas,
		// d'enclancher les actions de f3
		Serial.print(F("Entrée dans void f3: valeur de status_rew_engaged= "));
		Serial.println(status_rew_engaged);
		Serial.println(F("et"));
		Serial.print(F("Entrée dans void f3: valeur de status_function_pause= "));
		Serial.println(status_function_pause);
		Serial.print(F("Entrée dans void f3: valeur de status_f3_engaged= "));
		Serial.println(status_f3_engaged);
 
		//les deux vaeurs ci-dessous définissent si on rentre dans F3 ou pas
		Serial.print(F("TEST PRINCIPAL void f3: valeur de active_input= "));
		Serial.println(active_input);
 
		if((active_input == "REW_CUEING_1/3rd")||(active_input == "REW_CUEING_1/6th"))
		// ce test est le test principal autorisant ou non, l'activation de F3:
 
		{
				if(status_f3_engaged == false)   // c'est-àdire si F3 n'est pas déjà engagée
 
				{
					Serial.println(F("void f3 partie false: Réception du code du Bouton F3:"));
					Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
 
					Serial.print(F("void f3 partie false: valeur de status_f3_engaged= "));
					Serial.println(status_f3_engaged); 		
 
					digitalWrite(relai_REW,HIGH);	
					Serial.println(F("void f3 partie false: relai_REW passé à HIGH et on le laisse à HIGH"));
					Serial.println(F("et donc l'appareil baisse sa vitesse à 1/6ème"));
 
 
					Serial.println(F("void f3 partie false: relai_REW toujours à HIGH"));
 
					status_f3_engaged = !status_f3_engaged; // inverse le status de la fonction F3 à true puisqu'on vient de l'appeler
 
					Serial.print(F("void f3 partie false: le status_f3_engaged a été passé à "));
					Serial.println(status_f3_engaged);
					Serial.println();
 
					strcpy(active_input, "REW_CUEING_1/6th");	
 
					lcd.clear(); // clear display
					lcd.setCursor(0,1); // left second line (1 from 1-16, Ligne 1 from 0-1)
					lcd.print(" < CUEING 1/6th"); 
				}
				else	
				{
					Serial.println(F("void f3 partie true: Réception du code du Bouton F3:"));
					Serial.println(IrReceiver.decodedIRData.decodedRawData, HEX);
 
					Serial.print(F(" partie true: valeur de status_f3_engaged= "));
					Serial.println(status_f3_engaged); // affiche true ou false selon la valeur de ce booléen
					Serial.println(F("void f3 partie true: devrait etre vrai, donc Relai_REW devrait etre actif"));
 
					status_f3_engaged = !status_f3_engaged; // inverse le status de la fonction F3 à true puisqu'on vient de l'appeler
 
					digitalWrite(relai_REW,LOW);	
					Serial.println(F("void f3 partie true: relai_REW passé à LOW"));
					Serial.println(F("void f3 partie true: et donc l'appareil devrait re-accélerer à 1/3rd tout en restant en CUEING ARRIERE"));
 
					strcpy(active_input, "REW_CUEING_1/3rd"); 
 
					lcd.clear(); // clear display
					lcd.setCursor(0,1); // left second line (1 from 1-16, Ligne 1 from 0-1)
					lcd.print(" < CUEING 1/3rd"); // affiche que l'on est en CUEING ARRIERE 1/3rd
				}
		}
	}
// ---------------------------------------------------------------------------------------------------------------
// FIN DE LA DELARATION DE LA FONCTION FACTORISEE F3
Comme d'habitude ce doit être ultra-simple, mais après des jours sur du code, on n'y voit plus rien...
Merci