Display 7 segmentos (4 digitos)

Hola, buenas noches! Me llamo Gabriel, soy nuevo en Arduino y mi problema o dudas son las siguientes:

Necesito hacer un código con el cual en el display tengo que mostrar la palabra "HOLA" pero dicha palabra se tiene que mover hacia la derecha hasta desaparecer y nuevamente volver hasta la izquierda hasta desaparecer.

El primer movimiento hacia la derecha, lo tengo que activar con el 1er botón.
El segundo movimiento hacia la izquierda, igualmente se activa con el 2do botón.

¿Alguien me podría ayudar con la programación respecto al movimiento de la palabra? Quiero que la palabra HOLA se vaya corriendo un dígito hacia el lado que corresponde.

Ya hice el código y la conexión, pero por ahora solo puedo mostrar la palabra "HOLA" en modo fijo. Agradecería de su ayuda.

int t=1000;
int inPin = 9;
int inPin1 =1; 
int cont;
int cont1;
int cont2;  
int n; 
void setup() {

  pinMode(inPin, INPUT);
  pinMode(inPin1, INPUT);
  
  pinMode(2, OUTPUT);   //Declaración de pines 
  pinMode(3, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(10, OUTPUT);  //Pines del display
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}
void loop() {
  
  ciclo:
  cont=digitalRead(inPin);
  if (cont == 0)
  goto ciclo;
  
//for (int d=0; d<=1; d++)
  {
    
         
            digitalWrite(13,HIGH);
            digitalWrite(12,LOW);
            digitalWrite(11,LOW);
            digitalWrite(10,LOW);
            display(1); 
            delay(t);
            digitalWrite(13,LOW);
            digitalWrite(12,HIGH);
            digitalWrite(11,LOW);
            digitalWrite(10,LOW);
            display(2); 
            delay(t);
            digitalWrite(13,LOW);
            digitalWrite(12,LOW);
            digitalWrite(11,HIGH);
            digitalWrite(10,LOW);
            display(3); 
            delay(t);
            digitalWrite(13,LOW);
            digitalWrite(12,LOW);
            digitalWrite(11,LOW);
            digitalWrite(10,HIGH);
            display(4); 
            delay(t);

            }
  

}
void display (int n)
{
  if(n==1)
  {
    digitalWrite(2,LOW); 
    digitalWrite(3,HIGH);
    digitalWrite(4,HIGH);   //Letra "H"
    digitalWrite(5,LOW);
    digitalWrite(6,HIGH);
    digitalWrite(7,HIGH);
    digitalWrite(8,HIGH);
  }
    if(n==2)
    {
  digitalWrite(2,HIGH);
  digitalWrite(3,HIGH);
  digitalWrite(4,HIGH);
  digitalWrite(5,HIGH);     //Letra "O"
  digitalWrite(6,HIGH);
  digitalWrite(7,HIGH);
  digitalWrite(8,LOW);
    }
     if(n==3)
     {
  digitalWrite(2,LOW);
  digitalWrite(3,LOW);
  digitalWrite(4,LOW);    //Letra "L"
  digitalWrite(5,HIGH);
  digitalWrite(6,HIGH);
  digitalWrite(7,HIGH);
  digitalWrite(8,LOW);
     }
     if(n==4)
     {
  digitalWrite(2,HIGH);
  digitalWrite(3,HIGH);
  digitalWrite(4,HIGH);   //Letra "A"
  digitalWrite(5,LOW);
  digitalWrite(6,HIGH);
  digitalWrite(7,HIGH);
  digitalWrite(8,HIGH);
     }
    
  }

Modificar.ino (2.31 KB)

Has intentado instalar la librería SevSeg.h, desde herramientas, gestionar librerías la podrás encontrar.
Tienes un ejemplo que se llama "stringWithPeriod", juega un poco con ese código a ver que tal.
Una vez te funcione el ejemplo utiliza solo un string y mueves las letras dentro de el.

Muchas gracias por responder, por ahora no he utilizado ninguna librería. Ya que aun no me meto a ese tema en especifico, por eso quería intentar sin las librerías. Igual seguiré tu consejo y modificare el código del ejemplo.

Hola ItsMeGabbo, vas bien animo. Te falta simplificar un poco tu código usando for por ejemplo y eliminar lineas inutiles que solo malgastan el tiempo de procesador.

const int t = 1000;
const byte inPin = 9;
const byte inPin1 =1;    //Cuidado no podras usar puerto serie
int cont;
int cont1;
int cont2;  
int n; 

void setup() {
   pinMode(inPin, INPUT);
   pinMode(inPin1, INPUT);
  
   //Segmentos
   for (byte n=2; n<9; n++){
      pinMode(n, OUTPUT);
   }

   pinMode(10, OUTPUT);  //Pines del display
   pinMode(11, OUTPUT);
   pinMode(12, OUTPUT);
   pinMode(13, OUTPUT);
}

void loop() { 
   ciclo:
   cont = digitalRead(inPin);
   if (cont == 0){
      goto ciclo;
   }     
   digitalWrite(13, HIGH);
   //digitalWrite(12,LOW);    //Sobra
   //digitalWrite(11,LOW);    //Sobra
   //digitalWrite(10,LOW);    //Sobra
   display(1); 
   delay(t);
   digitalWrite(13, LOW);

   digitalWrite(12, HIGH);
   //digitalWrite(11,LOW);    //Sobra
   //digitalWrite(10,LOW);    //Sobra
   display(2); 
   delay(t);
   //digitalWrite(13,LOW);    //Sobra
   digitalWrite(12, LOW);

   digitalWrite(11, HIGH);
   //digitalWrite(10,LOW);    //Sobra
   display(3); 
   delay(t);
   //digitalWrite(13,LOW);    //Sobra
   //digitalWrite(12,LOW);    //Sobra
   digitalWrite(11, LOW);

   digitalWrite(10, HIGH);
   display(4); 
   delay(t);
   digitalWrite(10, LOW);     //Falta
}

void display (byte n){
   switch (n){
   case 1:
      digitalWrite(2, LOW); 
      digitalWrite(3, HIGH);
      digitalWrite(4, HIGH);   //Letra "H"
      digitalWrite(5, LOW);
      digitalWrite(6, HIGH);
      digitalWrite(7, HIGH);
      digitalWrite(8 ,HIGH);
      break;
   case 2:
      digitalWrite(2,HIGH);
      digitalWrite(3,HIGH);
      digitalWrite(4,HIGH);
      digitalWrite(5,HIGH);     //Letra "O"
      digitalWrite(6,HIGH);
      digitalWrite(7,HIGH);
      digitalWrite(8,LOW);
      break;
   case 3:
      digitalWrite(2,LOW);
      digitalWrite(3,LOW);
      digitalWrite(4,LOW);    //Letra "L"
      digitalWrite(5,HIGH);
      digitalWrite(6,HIGH);
      digitalWrite(7,HIGH);
      digitalWrite(8,LOW);
      break;
   case 4:
      digitalWrite(2,HIGH);
      digitalWrite(3,HIGH);
      digitalWrite(4,HIGH);   //Letra "A"
      digitalWrite(5,LOW);
      digitalWrite(6,HIGH);
      digitalWrite(7,HIGH);
      digitalWrite(8,HIGH);
   }
    
}

Tienes un pequeño error en Arduino UNO el pin digital 0 se usa como Rx del puerto Serie (entrada) y el pin 1 se usa como Tx (salida). Si tu lo cambiar a entrada dejara de funcionar el puerto serie. Mejor usa el pin 0 que ya es entrada asi no hay conflicto.