While / CONTROL IR / control de paro

Busco introducir en un while el codigo que me arroja un modulo IR, con la libreria IR.
Me podrian decirme en que temas documentarme para poder utilizar un while para poder detener toda una secuencia? como un boton te paro

Me gustaria añadir el while, antes de la instruccion del switch

#include "IRremote.h"// libreria IR
#define BOTON_1 0xFF6897
#define BOTON_2 0xFF9867
#define BOTON_3 0xFFB04F

#define DERECHA 0xFFC23D
#define IZQUIERDA 0xFF22DD



int recibeIR= 11; // detecta control
int driverPUL=7;  // pulsos
int driverDIR=6;  // direccion
int v;

int LEDVERDE =2;
int LEDNARANJA=3;
int LEDAMARILLO=4;

 IRrecv irrecv(recibeIR);
 decode_results codigo;

 void setup (){
    Serial.begin(9600);
    irrecv.enableIRIn(); //recibe info

    pinMode(driverPUL,OUTPUT);
    pinMode(driverDIR,OUTPUT);

    pinMode(LEDVERDE,OUTPUT);
    pinMode(LEDNARANJA,OUTPUT);
    pinMode(LEDAMARILLO,OUTPUT);
  
  }

  void loop (){

    
    
   if (irrecv.decode(&codigo)){
    
//  while(codigo.value == BOTON_3){    
    v=codigo.value; // lectura
    Serial.print("Boton: ");
    Serial.println(codigo.value);
    irrecv.resume();
    }

   switch(v){
    // 5 VECES
    case BOTON_1: 
 
        digitalWrite(LEDVERDE,HIGH);
      for(int x=0;x<=2400;x++)
      {
        
         digitalWrite(driverDIR, HIGH); //derecha
         digitalWrite(driverPUL,HIGH);
         delayMicroseconds(600);
         digitalWrite(driverPUL,LOW); // tren de pulsos para activarlo
         delayMicroseconds(600);
        
      }
        digitalWrite(LEDVERDE,LOW);
     break;

     case BOTON_2:
     digitalWrite(LEDNARANJA,HIGH);
      for(int x=0;x<=600;x++)
      {
         digitalWrite(driverDIR, HIGH); //derecha
         digitalWrite(driverPUL,HIGH);
         delayMicroseconds(600);
         digitalWrite(driverPUL,LOW); // tren de pulsos para activarlo
         delayMicroseconds(600);
      }
        digitalWrite(LEDNARANJA,LOW);
      break;

      case BOTON_3:
        digitalWrite(LEDAMARILLO,HIGH);
      for(int x=0;x<=200;x++)
      {
         digitalWrite(driverDIR, LOW); //derecha
         digitalWrite(driverPUL,HIGH);
         delayMicroseconds (1000);
         digitalWrite(driverPUL,LOW); // tren de pulsos para activarlo
         delayMicroseconds(1000);
        
      }
        digitalWrite(LEDAMARILLO,LOW);
      break;

      case DERECHA:
        digitalWrite(LEDAMARILLO,HIGH);
        for(int x=0;x<=20;x++)
      {
         digitalWrite(driverDIR,HIGH); //derecha
         digitalWrite(driverPUL,HIGH);
         delay(10);
         digitalWrite(driverPUL,LOW); // tren de pulsos para activarlo
         delay(10);
        
      }
          digitalWrite(LEDAMARILLO,LOW);
        break;

       case IZQUIERDA:
        digitalWrite(LEDVERDE,HIGH);
        for(int x=0;x<=20;x++)
        {
          digitalWrite(driverDIR,LOW);//IZQUIERDA
          digitalWrite(driverPUL,HIGH);
          delay(10);
          digitalWrite(driverPUL,LOW);
          delay( 10);
        }
        digitalWrite(LEDVERDE,LOW);
        break;
    
   }
   
  }

Su publicacion se MUEVE a su ubicacion actual ya que es mas adecuada.

Moderador:
Doble posteo hilo cerrado.
siguiente doble posteo será sancionado con 1 dia sin poder ingresar al foro.


sigue en este hilo.


Además, si posteas en el foro en inglés usa idioma inglés para expresarte.
Si escribes en español debes usar el foro Arduino en español.