Olá, pessoal

Comecei com arduino a pouco tempo, 4 dias para ser mais exato..srsr

Segui uns exemplos para enviar letras pela Serial para ativar saídas, até ai moleza.

Mas eu preciso enviar números, mas o arduino não ler o numero que foi enviado, 

A pergunta é: como eu faço que para converter o dado que chega na porta serial do arduino para o numero que foi enviado pra ele?  

Já tentei simplesmente converter o  eu chegar na serial para Inteiro, mas nao deu certo.

Estou usando o Serial Monitor e programas feito em VB e C# para enviar.(lembrando que os dados enviados, são dados de uma textBox).

Obs: esses números enviados serão usados para definir o valor do PWM. 

Obrigado a todos!

Exibições: 14901

Responder esta

Respostas a este tópico

vc poderia me mandar esse exemplo...qria testar...grato

Hugo, Estou montando um programa como este mas meu conhecimento é superficial, como faço para entrar com valores com duas casa decimais exemplo 82.50, 250,70....

Pois o programa só aceita números inteiros.

Abraços.

Que tipo de driver esta usando?

Resposta em pascal:

//poe no uses

uses strutils;

var valor:integer;

begin

valor:=((strutils.intToBin(int64(chr(variant('A'))),8)));// A é o caractere recebido da serial

end;

Coloca um video ai da sua aplicação funcionando

Hugo, Estou montando um programa como este mas meu conhecimento é superficial, como faço para entrar com valores com duas casa decimais exemplo 82.50, 250,70....

Pois o programa só aceita números inteiros.

Abraços.

Olhe este código que eu usei para controlar servos pelo computador e tbm PWM.
Veja se vc consegue adaptar o para sua situação

char buffer[18];

#include <Servo.h>

Servo myservo; // create servo object to control a servo

void setup()
{
Serial.begin(9600);
Serial.flush();
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
myservo.attach(12);
}

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(12, Ans);
myservo.write(Ans);

}

}

Hugo, Estou montando um programa como este mas meu conhecimento é superficial, como faço para entrar com valores com duas casa decimais exemplo 82.50, 250,70....

Pois o programa só aceita números inteiros.

Abraços.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço