Boa tarde pessoal,
Estou com um problema e não consigo achar a solução.
Estou recebendo pela porta serial no Arduino uma string com 5 valores diferentes separados por vírgula mais ou menos desta forma: 1000,2000,3000,4000,5000
Pois bem, preciso pegar essa string e dividi-la em 5 variáveis diferentes do tipo float, ou seja,
A=1000
B=2000
C=3000
D=4000
E=5000
Alguém poderia me ajudar com esse código?
Obrigado.
Abraços.
Tags:
Obs: os valores não são fixos, ou seja, podem variar de tamanho...
exemplo: 100,2000,10,155,3500
A quantidade de casas decimais podem variar com o tempo.
Supondo que você esteja lendo a entrada de dados do arduino pela serial de um computador.
Você pode fazer uma aplicação desktop usando Pascal (Delphi ou Lazarus):
Veja exemplo:
Var valores:tstringlist;
begin
valores:=tstringlist.create;
valores.delimiter:=char(','); //<voce definiu como virgula,mas poderia ser outro delimitador
valores.delimitedtext:='100,2000,5000,30,etc';//dados lidos na porta serial
showmessage(valores.text); //exibe lista
valores.savetofile('arquivo.txt');//salva para arquivo
valores.free;
end;
Almir,
Na verdade esses dados estou lendo de um simulador de vôo (Flightgear) pelo Linux.
Ele envia pela serial os valores de 5 variáveis diferentes separados apenas pela virgula, por exemplo:
o primeiro valor é referente a altitude da aeronave, o segundo é referente ao valor de taxa de subida, o terceiro de potência do motor e assim por diante...
Preciso de um código que eu possa implementar na própria IDE do Arduino.
Obrigado pela atenção.
Abraço.
sua_String.replace(',', '\n'); // usa a função replace,substituindo virgula pela quebra de linha
Sugiro vc varrer a string começando pelo fim.Quando vc pegar o primeiro char da direita vc pode fazer uma comparação usando switch, se for '1' iguala uma variavel(vamos supor num=0) a 1 vezes o peso da unidade que seria 1, se for '5'
num += 5*peso;
e ai vai.Esse peso seria uma variável responsável por ajustar unidades, dezenas, centenas e etc.Depois pula pro próximo char, mesmo procedimento de comparação, porém com um peso de dezena você faz peso*=10; caso o char,por exemplo seja '3', então faça
num+=3 * peso; logo você terá 30 mais o valor anterior de unidade.
Quando o char for uma virgula, o switch deve preparar uma nova variável pra receber os próximos valores.
Vetores seriam bem práticos.
Ah, cuidado pra não ultrapassar o inicio da string.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por