Converter String para Float, multiplicar por 1.8 e converter novamente par String.

Olá, Pessoal. Sou novo no forum e gostaria antes de mais nada das os parabéns pelo site que é muito bom.

Eu estou começando agora com arduino, trabalho com programação mas não de arduino.

Estou tendo umas dúvidas, será que alguem podeira me ajudar?


Exemplo:

Estou recebendo via serial um valor(no meu caso é a velocidade do gps shield)

Como a serial recebe os dados de char em char, eu montei cada retorno do GPS em uma string separada por vírgula.

A velocidade do GPS vem em nós e eu quero converter para km/h. ai começa o problema:

Como que eu posso recuperar essa velocidade, multiplocar por 1.8 e voltar novamente para stringh?

Alguem poderia me dar uma luz?

Obrigado

Exibições: 690

Responder esta

Respostas a este tópico

Boa tarde fera, bom eu também sou novo aqui no fórum, comecei recentemente com o Arduíno, e não sei te dizer exatamente o que fazer para solucionar todo o seu problema. 

Porem, quando estou programando em C++ e preciso converter string to int, eu utilizo o atoi da biblioteca <stdlib.h>, e para float voce pode utilizar o atof.

Exemplo:

int i;

char vetor[50];

i = atoi(vetor);

Espero te ajudado, segue o link de referencia:

http://www.cplusplus.com/reference/cstdlib/atoi/

Fala ai, Lucas.. Obrigado pelo toque. Vou fazer uns testes aqui.

Valeu. alias voce saberia como me dizer como transformar o float para string novamente?

Obrigado novamente

// Projeto 10 – Mood lamp com controle serial
char buffer[18];
int red, green, blue;
int RedPin = 11;
int GreenPin = 10;
int BluePin = 9;
void setup() {
Serial.begin(9600);
Serial.flush();
pinMode(RedPin, OUTPUT);
pinMode(GreenPin, OUTPUT);
pinMode(BluePin, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
int index=0;
delay(100); // deixe o buffer encher
int numChar = Serial.available();
if (numChar>15) {
numChar=15;
}
while (numChar--) {
buffer[index++] = Serial.read();
}
splitString(buffer);
}
}

void splitString(char* data) {
Serial.print("Data entered: ");
Serial.println(data);
char* parameter;
parameter = strtok (data, " ,");
while (parameter != NULL) {
setLED(parameter);
parameter = strtok (NULL, " ,");
}
// Limpa o texto e os buffers seriais
for (int x=0; x<16; x++) {
buffer[x]='\0';
}
Serial.flush();
}
void setLED(char* data) {
if ((data[0] == 'r') || (data[0] == 'R')) {
int Ans = strtol(data+1, NULL, 10);
Ans = constrain(Ans,0,255);
analogWrite(RedPin, Ans);
Serial.print("Red is set to: ");
Serial.println(Ans);
}
if ((data[0] == 'g') || (data[0] == 'G')) {
int Ans = strtol(data+1, NULL, 10);
Ans = constrain(Ans,0,255);
analogWrite(GreenPin, Ans);
Serial.print("Green is set to: ");
Serial.println(Ans);
}
if ((data[0] == 'b') || (data[0] == 'B')) {
int Ans = strtol(data+1, NULL, 10);
Ans = constrain(Ans,0,255);
analogWrite(BluePin, Ans);
Serial.print("Blue is set to: ");
Serial.println(Ans);
}
}

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço