Problème avec l'utilisation de la télécommande arduino

Bonjour, pour un projet, j’ai besoin que mon arduino effectue certaines étapes lorsque je lui demande, j’ai donc pensé à l’utilisation de la télécommande fournie avec mon kit. mon programme doit avoir la structure suivante :

si j’appuie sur la touche 1, alors :
instruction 1, à la fin je stocke une valeur dans la variable A

si j’appuie sur la touche 2, alors :
instruction 2, la variable A est utilisée, et je stocke une valeur dans la variable B

si j’appuie sur la touche 3, alors
execution d’un algorithme en boucle faisant intervenir la variable B

j’ai mis un extrait de mon code en pièce jointe. Lorsque je le compile, arduino me dit que l1 n’a pas été définie . Savez-vous comment remédier à ce problème ?

capteur_vitesse.ino (1.37 KB)

lisez les règles d'usage du forum et postez le code directement dans votre post

voici l’extrait de mon code :

/* importation de la bibliothèque infrarouge*/
#include <IRremote.h>
#include <LiquidCrystal.h> 

/* Constantes pour les broches */
const byte trig = 9; // Broche TRIGGER
const byte echo = 8; // Broche ECHO
const char IR = 2;
IRrecv recepteur(IR);
decode_results message;

/* Constantes pour le timeout */
const unsigned long time_out = 30000UL; // 25ms = ~8m à 340m/s

/* Vitesse du son dans l'air en mm/us */
const float c = 342.7 / 1000;

/** Fonction setup() */
void setup() {
   
  /* Initialise le port série */
  Serial.begin(115200);
  recepteur.enableIRIn();
  recepteur.blink13(true);

 
  /* Initialise les broches */
  pinMode(trig, OUTPUT);
  digitalWrite(trig, LOW); // La broche TRIGGER doit être à LOW au repos
  pinMode(echo, INPUT);
}

/** Fonction loop() */
void loop() {
  if (recepteur.decode(&message))
  {
    if (message.value == 0xFF30CF) /* Touche 1*/
    {
      digitalWrite(trig, HIGH);
      delayMicroseconds(10);
      digitalWrite(trig, LOW);
      
      long t1 = pulseIn(echo, HIGH, time_out);
      float l1 = (t1 / 2.0) * c;
    }
    if (message.value == 0xFF18E7) /* touche 2*/
    {
      digitalWrite(trig, HIGH);
      delayMicroseconds(10);
      digitalWrite(trig, LOW);

      long t2 = pulseIn(echo, HIGH, time_out);
      float l2 = (t2 / 2.0) * c;

      float theta = acos(l1 / l2);
    }
    delay(100);
    recepteur.resume();
  }
  delay(1);

}

les variables que vous définissez au sein d'un bloc {...} n'ont qu'une portée locale, quand vous sortez de la } fermante, elles disparaissent.

[sub]
    if (message.value == 0xFF30CF) /* Touche 1*/
    {
      digitalWrite(trig, HIGH);
      delayMicroseconds(10);
      digitalWrite(trig, LOW);
      
[color=blue]      long t1 = pulseIn(echo, HIGH, time_out);
      float l1 = (t1 / 2.0) * c;[/color]
    } // FERMETURE DU BLOC
[color=red]// ICI LES VARIABLES t1 ET l1 NE SONT PLUS CONNUES.[/color]
[/sub]

--> lisez un tuto sur la portée des variables / durée de vie (premier lien trouvé sur internet)