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