La función se llama toInt, e "int" es la abreviatura de "integer" (número entero); no necesariamente tiene que significar que retorna dicho tipo de dato. Se llama toInt, pero en realidad retorna long; creo que deberías leer la documentación.
void setup(){
Serial.begin(9600);
}
void loop(){
if (Serial.available()){
long num = Serial.readString().toInt();
Serial.println(num);
Serial.println(sizeof(num));
}
}
Sin embargo el rango que quieres solo se puede conseguir con un numero de 64 bits si no he hecho mal las cuentas ,que tambien puede ser....quiza lo de arriba tambien podria valer substituyendo
long num
por
long long num
o
int64_t num
pero Serial.println no puede imprimir numeros de 64 bit y no puedo comprobarlo,aunque si funciona sizeof y devuelve 8 ,por lo tanto ,el numero es de 64bit.
Podrá existir un tipo de dato de 64 bits para AVR, pero hay dos problemas:
String.toInt() se limita a retornar long:
long String::toInt(void) const
{
if (buffer) return atol(buffer);
return 0;
}
Cuando intento imprimir un long long o sus equivalentes, esto sucede:
C:\Users\Usuario\AppData\Local\Temp\arduino_28a60e125e356fac4f461c5616e093c7\sketch_mar01a.ino: In function 'void setup()':
sketch_mar01a:4: error: call of overloaded 'println(long long int&)' is ambiguous
Serial.println(l);
^
C:\Users\Usuario\AppData\Local\Temp\arduino_28a60e125e356fac4f461c5616e093c7\sketch_mar01a.ino:4:19: note: candidates are:
In file included from C:\Users\Usuario\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino/Stream.h:26:0,
from C:\Users\Usuario\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino/HardwareSerial.h:29,
from C:\Users\Usuario\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino/Arduino.h:224,
from sketch\sketch_mar01a.ino.cpp:1:
C:\Users\Usuario\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino/Print.h:70:12: note: size_t Print::println(const __FlashStringHelper*) <near match>
size_t println(const __FlashStringHelper *);
^
C:\Users\Usuario\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino/Print.h:70:12: note: no known conversion for argument 1 from 'long long int' to 'const __FlashStringHelper*'
C:\Users\Usuario\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino/Print.h:71:12: note: size_t Print::println(const String&) <near match>
size_t println(const String &s);
^
C:\Users\Usuario\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino/Print.h:71:12: note: no known conversion for argument 1 from 'long long int' to 'const String&'
C:\Users\Usuario\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino/Print.h:72:12: note: size_t Print::println(const char*) <near match>
size_t println(const char[]);
^
C:\Users\Usuario\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino/Print.h:72:12: note: no known conversion for argument 1 from 'long long int' to 'const char*'
C:\Users\Usuario\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino/Print.h:73:12: note: size_t Print::println(char)
size_t println(char);
^
C:\Users\Usuario\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino/Print.h:74:12: note: size_t Print::println(unsigned char, int)
size_t println(unsigned char, int = DEC);
^
C:\Users\Usuario\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino/Print.h:75:12: note: size_t Print::println(int, int)
size_t println(int, int = DEC);
^
C:\Users\Usuario\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino/Print.h:76:12: note: size_t Print::println(unsigned int, int)
size_t println(unsigned int, int = DEC);
^
C:\Users\Usuario\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino/Print.h:77:12: note: size_t Print::println(long int, int)
size_t println(long, int = DEC);
^
C:\Users\Usuario\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino/Print.h:78:12: note: size_t Print::println(long unsigned int, int)
size_t println(unsigned long, int = DEC);
^
C:\Users\Usuario\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.13\cores\arduino/Print.h:79:12: note: size_t Print::println(double, int)
size_t println(double, int = 2);
^
exit status 1
call of overloaded 'println(long long int&)' is ambiguous
En resumen: Print no posee implementación para long long.
A no ser que estés dispuesto a modificar los archivos fuente, mejor limítate al rango que ofrecen 32 bits.