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?

Exibições: 500

Responder esta

Respostas a este tópico

Boa noite CA,

este valor "30.25" é guardado em uma variável tipo string?

Clique em : " Deseja carregar arquivos? " e depois em " Escolher arquivo" e anexe o arquivo
com o seu sketch.

RV

Pode ser amigo, se for necessário armazenar em string, eu armazeno... oque eu preciso é receber um valor pela serial e transformar em um valor de formato (30.25 ou 26.47 ou xx.xx), resumindo duas casas decimais...

CA, 

testa este sketch e veja se te ajuda.

RV

Anexos

Este programa me ajudou bastante, veja que coloquei na função obtem_valor(), porem quando eu envio um valor negativo, ele retorna um valor estranho(42949676.00), preciso que isso funcione tambem com os valores negativos...

Anexos

Bom dia CA,

mude esta linha "unsigned long numero;" para  "long numero;" e teste com numero negativo.

RV

Bom dia amigo,

muito obrigado pela ajuda, funcionou perfeitamente... encontrei um outro problema aq, veja se pode me audar por favor, na função velocidades() funciona tudo certo, faz o mapeamento do potenciometro, tudo beleza, mas esta com algum problema na equação "feed_rate = (map_leitura / 100) * vel_codigo;" quando o valor do potenciometro é menor que 100 ele zera o feed_rate...

Anexos

Bom dia CA.

Nào entendi sua dificuldade.

Veja o resultado do meu teste usando seu sketch.

RV

valor: 1000.00
pot: 77
vel_codigo: 1000
map_leitura: 14
feed_rate: 14000


valor: 1000.00
pot: 68
vel_codigo: 1000
map_leitura: 13
feed_rate: 13000


valor: 1000.00
pot: 51
vel_codigo: 1000
map_leitura: 9
feed_rate: 9000


valor: 1000.00
pot: 35
vel_codigo: 1000
map_leitura: 6
feed_rate: 6000

Então, o problema estava em na forma que eu declarei uma variável, mas já consegui resolver, obrigado cara!

Olá Caio,

Varias pessoas estão acompanhado o seu tópico, como sempre com a ajuda  inestimável colega garagista Rui Viana conseguiu resolver.

Note, você deveria dizer onde encontrou o erro e como resolveu, não apenas dizer já resolvi aqui, lembre-se, este é um fórum onde todos compartilhamos conhecimento, esse é o verdadeiro espirito do mesmo, então por favor, diga que variável estava mal declarada, e como resolveu.

Depois disso, se quiser contribuir com o forum assim como você recebeu contribuição, edite o nome do seu tópico atual e escreva antes dele a palavra RESOLVIDO isso facilitara a busca para outros garagistas como você com problemas similares.

Obrigado.

Abs,

CK

Ok Carlos, desculpe,
eram duas variáveis que estavam declaradas como int se não me engano (map_leitura e vel_codigo) oque fiz foi declarar como  float e ficou tudo resolvido...

Não a porque se desculpar Caio, obrigado por entender e colaborar.

Abs.

CK

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2020   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço