Problemas con mi proyecto (coche controlado con joystick)

Muy buenas, antes de todo, decir que no se si este post va en este hilo, si no es así, ruego me disculpéis (soy novatillo en el foro). El tema es que estoy haciendo un proyecto de arduino (UNO) para la facultad, en el cual tengo lo que describo a continuación: 4 motores stepper 28byj-48 con sus cuatro controladores ULN2003 1 motor de contínua con su controlador de puente H l293d 1 joystick 1 pila de 9V para el arduino 4 pilas serie AA (1,5*4 = 6V) para alimentar steppers y el contínua El proyecto es un coche controlado por el joystick, cuyas 4 ruedas llevan cada una un stepper como el que describo arriba, una dirección estilo cremallera-piñón (con el motor de contínua) y unos LED de marcha atrás. Hace dos días terminé el proyecto (mecánica y conexionado), pero tengo el problema de que no consigo echarlo a andar (los motores no responden). No he conseguido echarlo a andar con el código del proyecto (que ahora os dejaré más adelante), ni con código mas básico que hice para probar los steppers. A falta de foto (no vais a distinguir nada en la maraña de cables, ya me cuesta hasta a mi xD), os dejo la descripción lo más detallada posible del conexionado: Al querer que el coche gire por dos mecanismos diferentes (lo sé, soy rarito y complicado), que serían giro de la dirección mediante el contínua y la cremallera y dándole más vueltas a los steppers de un lado que del otro, estoy controlando los dos steppers de cada lado independientemente, como paso a explicar (en el código se detalla mejor): mis cuatro salidas de control (de arduino) de los SteppersI(izquierda) y los SteppersD(derecha) van a una proto, donde están conectadas a las cuatro entradas de cada uno de los dos motores que controlan, es decir en la proto (en horizontal) cada salida de control alimenta dos entradas (la del motor del lado correspondiente trasera y delantera). El motor de contínua va cogido a las salidas 1 y 2 del puente H y este alimentado a las entradas 1 y 2 por dos salidas de control PWM del arduino. Respecto a las alimentaciones de los motores, todos se alimentan de las pilas AA (6V) mediante cables que saco del anodo, el cátodo de estas pilas va a la proto, a otra conexión horizontal donde uno con los negativos de los stepper y del contínua (de los drivers evidentemente) y saco todo a uno de los GND de mi arduino. El joystick va conectado a las entradas A1 y A2 del arduino para los potenciometros y a un pin digital para el botón, alimentado del +5V del arduino y tirando el negativo al otro GND del arduino.

No tengo ni idea de donde puede estar la clave para resolver mi problema... y el proyecto es para inminentes, muchas gracias por vuestro tiempo y vuestras respuestas, ahora os dejaré el código y POR SUPUESTO si necesitais mas datos (que por capullín seguro que algo me habré dejado), no dudeis en pedirlos. TODA AYUDA ES BIEN RECIBIDA.

CODIGO: (PERDON de nuevo si es malillo, llevo solo dos meses programando…)
PD: mi profesor nos “recomienda” usar MariaMole para los programas

#include “coche1_main.h”
#include <Stepper.h>
#include <FlexiTimer2.h>

int Step [8][4] =
{ {1, 0, 0, 0},
{1, 1, 0, 0},
{0, 1, 0, 0},
{0, 1, 1, 0},
{0, 0, 1, 0},
{0, 0, 1, 1},
{0, 0, 0, 1},
{1, 0, 0, 1} }; //este array determinará los mediospasos del stepper

#define IN1 12
#define IN2 11
#define IN3 10
#define IN4 9 //Definimos los 4 pines que controlarán los motores I
#define IN5 8
#define IN6 7
#define IN7 6
#define IN8 4 //Definimos los 4 pines que controlarán los motores D

int direccion = 0; //variable para la dirección
int pasos = 0; //define el paso actual de la secuencia
int I = 1; //Variable normalizada para el giro a derecha
int D = 1; //Variable normalizada para el giro a izquierda
int EJEX=A1; //Potenciometro horizontal igual a A1
int EJEY=A2; //Potenciometro vertical igual a A2
int Continua2 = 5; //PWM salida 1 puente H
int boton = 2; //botón del stick en pin 3
int Continua1 = 3; //PWM salida 2 puente H
int BackLED = 1; //LED de marcha atras en pin 1
int valorpote; //variable para el pot. vertical
int pwm1;
int pwm2;
int sentido;
int CC = 1;
unsigned long tiempo = 0; //variable que almacenará el tiempo desde que se enciende la placa.
unsigned long t_actualizado = 0;
unsigned long t_delay = 20; //variable que almacena el delay del motor dc

void setup() {
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(IN5, OUTPUT);
pinMode(IN6, OUTPUT);
pinMode(IN7, OUTPUT);
pinMode(IN8, OUTPUT);
pinMode(boton, INPUT_PULLUP); //para no necesitar resistencia externa
pinMode(Continua1, OUTPUT);
pinMode(Continua2, OUTPUT);
pinMode(BackLED, OUTPUT);
}

void stepperI() //Avanza un paso en la izquierda
{ digitalWrite(IN1, Step[pasos][0]);
digitalWrite(IN2, Step[pasos][1]);
digitalWrite(IN3, Step[pasos][2]);
digitalWrite(IN4, Step[pasos][3]);
SetSentido();
}

void stepperD() //Avanza un paso en la derecha
{ digitalWrite(IN5, Step[pasos][0]);
digitalWrite(IN6, Step[pasos][1]);
digitalWrite(IN7, Step[pasos][2]);
digitalWrite(IN8, Step[pasos][3]);
SetSentido();
}

void SetSentido()
{ sentido=analogRead(EJEY);
if(sentido>512) //si el stick apunta arriba, va hacia alante
pasos++;
if(sentido<512) //si el stick apunta abajo, va hacia atras
pasos–;
pasos = (pasos + 8) % 8; //Hacemos que cuando pase de 7 vuelva a 0 (y no se haga -1)
}

void Giro()
{ pwm1 = map(direccion, 0, 1023, 0, 255);
pwm2 = map(direccion, 0, 1023, 255, 0); //El PWM 2 esta invertido respecto al PWM 1
if (direccion>512) //Suponiendo +512 derecha
D = map(direccion, 0, 1023, 0, 2); //Normalizamos la variable I (entre 1 y 2)
I = 1;
CC = 2;
if (direccion<512) //Suponiendo -512 izquierda
I = map(direccion, 0, 1023, 2, 0); //Normalizamos D (1-2)
D = 1;
CC = 0;
if (direccion==0)
CC=1;
}

void loop()
{ tiempo = millis();
direccion=analogRead(EJEX);
while (direccion>512)
{
Giro();
while(tiempo < t_actualizado + t_delay) {
{
if (CC==0)
analogWrite(Continua1, pwm1);
analogWrite(Continua2, pwm2);
if (CC==1)
delay(t_delay / 2);
analogWrite(Continua1, pwm1);
analogWrite(Continua2, pwm2);
if (CC==2)
delay(t_delay);
}
SetSentido();
if (512<direccion && direccion<640)
FlexiTimer2::set((6000/I), stepperI); //stepperI se llama cada 8s (10rpm) entreI
FlexiTimer2::set((6000/D), stepperD); //stepperI se llama cada 8s entreD
FlexiTimer2::start();
if (640<direccion && direccion<768)
FlexiTimer2::set((5000/I), stepperI); //stepperI se llama cada 5s (12rpm) entreI
FlexiTimer2::set((5000/D), stepperD); //stepperI se llama cada 5s entreD
FlexiTimer2::start();
if (768<direccion && direccion<896)
FlexiTimer2::set((4000/I), stepperI); //stepperI se llama cada 4s (15rpm) entreI
FlexiTimer2::set((4000/D), stepperD); //stepperI se llama cada 4s entreD
FlexiTimer2::start();
if (869<direccion && direccion<1024)
FlexiTimer2::set((3000/I), stepperI); //stepperI se llama cada 3s (20rpm) entreI
FlexiTimer2::set((3000/D), stepperD); //stepperI se llama cada 3s entreD
FlexiTimer2::start();
delay(5);
}

while (direccion<512)
{
digitalWrite(BackLED, HIGH); //Enciende LED marcha atras
Giro();
while(tiempo < t_actualizado + t_delay)
{
if (CC==2)
analogWrite(Continua1, pwm1);
analogWrite(Continua2, pwm2);
if (CC==1)
delay(t_delay / 2);
analogWrite(Continua1, pwm1);
analogWrite(Continua2, pwm2);
if (CC==0)
delay(t_delay);
}
SetSentido();
if (384<direccion && direccion<512)
FlexiTimer2::set((6000/I), stepperI); //stepperI se llama cada 6s (10rpm) entreI
FlexiTimer2::set((6000/D), stepperD); //stepperI se llama cada 6s entreD
FlexiTimer2::start();
if (256<direccion && direccion<384)
FlexiTimer2::set((5000/I), stepperI); //stepperI se llama cada 5s (12rpm) entreI
FlexiTimer2::set((5000/D), stepperD); //stepperI se llama cada 5s entreD
FlexiTimer2::start();
if (128<direccion && direccion<256)
FlexiTimer2::set((4000/I), stepperI); //stepperI se llama cada 4s (15rpm) entreI
FlexiTimer2::set((4000/D), stepperD); //stepperI se llama cada 4s entreD
FlexiTimer2::start();
if (0<direccion && direccion<128)
FlexiTimer2::set((3000/I), stepperI); //stepperI se llama cada 3s (20rpm) entreI
FlexiTimer2::set((3000/D), stepperD); //stepperI se llama cada 3s entreD
FlexiTimer2::start();
digitalWrite(BackLED, LOW);
delay(5);
t_actualizado = tiempo;
digitalWrite(BackLED, LOW); //Apaga LED marcha atras
}
while(direccion==0)
{
Giro();
while(tiempo < t_actualizado + t_delay)
{
if (CC==2)
delay(t_delay /2);
analogWrite(Continua1, pwm1);
analogWrite(Continua2, pwm2);
if (CC==1)
delay(t_delay);
if (CC==0)
delay(t_delay / 2);
analogWrite(Continua1, pwm1);
analogWrite(Continua2, pwm2);
}
delay(5);
t_actualizado = tiempo;
}

delay(5);

}
}

GRACIAS DE NUEVO Y CUALQUIER SUGERENCIA DE CÓDIGO Y/O CONEXIONADO ES MUY MUY MUY BIEN RECIBIDA.