Programacion de llamador (Solucionado)

Que tal buenas a todos:

Estoy trabajando en un llamador que funciona de la siguiente manera:
hay 4 habitaciones y en cada una de ellas hay un botón, cada vez que se toca un botón se enciende un led que corresponde a la habitación, suena una nota en un parlante y en una pantalla lcd marca el numero que representa a la habitación (1,2,3,4). En el lcd se ordena de izquierda a derecha y con un quinto botón se borra el contenido del lcd y comienza de cero.
Se me presentan dos problemas,el primero seria es que al pulsarse el quinto botón necesitaría que no se borren todos los números si no que se borre el primero del lado izquierdo y se corran los demás dígitos para el mismo lado.
El segundo problema es que aun no logro poner una melodía de timbre, ya que el que suene un nota distinta por cada habitación es algo irritante
La placa con la que estoy trabajando es una arduino uno y una pantalla lcd con i2c

desde ya muchas gracias, dejo el codigo abajo

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);
const int boton = 3;
const int boton_2 = 4;
const int boton_3 = 5;
const int boton_4 = 6;
const int boton_5 = 7;
const int led = 8;
const int led_2 = 9;
const int led_3 = 10;
const int led_4 = 11;
const int zumbador = 13;

void clear() {
    lcd.setCursor(0, 0);
    lcd.print("Numero de Habitacion");
    digitalWrite(led, LOW);
    digitalWrite(led_2, LOW);
    digitalWrite(led_3, LOW);
    digitalWrite(led_4, LOW);
    noTone(zumbador);
}
void boton1() {
if (digitalRead(9) == HIGH && digitalRead(10)== HIGH && digitalRead(11)== HIGH) {
        lcd.setCursor(9, 1);
        lcd.print("1");
} if (digitalRead(9)== HIGH && digitalRead(10)== HIGH && digitalRead(11)== LOW) {
  lcd.setCursor(6, 1);
        lcd.print("1");
} if (digitalRead(9)== HIGH && digitalRead(10)== LOW && digitalRead(11)== HIGH){
       lcd.setCursor(6, 1);
        lcd.print("1");
} if (digitalRead(9)== LOW && digitalRead(10)== HIGH && digitalRead(11)== HIGH) {
   lcd.setCursor(6, 1);
        lcd.print("1");}
        if (digitalRead(9) == HIGH && digitalRead(10)== LOW && digitalRead(11)== LOW) {
        lcd.setCursor(3, 1);
        lcd.print("1");
} if (digitalRead(9)== LOW && digitalRead(10)== LOW && digitalRead(11)== HIGH) {
  lcd.setCursor(3, 1);
        lcd.print("1");
} if (digitalRead(9)== LOW && digitalRead(10)== HIGH && digitalRead(11)== LOW){
       lcd.setCursor(3, 1);
        lcd.print("1");
} if (digitalRead(9)== LOW && digitalRead(10)== LOW && digitalRead(11)== LOW) {
   lcd.setCursor(0, 1);
        lcd.print("1");}
}
void boton2 () {
if (digitalRead(8) == HIGH && digitalRead(10)== HIGH && digitalRead(11)== HIGH) {
        lcd.setCursor(9, 1);
        lcd.print("2");
} if (digitalRead(8)== HIGH && digitalRead(10)== HIGH && digitalRead(11)== LOW) {
  lcd.setCursor(6, 1);
        lcd.print("2");
} if (digitalRead(8)== HIGH && digitalRead(10)== LOW && digitalRead(11)== HIGH){
       lcd.setCursor(6, 1);
        lcd.print("2");
} if (digitalRead(8)== LOW && digitalRead(10)== HIGH && digitalRead(11)== HIGH) {
   lcd.setCursor(6, 1);
        lcd.print("2");}
        if (digitalRead(8) == HIGH && digitalRead(10)== LOW && digitalRead(11)== LOW) {
        lcd.setCursor(3, 1);
        lcd.print("2");
} if (digitalRead(8)== LOW && digitalRead(10)== LOW && digitalRead(11)== HIGH) {
  lcd.setCursor(3, 1);
        lcd.print("2");
} if (digitalRead(8)== LOW && digitalRead(10)== HIGH && digitalRead(11)== LOW){
       lcd.setCursor(3, 1);
        lcd.print("2");
} if (digitalRead(8)== LOW && digitalRead(10)== LOW && digitalRead(11)== LOW) {
   lcd.setCursor(0, 1);
        lcd.print("2");}
}
void boton3 (){
  if (digitalRead(8) == HIGH && digitalRead(9)== HIGH && digitalRead(11)== HIGH) {
        lcd.setCursor(9, 1);
        lcd.print("3");
} if (digitalRead(8)== HIGH && digitalRead(9)== HIGH && digitalRead(11)== LOW) {
  lcd.setCursor(6, 1);
        lcd.print("3");
} if (digitalRead(8)== HIGH && digitalRead(9)== LOW && digitalRead(11)== HIGH){
       lcd.setCursor(6, 1);
        lcd.print("3");
} if (digitalRead(8)== LOW && digitalRead(9)== HIGH && digitalRead(11)== HIGH) {
   lcd.setCursor(6, 1);
        lcd.print("3");}
        if (digitalRead(8) == HIGH && digitalRead(9)== LOW && digitalRead(11)== LOW) {
        lcd.setCursor(3, 1);
        lcd.print("3");
} if (digitalRead(8)== LOW && digitalRead(9)== LOW && digitalRead(11)== HIGH) {
  lcd.setCursor(3, 1);
        lcd.print("3");
} if (digitalRead(8)== LOW && digitalRead(9)== HIGH && digitalRead(11)== LOW){
       lcd.setCursor(3, 1);
        lcd.print("3");
} if (digitalRead(8)== LOW && digitalRead(9)== LOW && digitalRead(11)== LOW) {
   lcd.setCursor(0, 1);
        lcd.print("3");}
}
void boton4 (){
  if (digitalRead(8) == HIGH && digitalRead(9)== HIGH && digitalRead(10)== HIGH) {
        lcd.setCursor(9, 1);
        lcd.print("4");
} if (digitalRead(8)== HIGH && digitalRead(9)== HIGH && digitalRead(10)== LOW) {
  lcd.setCursor(6, 1);
        lcd.print("4");
} if (digitalRead(8)== HIGH && digitalRead(9)== LOW && digitalRead(10)== HIGH){
       lcd.setCursor(6, 1);
        lcd.print("4");
} if (digitalRead(8)== LOW && digitalRead(9)== HIGH && digitalRead(10)== HIGH) {
   lcd.setCursor(6, 1);
        lcd.print("4");}
        if (digitalRead(8) == HIGH && digitalRead(9)== LOW && digitalRead(10)== LOW) {
        lcd.setCursor(3, 1);
        lcd.print("4");
} if (digitalRead(8)== LOW && digitalRead(9)== LOW && digitalRead(10)== HIGH) {
  lcd.setCursor(3, 1);
        lcd.print("4");
} if (digitalRead(8)== LOW && digitalRead(9)== HIGH && digitalRead(10)== LOW){
       lcd.setCursor(3, 1);
        lcd.print("4");
} if (digitalRead(8)== LOW && digitalRead(9)== LOW && digitalRead(10)== LOW) {
   lcd.setCursor(0, 1);
        lcd.print("4");}
}
/***   Setup  ***/
void setup() {
     // Inicializar el LCD
  lcd.init();
  
  //Encender la luz de fondo.
  lcd.backlight();
    pinMode(boton, INPUT);
    pinMode(boton_2, INPUT);
    pinMode(boton_3, INPUT);
    pinMode(boton_4, INPUT);
    pinMode(boton_5, INPUT);
    pinMode(led, OUTPUT);
    pinMode(led_2, OUTPUT);
    pinMode(led_3, OUTPUT);
    pinMode(led_4, OUTPUT);
    lcd.begin(16, 2);
    lcd.clear();
    pinMode(zumbador, OUTPUT);
    lcd.setCursor(0, 0);
    lcd.print("Numero de Habitacion");

}
/***   Loop  ***/
void loop() {
    if (digitalRead(boton) == 1) {
        digitalWrite(led, HIGH);
        tone(zumbador, 261, 2000);
        boton1();
    }
    if (digitalRead(boton_2) == 1) {
        digitalWrite(led_2, HIGH);
        tone(zumbador, 293, 2000);
        boton2();
    }
    if (digitalRead(boton_3) == 1) {
        digitalWrite(led_3, HIGH);
        tone(zumbador, 329, 2000);
        boton3();
    }
    if (digitalRead(boton_4) == 1) {
        digitalWrite(led_4, HIGH);
       tone(zumbador, 349, 2000);
        boton4();
    }
    if (digitalRead(boton_5) == 1) {
      lcd.clear();
      clear();
    }
}

Se me ocurre algo que tal vez simplifique un poco tu código. Te paso un esquema de la idea, la cual seguramente necesite retoques, pero te puede servir como base.

char hab[4]; // creo un array para las posiciones del lcd
int puntero=0; // apunta a la posición en el lcd
int i=0;
int led[]={8,9,10,11};

// dentro del loop()

if ( digitalRead ( botonx)==0) // botonx serían boton1,2,3 y 4 respectivamente ( deberías hacer un if por cada boton)
{digitalWrite( led[x],HIGH); // enciendo led correpondiente
lcd.setCursor(1,(puntero*5+2));// el primer dato en posición 2, segundo en 7, 3º en 12 y 4º en 17,  cambialo a tu gusto
lcd.print("x"); // entiéndase x al numero de habitación en cada if
hab[puntero]=x;// cargo en numero de habitación en la posición del lcd
puntero++; // salto a la próxima posicion del display
}
if( digitalRead (botonclear)==0)// cuando apretas el boton de clear
digitalWrite(led[hab[0]],LOW);// apago led posición 1
{for (i=0; i<3 ; i++)
{ hab[i+1]= hab[i+2]; // desplazo las habitaciones a la posición anterior en el display
}
hab[4]=" "; //limpio última posición
for( i=0 ; i<4 ; i++)
{lcd.setCursor(1,(i*5+2));
lcd.print(hab[i]);
}

No lo probé si funciona, pero fijate si no tiene errores y completalo. Suerte

Me fui a dormir y con la almohada encontramos un montón de errores , a saber:

Me olvidé contemplar los rebotes de los pulsadores
No te avisé que hay que poner las entradas en pullup
Puse los parámetros de setCursor al reves
No tuve en cuenta las " rellamadas"

int hab[4]; // creo un array para las posiciones del lcd
int puntero=0; // apunta a la posición en el lcd
int i=0;
int led[]={8,9,10,11};
setup(){
// poner las entradas como pullup

// dentro del loop()

if ( digitalRead ( botonx)==0 && led[x]==0) // botonx serían boton1,2,3 y 4 respectivamente ( deberías hacer un if por cada boton)
{digitalWrite( led[x],HIGH); // enciendo led correpondiente
btnBounce(botonx);
lcd.setCursor((puntero*5+2),1);// el primer dato en posición 2, segundo en 7, 3º en 12 y 4º en 17,  cambialo a tu gusto
lcd.print("x"); // entiéndase x al numero de habitación en cada if
hab[puntero]=x;// cargo en numero de habitación en la posición del lcd
puntero++; // salto a la próxima posicion del display
}
if( digitalRead (botonclear)==0)// cuando apretas el boton de clear
{digitalWrite(led[hab[0]],LOW);// apago led posición 1
puntero--;
for (i=0; i<3 ; i++)
{ hab[i+1]= hab[i+2]; // desplazo las habitaciones a la posición anterior en el display
}
hab[4]=" "; //limpio última posición
for( i=0 ; i<4 ; i++)
{lcd.setCursor((i*5+2),1);// imprime en el lcd los valores actualizados
lcd.print(hab[i]);
}
void btnBounce(int btnPin) {//espera hasta que no haya rebotes

  while (digitalRead(btnPin) == LOW);
  delay(50);
  
}

No lo compilé asique no se si tiene errores de sintaxis. Seguramente tenga algún error de programación pero espero se entienda el concepto.

que tal Pablo muchas gracias por tu aporte, creo que lo que estoy buscando va por ahí, sin embargo aun no logro compilarlo, no llevo mucho tiempo programando arduino puede que tenga bastantes errores.

dejo el codigo aqui

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);
const int boton = 3;
const int boton_2 = 4;
const int boton_3 = 5;
const int boton_4 = 6;
const int boton_5 = 7;
const int zumbador = 13;
int hab[4]; // creo un array para las posiciones del lcd
int puntero=0; // apunta a la posición en el lcd
int i=0;
int led[]={8,9,10,11};

void setup() {
  pinMode(boton, INPUT_PULLUP);
  pinMode(boton_2, INPUT_PULLUP);
  pinMode(boton_3, INPUT_PULLUP);
  pinMode(boton_4, INPUT_PULLUP);
  pinMode(boton_5, INPUT_PULLUP);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  lcd.begin(16, 2);
  lcd.clear();
  lcd.home();
  pinMode(zumbador, OUTPUT);
  lcd.print("Numero de Habitacion");
}

void loop() {
    if ( digitalRead ( boton)==0 && led[8]==0) // botonx serían boton1,2,3 y 4 respectivamente ( deberías hacer un if por cada boton)
{digitalWrite( led[8],HIGH); // enciendo led correpondiente
btnBounce(boton);
lcd.setCursor((puntero*5+2),1);// el primer dato en posición 2, segundo en 7, 3º en 12 y 4º en 17,  cambialo a tu gusto
lcd.print("1"); // entiéndase x al numero de habitación en cada if
hab[puntero]=1;// cargo en numero de habitación en la posición del lcd
puntero++; // salto a la próxima posicion del display
}
    if ( digitalRead ( boton_2)==0 && led[9]==0)
{digitalWrite( led[9],HIGH); 
btnBounce(boton_2);
lcd.setCursor((puntero*5+2),1);
lcd.print("2"); 
hab[puntero]=2;
puntero++; 
}
    if ( digitalRead ( boton_3)==0 && led[10]==0) 
{digitalWrite( led[10],HIGH); 
btnBounce(boton_3);
lcd.setCursor((puntero*5+2),1);
lcd.print("3"); 
hab[puntero]=3;
puntero++; 
}
    if ( digitalRead ( boton_4)==0 && led[11]==0) 
{digitalWrite( led[11],HIGH); 
btnBounce(boton_4);
lcd.setCursor((puntero*5+2),1);
lcd.print("4");
hab[puntero]=4;
puntero++;
}
if( digitalRead (boton_5)==0)// cuando apretas el boton de clear
{digitalWrite(led[hab[0]],LOW);// apago led posición 1
puntero--;
for (i=0; i<3 ; i++)
{ hab[i+1]= hab[i+2]; // desplazo las habitaciones a la posición anterior en el display
}
hab[4]=" "; //limpio última posición
for( i=0 ; i<4 ; i++)
{lcd.setCursor((i*5+2),1);// imprime en el lcd los valores actualizados
lcd.print(hab[i]);
}
void btnBounce(int btnPin) {//espera hasta que no haya rebotes

  while (digitalRead(btnPin) == LOW);
  delay(50);
  
}
}
[code]

Para empezar el los if cuando ponés && led[8] en realidad lo que va entre corchetes no es el número de pin sino la posición en el array led, o sea en botón sería 0 y después 1,2 y 3 respectivamente. Empezá con eso y decime que otros errores te tira y vamos viendo.

cambie los numeros de los leds como me dijiste, puse la función btnbounce como global y agregue un for para iniciar los pines de los leds

me da este error

(./opt/arduino-builder/arduino-builder -compile -core-api-version 10611 -hardware opt/arduino-builder/hardware -hardware ./opt/cores -tools opt/arduino-builder/tools -tools ./opt/tools -built-in-libraries opt/libraries/latest -logger humantags -fqbn arduino:avr:uno -build-cache /tmp -build-path /tmp/106513859/build -verbose -libraries /tmp/106513859/custom -libraries /tmp/106513859/pinned /tmp/106513859/sketch_oct17a

Multiple libraries were found for "LiquidCrystal_I2C.h"

Used: /tmp/106513859/custom/LiquidCrystal_I2C

Not used: /tmp/106513859/custom/Newliquidcrystal_1.3.5

Not used: /home/ubuntu/opt/libraries/latest/liquidcrystal_i2c_1_1_2

Using library Wire at version 1.0 in folder: /home/ubuntu/opt/cores/arduino/avr/libraries/Wire

Using library LiquidCrystal_I2C in folder: /tmp/106513859/custom/LiquidCrystal_I2C (legacy)

/tmp/106513859/sketch_oct17a/sketch_oct17a.ino: In function 'void setup()':

/tmp/106513859/sketch_oct17a/sketch_oct17a.ino:31:18: error: no matching function for call to 'LiquidCrystal_I2C::begin(int, int)'

/tmp/106513859/sketch_oct17a/sketch_oct17a.ino:31:18: note: candidate is:

In file included from /tmp/106513859/sketch_oct17a/sketch_oct17a.ino:2:0:

/tmp/106513859/custom/LiquidCrystal_I2C/LiquidCrystal_I2C.h:76:7: note: void LiquidCrystal_I2C::begin()

void begin();

^

/tmp/106513859/custom/LiquidCrystal_I2C/LiquidCrystal_I2C.h:76:7: note: candidate expects 0 arguments, 2 provided

exit status 1)
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2);
const int boton = 3;
const int boton_2 = 4;
const int boton_3 = 5;
const int boton_4 = 6;
const int boton_5 = 7;
const int zumbador = 13;
int hab[4]; // creo un array para las posiciones del lcd
int puntero=0; // apunta a la posición en el lcd
int i=0;
int led[]={8,9,10,11};

void btnBounce(int btnPin) {//espera hasta que no haya rebotes
  while (digitalRead(btnPin) == LOW);
  delay(50);
}

void setup() {
  pinMode(boton, INPUT_PULLUP);
  pinMode(boton_2, INPUT_PULLUP);
  pinMode(boton_3, INPUT_PULLUP);
  pinMode(boton_4, INPUT_PULLUP);
  pinMode(boton_5, INPUT_PULLUP); 
for(int i=8;i<=11;i++){ //SE INICIALIZAN LOS PINES DEL 8 AL 11 COMO SALIDA
  pinMode(i, OUTPUT);
}
  pinMode(zumbador, OUTPUT);
  lcd.begin(16, 2);
  lcd.clear();
  lcd.home();
  lcd.print("Numero de Habitacion");
}

void loop() {
    if ( digitalRead ( boton)==0 && led[0]==0) // botonx serían boton1,2,3 y 4 respectivamente ( deberías hacer un if por cada boton)
{digitalWrite( led[0],HIGH); // enciendo led correpondiente
btnBounce(boton);
lcd.setCursor((puntero*5+2),1);// el primer dato en posición 2, segundo en 7, 3º en 12 y 4º en 17,  cambialo a tu gusto
lcd.print("1"); // entiéndase x al numero de habitación en cada if
hab[puntero]=1;// cargo en numero de habitación en la posición del lcd
puntero++; // salto a la próxima posicion del display
}
    if ( digitalRead ( boton_2)==0 && led[1]==0)
{digitalWrite( led[1],HIGH); 
btnBounce(boton_2);
lcd.setCursor((puntero*5+2),1);
lcd.print("2"); 
hab[puntero]=2;
puntero++; 
}
    if ( digitalRead ( boton_3)==0 && led[2]==0) 
{digitalWrite( led[2],HIGH); 
btnBounce(boton_3);
lcd.setCursor((puntero*5+2),1);
lcd.print("3"); 
hab[puntero]=3;
puntero++; 
}
    if ( digitalRead ( boton_4)==0 && led[4]==0) 
{digitalWrite( led[3],HIGH); 
btnBounce(boton_4);
lcd.setCursor((puntero*5+2),1);
lcd.print("4");
hab[puntero]=4;
puntero++;
}
if( digitalRead (boton_5)==0)// cuando apretas el boton de clear
{digitalWrite(led[hab[0]],LOW);// apago led posición 1
puntero--;}
for (i=0; i<3 ; i++)
{ hab[i+1]= hab[i+2]; // desplazo las habitaciones a la posición anterior en el display
hab[4]=" "; //limpio última posición
}
for( i=0 ; i<4 ; i++)
{lcd.setCursor((i*5+2),1);// imprime en el lcd los valores actualizados
lcd.print(hab[i]);
}
}

Parece que tenés descargadas más de una librería LiquidCrystal_I2C. Fijate en el directorio libraries que haya una sola, la que querés usar

@Nsaki. A continuación te dejo el sketch de lo que necesitás. Tuve tiempo para probarlo y corregirlo. Fijate que usé un lcd de 20x4 y otros pines para los leds y pulsadores, pero podés cambiarlos a tu gusto.

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,20,4);
const int boton1 = 5;
const int boton2 = 6;
const int boton3 = 7;
const int boton4 = 8;
const int boton5 = 10;
const int zumbador = 9;
int hab[4]; // creo un array para las posiciones del lcd
int puntero=0; // apunta a la posición en el lcd
int i=0;
const int led[]={2,3,4,13};
int estado[4]={0,0,0,0};

void setup() {
  Serial.begin(9600);
  pinMode(boton1, INPUT_PULLUP);
  pinMode(boton2, INPUT_PULLUP);
  pinMode(boton3, INPUT_PULLUP);
  pinMode(boton4, INPUT_PULLUP);
  pinMode(boton5, INPUT_PULLUP);
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(13, OUTPUT);
  pinMode(9,OUTPUT);
  lcd.init();
  lcd.backlight();
  lcd.begin(20,4);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Numero de Habitacion");
    
}

void loop() {
 
  
    if ( digitalRead ( boton1)==0 && estado[0]==0)
{   
    digitalWrite( 2,HIGH); // enciendo led correpondiente
    btnBounce(boton1);
    estado[0]=1;
    digitalWrite(9,HIGH);
    delay(80);
    digitalWrite(9,LOW);
    lcd.setCursor(puntero*5+2,2);// el primer dato en posición 2, segundo en 7, 3º en 12 y 4º en 17,  cambialo a tu gusto
    lcd.print("1"); // entiéndase x al numero de habitación en cada if
    hab[puntero]=1;// cargo en numero de habitación en la posición del lcd
    puntero++; // salto a la próxima posicion del display
}
    if ( digitalRead ( boton2)==0 && estado[1]==0)
{
    digitalWrite( 3,HIGH);
    btnBounce(boton2);
    estado[1]=1;
    digitalWrite(9,HIGH);
    delay(80);   // beep del buzzer
    digitalWrite(9,LOW);
    lcd.setCursor((puntero*5+2),2);
    lcd.print("2");
    hab[puntero]=2;
    puntero++;
}
    if ( digitalRead ( boton3)==0 && estado[2]==0)
{
    digitalWrite( 4,HIGH);
    btnBounce(boton3);
    estado[2]=1;
    digitalWrite(9,HIGH);
    delay(80);
    digitalWrite(9,LOW);
    lcd.setCursor((puntero*5+2),2);
    lcd.print("3");
    hab[puntero]=3;
    puntero++;
}
    if ( digitalRead ( boton4)==0 && estado[3]==0)
{
    digitalWrite( 13,HIGH);
    btnBounce(boton4);
    estado[3]=1;
    digitalWrite(9,HIGH);
    delay(80);
    digitalWrite(9,LOW);
    lcd.setCursor((puntero*5+2),2);
    lcd.print("4");
    hab[puntero]=4;
    puntero++;
}
if( digitalRead (boton5)==0)// cuando apretas el boton de clear
{
    digitalWrite(led[hab[0]-1],LOW);// apago led posición 1
    btnBounce(boton5);
    estado[hab[0]-1]=0;
  for (i=0; i<puntero ; i++)
  { 
  hab[i]= hab[i+1]; // desplazo las habitaciones a la posición anterior en el display
  }
    lcd.setCursor(0,2);
    lcd.print("                   ");
  for( i=0 ; i<puntero-1 ; i++)
  {
  lcd.setCursor((i*5+2),2);// imprime en el lcd los valores actualizados
  lcd.print(hab[i]);
  }
    puntero--;
  if(puntero<0)
  {
  puntero=0;
  estado[0]=0;
  }
}

}
void btnBounce(int btnPin)
{//espera hasta que no haya rebotes

  while (digitalRead(btnPin) == LOW);
  delay(250);
 
}

Saludos

Pablo funciona perfecto tal cual lo necesitaba, Muchisimas gracias!!