Entrada en Binario salida en Hexadecimal display 7 segmentos (SOLUCIONADO)

Hola, me dirijo a ustedes pidiendo su ayuda en un proyecto, es mi primera vez con Arduino y cuento con el Arduino UNO, bueno lo que quiero hacer es, que en 4 entradas sean en binario, 1 y 0, y que me muestre en un Display de 7 segmentos de 0 a F, hice mi skecth, pero lo que pasa es que se suman, ejemplo lo tengo en 0 y pongo el 0001 y en el display me da 1, pero si conecto 0010, el display se queda en 1 unos segundos, después pasa a 3, y unos segundos después a 2, lo que quiero es que me los muestre correctamente, solamente eso, si me podrían guiar de alguna forma de como modificar mi sketch o decirme donde falla, para poder modificar,el sketch esta hasta el 3 de momento por que estuve probando antes de acabarlo y ya me daba este error, solo necesito saber como evitar que haga esas sumas para poder terminar del 0 al F yo, de antemano, gracias.

El sketch es el siguiente;

void setup(){

pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
pinMode(8, OUTPUT);
pinMode(7, OUTPUT);

}
void display (int a, int b, int c, int d, int e, int f, int g)// Función del display
{
digitalWrite (13,a);
digitalWrite (12,b);
digitalWrite (11,c);
digitalWrite (10,d);
digitalWrite (9,e);
digitalWrite (8,f);
digitalWrite (7,g);
}

void loop(){
if (digitalRead(2) == LOW) // Numero 0
if (digitalRead(3) == LOW)
if (digitalRead(4) == LOW)
if (digitalRead(5) == LOW){
display (1,1,1,1,1,1,0);
}
if (digitalRead(2) == LOW) // Numero 1
if (digitalRead(3) == LOW)
if (digitalRead(4) == LOW)
if (digitalRead(5) == HIGH){
display(0,1,1,0,0,0,0);
}
if (digitalRead(2) == LOW) // Numero 2
if (digitalRead(3) == LOW)
if (digitalRead(4) == HIGH)
if (digitalRead(5) == LOW){
display(1,1,0,1,1,1,0);
}
if (digitalRead(2) == LOW) // Numero 3
if (digitalRead(3) == LOW)
if (digitalRead(4) == HIGH)
if (digitalRead(5) == HIGH){
display(1,1,1,1,0,0,1);
}

}

Alomejor esto te vale de algo:

Esto que pones no hace nada:

 if (digitalRead(2) == LOW) // Numero 2
    if (digitalRead(3) == LOW)
    if (digitalRead(4) == HIGH)

ya que no defines bloque de instrucciones despues del if:

if(condicion) { bloque instrucciones;}

Hola Jose
Tu comentario me ayudo bastante para serte sincero, pero ahora me surge otro error, mira este es el nuevo skecth que escribi;

Skecth

int A = 2;
int B = 3;
int C = 4;
int D = 5;
int E = 6;
int F = 7;
int G = 8;
int DP1 = 9; 
int DP2 = 10;
int DP3 = 11;
int DP4 = 12;


void setup () { 
 pinMode (A, OUTPUT); //configurado como salida
 pinMode (B, OUTPUT);
 pinMode (C, OUTPUT);
 pinMode (D, OUTPUT);
 pinMode (E, OUTPUT);
 pinMode (F, OUTPUT);
 pinMode (G, OUTPUT);
 pinMode (DP1,INPUT); //configurado de entrada
 pinMode (DP2,INPUT);
 pinMode (DP3,INPUT);
 pinMode (DP4,INPUT);
}

void loop () {
 if(digitalRead(DP1) == LOW  && digitalRead(DP2) == LOW  && digitalRead(DP3)==LOW  && digitalRead(DP4) == LOW){ // Numero 0
   digitalWrite (A, HIGH);
   digitalWrite (B, HIGH);
   digitalWrite (C, HIGH);
   digitalWrite (D, HIGH);
   digitalWrite (E, HIGH);
   digitalWrite (F, HIGH);
   digitalWrite (G, LOW); 
 }
 if(digitalRead(DP1) == LOW  && digitalRead(DP2) == LOW  && digitalRead(DP3)==LOW  && digitalRead(DP4) == HIGH){ // Numero 1
   digitalWrite (A, LOW);
   digitalWrite (B, HIGH);
   digitalWrite (C, HIGH);
   digitalWrite (D, LOW);
   digitalWrite (E, LOW);
   digitalWrite (F, LOW);
   digitalWrite (G, LOW);  
 }
 if(digitalRead(DP1) == LOW  && digitalRead(DP2) == LOW  && digitalRead(DP3)==HIGH  && digitalRead(DP4) == LOW){ // Numero 2
   digitalWrite (A, HIGH);
   digitalWrite (B, HIGH);
   digitalWrite (C, LOW);
   digitalWrite (D, HIGH);
   digitalWrite (E, HIGH);
   digitalWrite (F, LOW);
   digitalWrite (G, HIGH); 
 }
  if(digitalRead(DP1) == LOW  && digitalRead(DP2) == LOW  && digitalRead(DP3)==HIGH  && digitalRead(DP4) == HIGH){ // Numero 3
   digitalWrite (A, HIGH);
   digitalWrite (B, HIGH);
   digitalWrite (C, HIGH);
   digitalWrite (D, HIGH);
   digitalWrite (E, LOW);
   digitalWrite (F, LOW);
   digitalWrite (G, HIGH); 
  }
   if(digitalRead(DP1) == LOW  && digitalRead(DP2) == HIGH  && digitalRead(DP3)==LOW  && digitalRead(DP4) == LOW){ // Numero 4
   digitalWrite (A, LOW);
   digitalWrite (B, HIGH);
   digitalWrite (C, HIGH);
   digitalWrite (D, LOW);
   digitalWrite (E, LOW);
   digitalWrite (F, HIGH);
   digitalWrite (G, HIGH); 
   } 
   if(digitalRead(DP1) == LOW  && digitalRead(DP2) == HIGH  && digitalRead(DP3)==LOW  && digitalRead(DP4) == HIGH){ // Numero 5
   digitalWrite (A, HIGH);
   digitalWrite (B, LOW);
   digitalWrite (C, HIGH);
   digitalWrite (D, HIGH);
   digitalWrite (E, LOW);
   digitalWrite (F, HIGH);
   digitalWrite (G, HIGH);
   }
   if(digitalRead(DP1) == LOW  && digitalRead(DP2) == HIGH  && digitalRead(DP3)==HIGH  && digitalRead(DP4) == LOW){ // Numero 6
   digitalWrite (A, HIGH);
   digitalWrite (B, LOW);
   digitalWrite (C, HIGH);
   digitalWrite (D, HIGH);
   digitalWrite (E, HIGH);
   digitalWrite (F, HIGH);
   digitalWrite (G, HIGH); 
   }
   if(digitalRead(DP1) == LOW  && digitalRead(DP2) == HIGH  && digitalRead(DP3)==HIGH  && digitalRead(DP4) == HIGH){ // Numero 7
   digitalWrite (A, HIGH);
   digitalWrite (B, HIGH);
   digitalWrite (C, HIGH);
   digitalWrite (D, LOW);
   digitalWrite (E, LOW);
   digitalWrite (F, LOW);
   digitalWrite (G, LOW);
   }
   if(digitalRead(DP1) == HIGH  && digitalRead(DP2) == LOW  && digitalRead(DP3)==LOW  && digitalRead(DP4) == LOW){ // Numero 8
   digitalWrite (A, HIGH);
   digitalWrite (B, HIGH);
   digitalWrite (C, HIGH);
   digitalWrite (D, HIGH);
   digitalWrite (E, HIGH);
   digitalWrite (F, HIGH);
   digitalWrite (G, HIGH); 
   }
   if(digitalRead(DP1) == HIGH  && digitalRead(DP2) == LOW  && digitalRead(DP3)==LOW  && digitalRead(DP4) == HIGH){ // Numero 9
   digitalWrite (A, HIGH);
   digitalWrite (B, HIGH);
   digitalWrite (C, HIGH);
   digitalWrite (D, LOW);
   digitalWrite (E, LOW);
   digitalWrite (F, HIGH);
   digitalWrite (G, HIGH);  
   }
   if(digitalRead(DP1) == HIGH  && digitalRead(DP2) == LOW  && digitalRead(DP3)==HIGH  && digitalRead(DP4) == LOW){ // Numero 10 - A
   digitalWrite (A, HIGH);
   digitalWrite (B, HIGH);
   digitalWrite (C, HIGH);
   digitalWrite (D, HIGH);
   digitalWrite (E, HIGH);
   digitalWrite (F, HIGH);
   digitalWrite (G, LOW); 
   }
   if(digitalRead(DP1) == HIGH  && digitalRead(DP2) == LOW  && digitalRead(DP3)==HIGH  && digitalRead(DP4) == HIGH){ // Numero 11 - b 
   digitalWrite (A, LOW);
   digitalWrite (B, LOW);
   digitalWrite (C, HIGH);
   digitalWrite (D, HIGH);
   digitalWrite (E, HIGH);
   digitalWrite (F, HIGH);
   digitalWrite (G, HIGH); 
   }
   if(digitalRead(DP1) == HIGH  && digitalRead(DP2) == HIGH  && digitalRead(DP3)==LOW  && digitalRead(DP4) == LOW){ // Numero 12 - C
   digitalWrite (A, HIGH);
   digitalWrite (B, LOW);
   digitalWrite (C, LOW);
   digitalWrite (D, HIGH);
   digitalWrite (E, HIGH);
   digitalWrite (F, HIGH);
   digitalWrite (G, LOW);
   } 
   if(digitalRead(DP1) == HIGH  && digitalRead(DP2) == HIGH  && digitalRead(DP3)==LOW  && digitalRead(DP4) == HIGH){ // Numero 13 - d 
   digitalWrite (A, LOW);
   digitalWrite (B, HIGH);
   digitalWrite (C, HIGH);
   digitalWrite (D, HIGH);
   digitalWrite (E, HIGH);
   digitalWrite (F, LOW);
   digitalWrite (G, HIGH); 
   }
   if(digitalRead(DP1) == HIGH  && digitalRead(DP2) == HIGH  && digitalRead(DP3)==HIGH  && digitalRead(DP4) == LOW){ // Numero 14 - E
   digitalWrite (A, HIGH);
   digitalWrite (B, LOW);
   digitalWrite (C, LOW);
   digitalWrite (D, HIGH);
   digitalWrite (E, HIGH);
   digitalWrite (F, HIGH);
   digitalWrite (G, HIGH); 
   }
   if(digitalRead(DP1) == HIGH  && digitalRead(DP2) == HIGH  && digitalRead(DP3)==HIGH  && digitalRead(DP4) == HIGH){ // Numero 15 - F
   digitalWrite (A, HIGH);
   digitalWrite (B, LOW);
   digitalWrite (C, LOW);
   digitalWrite (D, LOW);
   digitalWrite (E, HIGH);
   digitalWrite (F, HIGH);
   digitalWrite (G, HIGH); 
   }
   

}

Pero ahora al activar o no activar entradas, me da numeros al azar en el display, alguna sugerencia de que puedo hacer?

¿Estas usando resistencias pulldown en las 4 entradas digitales?.Por otro lado ,el uso de la funcion

void display (int a, int b, int c, int d, int e, int f, int g)// Función del display
{
  digitalWrite (13,a);   
  digitalWrite (12,b);   
  digitalWrite (11,c);
  digitalWrite (10,d);
  digitalWrite (9,e);
  digitalWrite (8,f);
  digitalWrite (7,g);
}

te estaba ahorrando bastantes lineas de codigo.

Yo escribí un código algo diferente pero no funciona bien. Al menos no logré que el display mostrara bien los datos y cuando superó la hora y media lo dejé (a veces las problemas simples te demuestran cuanto debes aprender aún).
Lo subo para considerarlo a ver si josé o HumbertoMtz ven el defecto

#include "Arduino.h" // esta linea da igual que este. Fue una prueba por otro tema

byte numero[] = {0xFC, 0x60, 0xDA, 0xF2, 0x66, 0xb6, 0x3E, 0xE0, 0xFE, 0xF6};
byte s2, s3, s4, s5;
unsigned int entrada;

void setup(){
  Serial.begin(19200);
  pinMode( 2, INPUT); 
  pinMode( 3, INPUT); 
  pinMode( 4, INPUT); 
  pinMode( 5, INPUT); 

  pinMode(13, OUTPUT); 
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode( 9, OUTPUT);
  pinMode( 8, OUTPUT);
  pinMode( 7, OUTPUT);
 
}

 
void loop(){
  
  s2 = digitalRead(2);
  s3 = digitalRead(3);
  s4 = digitalRead(4);
  s5 = digitalRead(5);
  
  entrada = s2 | s3 << 1 | s4 << 2 | s5 << 3;
  Serial.println(entrada);
  display(numero[entrada]);  
  
  delay(500); 
} 

void display (unsigned int temp)// Función del display
{
     Serial.println(temp, HEX);
     for (byte i=0; i<8; i++) {
	 digitalWrite ( i+7,   temp && 1<<i);
     }
}

El display no cambia. Pero hasta donde llegué, la rutina display recibe bien el valor a mostrar, lo separa correctamente en bits 1 o 0, y luego ????? el display no acusa recibo.

Hola jose vengo a agradecerte, me faltaban esas resistencias jeje. muchas gracias!

de nada!!