INTEIRO / FRACIONÁRIOS - Convertendo Números inteiros em Fracionários

Galera estou usando o código postado pelo companheiro,  Hugo Bernard :

 

 

http://labdegaragem.com/forum/topics/ajuda-arduinoreceber-n-meros-p...

 

Porem estou usando o Monitor serial do Arduíno para digitar os valores porem não consigo entrar com valores decimais fracionários ex: 5,56 ou 245,65, e ele não reconhece e só apresenta valores inteiros, sei que devo converter para float a variável de entrada, mas não sei fazer, sou iniciante.

 

Alguém poderia me ajudar.

 

Abraços.

 

char buffer[18];

 

void setup()

{

 Serial.begin(9600);

 Serial.flush();

 pinMode(9, OUTPUT);

 pinMode(11, OUTPUT);

 pinMode(10, OUTPUT);

}

 

void loop()

{

 if (Serial.available() > 0) {

 int index=0;

 delay(100); // permite o buffer encher

 int numChar = Serial.available();

 if (numChar>15) {

 numChar=15;

 }

 while (numChar--) {

 buffer[index++] = Serial.read();

 }

 splitString(buffer);

 }

}

 

void splitString(char* data) {

 char* parameter;

 parameter = strtok (data, " ,");

 while (parameter != NULL) {

 setLED(parameter);

 parameter = strtok (NULL, " ,");

 }

 

// Limpa os textos e o buffer serial

 for (int x=0; x<16; x++) {

 buffer[x]='\0';

 }

 Serial.flush();

}

 

void setLED(char* data) {

 if ((data[0] == 'a') || (data[0] == 'R')) {

 int Ans = strtol(data+1, NULL, 10);

 Ans = constrain(Ans,0,255);

 analogWrite(9, Ans);

 

 }

 if ((data[0] == 'b') || (data[0] == 'G')) {

 int Ans = strtol(data+1, NULL, 10);

 Ans = constrain(Ans,0,255);

 analogWrite(11, Ans);

 

 }

 if ((data[0] == 'c') || (data[0] == 'B')) {

 int Ans = strtol(data+1, NULL, 10);

 Ans = constrain(Ans,0,255);

 analogWrite(10, Ans);

 //Serial.println(Ans);

 }

}

Exibições: 69

Responder esta

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço