Compatibilidad de arduino mega

Que tal buenas a todos.

cree un proyecto de arduino mega basado en un código de arduino uno y esta teniendo fallas(los botones se accionan solos), puede ser que no sea compatible el código con arduino mega? desde ya gracias

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

LiquidCrystal_I2C lcd(0x27,16,2);
const int boton1 = 22;
const int boton2 = 23;
const int boton3 = 24;
const int boton4 = 25;
const int boton5 = 26;
const int boton6 = 27;
const int boton7 = 33;
const int zumbador = 32;
int hab[6]; // 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[]={42,43,44,45,46,47};
int estado[6]={0,0,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(boton6, INPUT_PULLUP);
 pinMode(boton7, INPUT_PULLUP);
 pinMode(42, OUTPUT);
 pinMode(43, OUTPUT);
 pinMode(44, OUTPUT);
 pinMode(45, OUTPUT);
 pinMode(46, OUTPUT);
 pinMode(47, OUTPUT);
 pinMode(32,OUTPUT);
 lcd.init();
 lcd.backlight();
 lcd.begin(16,2);
 lcd.clear();
 lcd.setCursor(0,0);
 lcd.print("Numero de Box");
}

void loop() {
    if ( digitalRead ( boton1)==0 && estado[0]==0)
{   
   digitalWrite( 42,HIGH); // enciendo led correpondiente
   btnBounce(boton1);
   estado[0]=1;
   tone(zumbador, 261, 100);
   delay(150);
   tone(zumbador, 293, 100);
   delay(150);
   lcd.setCursor(puntero*3+0,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 ( boton2)==1 && estado[1]==0)
{
   digitalWrite( 43,HIGH);
   btnBounce(boton2);
   estado[1]=1;
   tone(zumbador, 261, 100);
   delay(150);
   tone(zumbador, 293, 100);
   delay(150);
   lcd.setCursor((puntero*3+0),1);
   lcd.print("2");
   hab[puntero]=2;
   puntero++;
}
   if ( digitalRead ( boton3)==1 && estado[2]==0)
{
   digitalWrite(44,HIGH);
   btnBounce(boton3);
   estado[2]=1;
   tone(zumbador, 261, 100);
   delay(150);
   tone(zumbador, 293, 100);
   delay(150);
   lcd.setCursor((puntero*3+0),1);
   lcd.print("3");
   hab[puntero]=3;
   puntero++;
}
   if ( digitalRead ( boton4)==1 && estado[3]==0)
{
   digitalWrite( 45,HIGH);
   btnBounce(boton4);
   estado[3]=1;
   tone(zumbador, 261, 100);
   delay(150);
   tone(zumbador, 293, 100);
   delay(150);
   lcd.setCursor((puntero*3+0),1);
   lcd.print("4");
   hab[puntero]=4;
   puntero++;
}
  if ( digitalRead ( boton5)==1 && estado[4]==0)
{
   digitalWrite( 46,HIGH);
   btnBounce(boton5);
   estado[4]=1;
   tone(zumbador, 261, 100);
   delay(150);
   tone(zumbador, 293, 100);
   delay(150);
   lcd.setCursor((puntero*3+0),1);
   lcd.print("5");
   hab[puntero]=5;
   puntero++;
}
  if ( digitalRead ( boton6)==1 && estado[5]==0)
{
   digitalWrite( 47,HIGH);
   btnBounce(boton6);
   estado[5]=1;
   tone(zumbador, 261, 100);
   delay(150);
   tone(zumbador, 293, 100);
   delay(150);
   lcd.setCursor((puntero*3+0),1);
   lcd.print("6");
   hab[puntero]=6;
   puntero++;
}
if( digitalRead (boton7)==0)// cuando apretas el boton de clear
{
   digitalWrite(led[hab[0]-1],LOW);// apago led posición 1
   btnBounce(boton7);
   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*3+0),1);// 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);

}
[code]

Pues revisa un poco las identificaciones de los pines.
Un MEGA tiene 54 I/O y el UNO tiene 15 I/Os asi que no puede haber pines con identificación 22, 23, etc

Puedes desde el 2 al 13 siempre que no uses el monitor Serie.

Traduccido
Todo esto debe cambiarse

const int boton1 = 22;
const int boton2 = 23;
const int boton3 = 24;
const int boton4 = 25;
const int boton5 = 26;
const int boton6 = 27;
const int boton7 = 33;
const int zumbador = 32;
int hab[6]; // 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[]={42,43,44,45,46,47};

Cuento 14 pines asi que para poder usar un UNO deberás usar los pines A0...A5 y usarlos como pines digitales.

creo que se mal entendio, la placa que estoy usando es una arduino mega y utilice este codigo de arduino uno modificando las entradas y cambiando algunos valores.

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

LiquidCrystal_I2C lcd(0x27,16,2);
const int boton1 = 3;
const int boton2 = 4;
const int boton3 = 5;
const int boton4 = 6;
const int boton5 = 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;
const int led[]={8,9,10,11};
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(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(13,OUTPUT);
  lcd.init();
  lcd.backlight();
  lcd.begin(16,2);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Numero de Box");
    
}

void loop() {
    if ( digitalRead ( boton1)==0 && estado[0]==0)
{   
    digitalWrite( 8,HIGH); // enciendo led correpondiente
    btnBounce(boton1);
    estado[0]=1;
    tone(zumbador, 261, 100);
    delay(150);
    tone(zumbador, 293, 100);
    delay(150);
    lcd.setCursor(puntero*4+0,1);
    lcd.print("1");
    hab[puntero]=1;
    puntero++;
}
    if ( digitalRead ( boton2)==0 && estado[1]==0)
{
    digitalWrite( 9,HIGH);
    btnBounce(boton2);
    estado[1]=1;
    tone(zumbador, 261, 100);
    delay(150);
    tone(zumbador, 293, 100);
    delay(150);
    lcd.setCursor((puntero*4+0),1);
    lcd.print("2");
    hab[puntero]=2;
    puntero++;
}
    if ( digitalRead ( boton3)==0 && estado[2]==0)
{
    digitalWrite(10,HIGH);
    btnBounce(boton3);
    estado[2]=1;
    tone(zumbador, 261, 100);
    delay(150);
    tone(zumbador, 293, 100);
    delay(150);
    lcd.setCursor((puntero*4+0),1);
    lcd.print("3");
    hab[puntero]=3;
    puntero++;
}
    if ( digitalRead ( boton4)==0 && estado[3]==0)
{
    digitalWrite( 11,HIGH);
    btnBounce(boton4);
    estado[3]=1;
    tone(zumbador, 261, 100);
    delay(150);
    tone(zumbador, 293, 100);
    delay(150);
    lcd.setCursor((puntero*4+0),1);
    lcd.print("4");
    hab[puntero]=4;
    puntero++;
}
if( digitalRead (boton5)==1)// 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*4+0),1);// 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);
 
} [code]

Si el problema es con las entradas.

Copia el código borra todo, deja las entradas y prueba hasta encontrar la falla.
Aislando el responsable.