Proyecto Wall-e, robot educacion inicial

Tengo un proyecto en el ando trabajando, pero tengo un problema muy grande, el proyecto esta resumido en lo siguiente: “Un robot tipo oruga, esta equipado con 5 botones, uno para ir adelante, otro para ir atras, otro para girar a la derecha y otro para girar a la izquierda, y un quinto para arrancar la secuencia que se presiono anteriormente, es decir este ultimo boton ejecuta la linea de comandos, estos comandos bien pueden ser 2, 3 o mas”, esto lo tengo que meter en un arreglo, me imagino, para luego ser leida y ejecutar cada elemento del arreglo como una orden con un puente H, para hacer girar los motorreductores que le tengo conectado, nose en que esta mi falla, les comparto mi codigo… Espero me puedan colaborar es un proyecto que estoy haciendo para niños de educacion inicial, para enseñarles a programar.

  int mi = 8;
  int mi2 = 7;
  int md = 9;
  int md2 = 10;
  int adelante = 2;
  int atras = 3;
  int derecha = 4;
  int izquierda = 5; 
  int inicio = 6;
  int registro [10] = {0,0,0,0,0,0,0,0};
  int paso = 5000;
  int paso2 = 2000;
  int i=0;

 
void setup() {
  pinMode(adelante, INPUT);
  pinMode(atras, INPUT);
  pinMode(derecha, INPUT);
  pinMode(izquierda, INPUT);
  pinMode(inicio, INPUT);
  pinMode(mi, OUTPUT);
  pinMode(md, OUTPUT);
  pinMode(mi2, OUTPUT);
  pinMode(md2, OUTPUT);
  Serial.begin(9600);
  
}

void loop() {
  if(digitalRead(adelante) == HIGH){
    if(digitalRead(adelante) == LOW){
      delay(500);
      registro [i]= 1;
      Serial.print(registro[i]);
      i++;
      }
    
    }else if(digitalRead(atras) == HIGH){
      if(digitalRead(atras) == LOW){
       delay(500);
       registro [i] = 8;
       Serial.print(registro[i]);
       i++;  
        }
      
      }else if(digitalRead(derecha) == HIGH){
        if(digitalRead(derecha) == LOW){
         delay(500);
         registro [i] = 2;
         Serial.print(registro[i]);
         i++;  
          }
        
        }else if(digitalRead(izquierda) == HIGH){
          if(digitalRead(izquierda) == LOW){
           delay(500);
           registro [i] == 3;
           Serial.print(registro[i]);
           i++;  
            }
          
          }else if(digitalRead(inicio) == HIGH){
            if(digitalRead(inicio) == LOW){
            delay(500);
            int j=0;
            if(j<10){
              if(registro[j] == 1){
                digitalWrite(mi, HIGH);
                digitalWrite(mi2, LOW);
                digitalWrite(md, HIGH);
                digitalWrite(md2, LOW);
                delay(paso);
                digitalWrite(mi, LOW);
                digitalWrite(mi2, LOW);
                digitalWrite(md, LOW);
                digitalWrite(md2, LOW);
                delay(paso);
                j++;
                }else if(registro[j] == 8){
                  digitalWrite(mi, LOW);
                  digitalWrite(mi2, HIGH);
                  digitalWrite(md, LOW);
                  digitalWrite(md2, HIGH);
                  delay(paso);
                  digitalWrite(mi, LOW);
                  digitalWrite(mi2, LOW);
                  digitalWrite(md, LOW);
                  digitalWrite(md2, LOW);
                  delay(paso);
                  j++;
                  }else if(registro[j] == 2){
                    digitalWrite(mi, HIGH);
                    digitalWrite(mi2, LOW);
                    digitalWrite(md, LOW);
                    digitalWrite(md2, LOW);
                    delay(paso2);
                    digitalWrite(mi, LOW);
                    digitalWrite(mi2, LOW);
                    digitalWrite(md, LOW);
                    digitalWrite(md2, LOW);
                    delay(paso2);
                    j++;
                    }else if(registro [j] == 3){
                      digitalWrite(mi, LOW);
                      digitalWrite(mi2, LOW);
                      digitalWrite(md, HIGH);
                      digitalWrite(md2, LOW);
                      delay(paso2);
                      digitalWrite(mi, LOW);
                      digitalWrite(mi2, LOW);
                      digitalWrite(md, LOW);
                      digitalWrite(md2, LOW);
                      delay(paso2);
                      j++;
                      }
                      
              }else{
                    digitalWrite(mi, LOW);
                    digitalWrite(mi2, LOW);
                    digitalWrite(md, LOW);
                    digitalWrite(md2, LOW);
                    i=0;
                    for(int k=0; k<10; k++){
                    registro[k]=0;
                    }
              }
            }
          }
  
}

Walle_Preescolar.ino (3.72 KB)

jatobarc:
.... Espero me puedan colaborar es un proyecto que estoy haciendo para niños de educacion inicial, para enseñarles a programar.

Hola,

Yo le echaría un vistazo al "Scratch".

Saludos