int i = 0; //variable de acarreo, utilizada con el array
int digitos = 0; //número de dígitos del número escrito
int numero = 0; //el número que hemos escrito
int exponente = 0; //el exponente al que se elevarán los dígitos
const int maxDigitos = 10; //Máximo de dígitos del número
int num[maxDigitos]; //array con los dígitos de nuestro número
void setup(){
  Serial.begin(9600); //Iniciamos el Serial
}
void loop(){
  digitos = 0;
  numero = 0;
/*Primero, se comprueba que el Serial esté disponible. Si es así, 
al enviar un número al Arduino desde el ordenador, se almacenarán
los dígitos individuales en las variables num[]. Además, muestra el
valor de los dígitos en el ordenador.
Hay que restar 48, ya que los números son enviados en formato ASCII
*/
  if (Serial.available() > 0){
    for (i = 0; i < maxDigitos; i++){
      num[i] = Serial.read();
      num[i] = num[i] - 48;
      Serial.print(i);
      Serial.print(" = ");
      Serial.println(num[i]);
    }
/*Determinamos los dígitos del número. En todas las variables
del array se almacena información, siendo un -49 si no contiene
un número. Por tanto, se cuentan las variables num[] con contenido
diferente de -49, y se pasa el resultado a la variable digitos*/
    for (i = 0; i < maxDigitos; i++){
      if (num[i] != -49){
        digitos++;
      }
    }
    Serial.print("digitos = ");
    Serial.println(digitos);
/*En esta parte del programa se toman los dígitos por separado, y,
en función de su posición (unidades, decenas, centenas...) son
elevados a un exponente determinado por el número de dígitos
*/
    for (i = 0; i < maxDigitos; i++){
      if (i < digitos){
        exponente = digitos - 1;
        exponente = exponente - i;
        numero = numero + (num[i] * pow(10, exponente));
      }
    }
/*Por un motivo que no entiendo, cuando los números son de 3 dígitos
o más, se le resta 1 a las unidades. Después de corregir esto último
se muestra el número
*/
    if (digitos >= 3)
      numero++;
    Serial.print("El numero que has escrito es ");
    Serial.println(numero);
  }
}