Pulsado largo para memorizar y pulso corto mostrar el numero memorizado

Buenas Amigos ..

necesito realizar un boton con doble funcion, primero que al tener presionado el boton me memorice un numero y luego al pulsarlo rapido me muestre el numero memorizado,, pero si quiero memorizar otro numero manteniendo pulsado pueda y no me llame al numero memorizado anteriormente..no se si se entiende..

seria algo asi

mantengo presionado memoriza..
pulsacion corta muestra numero memorizado
mantengo presionado memoriza otro numero..

Moderador:
Primero, lee las normas del foro.
Aprende que un título no puede llevar la palabra ayuda, razón por la que lo edité.
Segundo, el foro no hace programas a menos que alguien tenga ganas de hacertelo, la idea es que tu hagas lo que puedas y nos consultes las dudas.

hola surbyte .
Perdon por lo de ayuda.. olvide eso..

tengo realizado esto atravez de un bucle while el problema es que necesito que el codigo no se detenga y puedo digamos simular el  multihilo..
intente con pulseIN(), pero tambien detiene todo.
perdon si no pongo el codigo completo pero son 36 pestañas con cientos de lineas.

[ long mem1=3200;
  long mem2=4800;
  long mem3=5600;
  long mem4=6500;
  unsigned long tmem1 = 0;
  unsigned long memo1 = 0;
  unsigned long memo2 = 0;
  unsigned long memo3 = 0;
  unsigned long memo4 = 0;
TFT_HX8357 LCD= TFT_HX8357();

void setup(){
Serial.begin(9600);
 DMXSerial2.init(&rdmInit,processCommand);
 uint16_t start = DMXSerial2.getStartAddress();
  //analogReference(EXTERNAL);
  pinMode(RedPin,OUTPUT);
  pinMode(BluePin,OUTPUT);
  pinMode(GreenPin,OUTPUT);
  pinMode(WarmPin,OUTPUT);
  pinMode(CoolPin,OUTPUT);
  pinMode(46,OUTPUT);
  pinMode(51,OUTPUT);
  pinMode(49,INPUT);//MODE UP
  pinMode(48,INPUT);//MODE DOWN
  pinMode(50,INPUT);//RIGHT - DERECHA
  pinMode(52,INPUT);//LEFT  - IZQUIERDA
  pinMode(53,INPUT);//UP - ARRIBA
  pinMode(16,INPUT);//DOWN -ABAJO
  pinMode(13, INPUT_PULLUP);// MEMORY 1
  pinMode(17, INPUT_PULLUP);//MEMORY2
  pinMode(11, INPUT_PULLUP); //MEMORY 3
  pinMode(12, INPUT_PULLUP); //MEMORY4
  pinMode(0,INPUT);//FAN FAIL
  pinMode(1,INPUT);//AUXILIAR
  pinMode(3,INPUT);//BATERY CONNECT
  pinMode(4,INPUT);//WARNING TEMP

TCCR2B =_BV( CS40 );

TCCR4A = _BV ( COM4A1 ) | _BV ( COM4B1 )| _BV ( COM4C1 ) |_BV ( WGM41 )  ;
TCCR4B =_BV ( WGM43 )|_BV ( WGM42 )|_BV( CS40 );

 ICR4=1070;

  LCD.init();
  LCD.setRotation(3);
  LCD.fillScreen(WHITE);
  LCD.setTextColor(BLACK,WHITE);
  
  white();

  
}
void loop(){}

void white(){
while(1){

while(digitalRead(13)==LOW){memo1++;}
if(memo1/100000>2){mem1=CCT2; }
if((memo1>=1)&&(memo1/100000<=2)){CCT2=mem1; }

Serial.println(memo1);}

codigo que necesita ser ejecutado
sin detenerse}



]

Hola

La librería OneButton te puede facilitar mucho la programación en estos casos. Tuve un problema parecido y lo soluciné con esa librería, que me pareció bastante completa y sencilla de usar, aunque hay muchas más que trabajan de forma diferente. Busca en Github o por google la que más se pueda adaptar al programa.

Espero que sirva.

Saludos

Hola gracias .. voy a ir por ese lado entonces, a ver si esa librería me puede ayudar.