temporizador

Hola a todos soy nuevo en el mundo arduino y programación, buscando en el foro encontré un código de un temporizador que esta muy bueno, lo probe y funciona, pero me gustaría que alguien me ayude a modificarle la tecla # y la tecla * , yo no pude entender como esta programada la parte del teclado, por eso pido ayuda, a quienes saben mas.

quiero que el temporizador parta presionando la tecla # y detener o pausar con * …
espero que me ayuden muchas gracias a todos…

me había colgado en otro post, pero Surbyte me dijo que debía abrir un nuevo post. dejare el código aqui,

#include <Arduino.h>
#include <TM1637Display.h>

// Module connection pins (Digital Pins)
#define CLK 2
#define DIO 3

int NewKeyPadVal = 0;

//----Input Code Digits--
int InputDigit1 =  0;
int InputDigit2 =  5;
int InputDigit3 =  0;
int InputDigit4 =  0;
//----------------------

TM1637Display display(CLK, DIO);
uint8_t data[] = { 0xff, 0xff, 0xff, 0xff };
void setup() 
{
  
  display.setBrightness(0x01);//MAX - 0x0f

   // Selectively set different digits
  data[0] = display.encodeDigit(0);
  data[1] = display.encodeDigit(0);
  data[2] = display.encodeDigit(0);
  data[3] = display.encodeDigit(0);
  display.setSegments(data);

  
  // initialize I/O pins.
   pinMode(A0, OUTPUT); //Relay or LED blinking Output at 0000
//--------------------------4x3 Keypad------------------  
  //------3 columns-----
  pinMode(A3, OUTPUT);
  pinMode(A2, OUTPUT);
  pinMode(A1, OUTPUT);
 
  digitalWrite(A3, HIGH);
  digitalWrite(A2, HIGH);
  digitalWrite(A1, HIGH);
  //-------4 rows-----------
  pinMode(6, INPUT_PULLUP);
  pinMode(7, INPUT_PULLUP);
  pinMode(8, INPUT_PULLUP);
  pinMode(9, INPUT_PULLUP);
  //------------------------ 

}

void loop() 
{

    
display.setSegments(data);
if(InputDigit1 == 0 && InputDigit2 == 0 && InputDigit3 == 0 && InputDigit4 == 0)
{
  delay(400);
  while(Scan_4x3_keypad() == 15)
  {
  delay(1);
  IfZero();
  }
  NewKeyPadVal = Scan_4x3_keypad();
  InputDigit1 = NewKeyPadVal;
  data[0] = display.encodeDigit(InputDigit1);
  display.setSegments(data);
//----------------------------------------------------
delay(400);
  while(Scan_4x3_keypad() == 15)
  delay(1);
  NewKeyPadVal = Scan_4x3_keypad();
  InputDigit2 = NewKeyPadVal;
   data[1] = display.encodeDigit(InputDigit2);
  display.setSegments(data);
//----------------------------------------------------
delay(400);
  while(Scan_4x3_keypad() == 15)
  delay(1);
  NewKeyPadVal = Scan_4x3_keypad();
  InputDigit3 = NewKeyPadVal;
   data[2] = display.encodeDigit(InputDigit3);
  display.setSegments(data);

//----------------------------------------------------
delay(400);
  while(Scan_4x3_keypad() == 15)
  delay(1);
  NewKeyPadVal = Scan_4x3_keypad();
  InputDigit4 = NewKeyPadVal;
   data[3] = display.encodeDigit(InputDigit4);
  display.setSegments(data);

//-----------------------------------------------------

// A continuación las 4 líneas de código para activar el buzzer cada segundo
  //digitalWrite(A0, HIGH); 
   //delay(150);
   //digitalWrite(A0, LOW); 
   //delay(150);
}

TimerCount(); //Cuenta regresiva
  
}

int TimerCount()
{

  digitalWrite(A0, HIGH); 
   delay(250);
   digitalWrite(A0, LOW); 
   delay(250);
  InputDigit4--;
  delay(80);
  if(InputDigit4 == -1)
  {
    InputDigit4 = 9;
    InputDigit3--;
  }
  if(InputDigit3 == -1)
  {
    InputDigit3 = 9;
    InputDigit2--;
  }
   if(InputDigit2 == -1)
  {
    InputDigit2 = 9;
    InputDigit1--;
  }
  data[0] = display.encodeDigit(InputDigit1);
  data[1] = display.encodeDigit(InputDigit2);
  data[2] = display.encodeDigit(InputDigit3);
  data[3] = display.encodeDigit(InputDigit4);

  
}


 void IfZero()  //Aqui se activa el bizzer intermitente cuando el contador llega a cero
 {
 if(InputDigit1 == 0 && InputDigit2 == 0 && InputDigit3 == 0 )
 {
   digitalWrite(A0, HIGH); 
   delay(100);
   digitalWrite(A0, LOW); 
   delay(100);
 }
 
 }

  int Scan_4x3_keypad()
{
  int keypadVal = 15;
  //----------Find 3,6,9,* ----
  digitalWrite(A3, LOW);
  digitalWrite(A2, HIGH);
  digitalWrite(A1, HIGH); 
  if(digitalRead(9) == LOW)  
  keypadVal = 3;
  if(digitalRead(8) == LOW)
  keypadVal = 6;  
  if(digitalRead(7) == LOW)
  keypadVal = 9;
  if(digitalRead(6) == LOW)
  keypadVal = 10;// 10 = #
  //---------------------------

  //----------Find 2,5,8,0 ----
  digitalWrite(A3, HIGH);
  digitalWrite(A2, LOW);
  digitalWrite(A1, HIGH); 
  if(digitalRead(9) == LOW)
  keypadVal = 2;
  if(digitalRead(8) == LOW)
  keypadVal = 5;
  if(digitalRead(7) == LOW)
  keypadVal = 8;
  if(digitalRead(6) == LOW)
  keypadVal = 0;
  //---------------------------

  //----------Find 1,4,7,* ----
  digitalWrite(A3, HIGH);
  digitalWrite(A2, HIGH);
  digitalWrite(A1, LOW); 
  if(digitalRead(9) == LOW)
  keypadVal = 1;
  if(digitalRead(8) == LOW)
  keypadVal = 4;
  if(digitalRead(7) == LOW)
  keypadVal = 7;
  if(digitalRead(6) == LOW)
  keypadVal = 11;// * = 11

  return keypadVal;
  //---------------------------
}

Por favor hay que leer los hilos que estan al comienzo de la sección Proyectos.
Si vas a una sección y antes lees

La pregunta es: debías postear aquí para hacer una consulta?
Respuesta: claro que no!!
De todos modos valoro que hayas posteado usando las etiquetas para código.
Hilo movido a Software.

alguien podría explicarme como esta programada la parte del Keypad? no logro entender como esta hecha, quizás alguien con más experiencia en programación pueda entenderla y darme algún camino para poder modificar las teclas # y *

Muchas Gracias...

David.

podrá algún administrador explicarme como es que está programada la parte del teclado en el código que del primer post, ya que no e tenido respuesta, no logro entenderlo…