Problema para coger datos del monitor

Muy buenas a todos/as.
Aunque me dedico a otras cosas, a veces me toca lidiar con cosas que no domino del todo bien y, justo, este es el caso.
Despues de mucho investigar sobre un robot kuka que mi jefe quiere que ponga a andar, se me ha encendido una bombillita y creo que puedo comandarlo con un arduino (no os voy a aburrir con los por menores).
El caso es que inocente de mi, me puse a hacer el codigo todo convencido hasta que pense: realmente coge los valores que le respondo a las preguntas o no?. Pues el caso es que no.
Os cuento un poco:
la cosa es que le hago una serie de preguntas:
-largo.
-ancho.
-cortes en largo.
-cortes en ancho.
Pongo los valores, y al imprimirlos por pantalla me dice que el valor "largo" es -1 cuando yo he escrito 1000, y asi con todos.
Os pongo el codigo con los calculos que tiene que hacer despues por si os resultan de utilidad.
El codigo no esta acabado pero compila bien lo que esta y es lo que quiero solucionar.
Gracias por la atencion.

const int pin12 = 12; // Led al pin 12
const int pin1= 1;
int a1f,a2f,a3f; 
int a1, a2, a3;
int lectura_largo;
int lectura_ancho;
int lectura_cortes_largo;
int lectura_cortes_ancho;
int marca_datos=0;
int val;      //variable para leer el dato
int i;
int preguntas=1;
int hora;
float a,b,c,d;
void setup() {
  Serial.begin(9600);
  pinMode(pin12, INPUT);
  pinMode (pin1, INPUT);
}

void loop() {
  lectura_datos();
  calculo_posiciones();
  inicio();
  control();
}


void lectura_datos() {

  
  Serial.println("Introduzca largo del tablero");
  while(Serial.available())
  Serial.read();
  while (Serial.available()<= 0) {
  char a=Serial.read();
  delay (500);
  }
  
  Serial.println("Introduzca ancho del tablero");
  while(Serial.available())
  Serial.read();
  while (Serial.available() <= 0) {
  lectura_ancho = Serial.read();
  delay (500);
  }

  Serial.println("Introduzca numero de cortes a lo largo");
  while(Serial.available())
  Serial.read();
  while (Serial.available() <= 0) {
  lectura_cortes_largo = Serial.read();
  delay (500);
  }
  
  Serial.println("Introduzca numero de cortes a lo ancho");
  while(Serial.available())
  Serial.read();
  while (Serial.available() <= 0) {
  lectura_cortes_ancho = Serial.read();
  delay (500);
  }

}
  


void calculo_posiciones()
{
lectura_cortes_largo=lectura_cortes_largo + 1;
lectura_cortes_ancho=lectura_cortes_ancho +1;
a1f=((lectura_largo/lectura_cortes_largo)/2)/3,6;
a1f=a1;

a2f= ((lectura_ancho/lectura_cortes_ancho)/2)/5;
a2f=a2;

}


void inicio()                                      //SALTO CON PULSACION DE ENTRADA.
  {
    const byte buttonPin = 2;                      //direccion sin determinar
    pinMode(buttonPin, INPUT_PULLUP);
    while (digitalRead(pin12) == HIGH)
  {}
while (digitalRead(pin1)==HIGH)
{}



for (int Pin12=true;++i;);
}


 void control ()
{
  
  
  
  
  
  
  
  
  }

Es normal que no funcione ya que hay muchos fallos en la programación.

Aqui llamas continuamente a las funciones sin control ninguno, no comparas si ya has recogido las medidas para poder hacer el inicio.

void loop() {
  lectura_datos();
  calculo_posiciones();
  inicio();
  control();
}

En la función de lectura de datos tampoco hay ningún control, deberías crear una variable para saber cuando has recogido el primer dato para poder saltar al segundo etc.

void lectura_datos() {

 
  Serial.println("Introduzca largo del tablero");
  while(Serial.available())
  Serial.read();
  while (Serial.available() <= 0) {
  char a=Serial.read();
  delay (500);
  }

Esto borralo, no sirve para nada

while(Serial.available())
  Serial.read();

Y el bucle yo siempre lo he hecho así

  while (Serial.available() > 0) {

krnlpanic:
Es normal que no funcione ya que hay muchos fallos en la programación.

Aqui llamas continuamente a las funciones sin control ninguno, no comparas si ya has recogido las medidas para poder hacer el inicio.

void loop() {

lectura_datos();
 calculo_posiciones();
 inicio();
 control();
}






En la función de lectura de datos tampoco hay ningún control, deberías crear una variable para saber cuando has recogido el primer dato para poder saltar al segundo etc.




void lectura_datos() {

Serial.println("Introduzca largo del tablero");
 while(Serial.available())
 Serial.read();
 while (Serial.available() <= 0) {
 char a=Serial.read();
 delay (500);
 }





Esto borralo, no sirve para nada



while(Serial.available())
 Serial.read();





Y el bucle yo siempre lo he hecho así



while (Serial.available() > 0) {




Muy buenas [* krnlpanic*](https://forum.arduino.cc/index.php?msg=4830059)* y gracias por tu respuesta.*
*Como ya comente en mi post ya se que hago las cosas mal y por eso no funciona, lo que me gustaria es saber como hacerlo bien pero no se como.Me puedes remitir el trozo de codigo correcto para hacerme con esos datos que introduzco tu, ya que sabes como hacerlo y yo no?*
*El proyecto es muy interesante pero me he quedado atrapado con este asunto.Te deberia una.*

No hace falta que uses quote de todo mi mensaje.

Mi recomendación es que pases por la sección documentación y leas sobre millis y maquina de estados que te ayudara en el desarrollo.

Moderador:
Por favor no repitas lo que otra persona te dice. Ya se lee en el post correspondiente.
Menciona a la persona por su nick y nada mas.
Usa quote para resaltar un párrafo, no todos y cada uno de los textos respondidos que corresponden a ese post.
Item 14 de las normas del foro, último párrafo, si quieres leer al respecto.
Gracias.