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);
}
}
Tags:
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por