Ajuda com Atoi e Serial.read()

Boa tarde,
estou fazendo um codigo que lê um numero decimal (negativo ou positivo) na serial e então movimenta motores de passo em função do numero.

Exemplo:

Serial recebe 30.25
motor anda 30.25...

Porém descobri que o Arduíno não armazena o numero recebido como inteiro, e estive pesquisando sobre como converter usando essa função Atoi, só que ainda não consegui fazer funcionar, alguem pode me explicar como faço para usa-la?

Ps* nesse caso, acredito que tenho que usar o float para armazenar o numero, pois tem casas decimais, correto?

CaioAssaf se você quiser, pode converter diretamente pelas funções do arduino.
https://www.arduino.cc/reference/en/language/variables/conversion/floatcast/

Lá tem mais funções para confirmar!

Olá,
então estive pesquisando aqui e a forma que encontrei foi essa, porem não funciona com valores negativos, conhece outra forma de converter?

Definitivo.ino (3.36 KB)

Estás a usar variáveis unsigned… talvez por isso?

Experimenta com a variável número como apenas long.

Outra coisa é que pode acontecer é que o método toInt não aceite valores negativos, mas se fosse esse o caso retornava zero.

Que é que está a acontecer com o teu código?

Dito isto, talvez a função parseFloat resolva o teu problema… podes também olhar para o método parseInt.

https://www.arduino.cc/en/Serial/ParseFloat