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: 14898

Responder esta

Respostas a este tópico

Olá,

Talvez te ajude: http://www.arduino.cc/en/Tutorial/Dimmer

Abraço

 Marcos, Muito obrigado cara, mas o problema desse tutorial é qeu preciso o Precessing ou Max/MSP versão 5 para interfacear com arduino. Eu queria  mesmo era enviar do Serial Monitor. 

Alguma sugestão?

Vlew!

Opa!

Fiz algo com serial a um tempo... usando Java pra mandar os dados via serial...

E ficou assim... Serial.print(entrada, BYTE); imprime o valor recebido em formato BYTE

Tenta Serial.print(entrada, DEC);

FONTE => http://arduino.cc/it/Serial/Print

[]´s

Recomendo que você leia isso aqui, é muito útil pra entender a biblioteca serial. http://arduino.cc/en/Reference/SoftwareSerial

Quando você usa a função  

char c = mySerial.read();

a função read lê um caractere da serial, não lê números, trata tudo como caracteres, então pra você interpretar os dados da serial você tem que tratá-los primeiramente. P.ex.: se você digitar no monitor 123, a função read irá ler 1 2 3, um caractere por vez. Então é interessante quando se trata de passar comandos pela serial, você colocar algo que possa ser identificado, p.ex.: p123 . Para você saber que após o caractere "p" é esperado um número, até que seja encontrado um espaço ou fim de linha. 

Veja também as funções de manipulação de strings. 

:D

Pessoal, ainda não estou conseguindo, mas da pra obter o valor real subtraindo por 0x30.

V = Serial.read();
Valor = Valor + (V - 0x30);

Dessa forma o é possível definir o dutycycle do pwm com o variável Valor (que só vai de 1 a 9), A dificuldade agora é e receber esses valores e montar um numero de 0 a 255.

Luís, vc poderia dar um exemplo em código do seu exemplo?

E muito obrigado pela ajuda de todos!

Mais sugestões?

Dá uma olhada nesse código:

http://pastebin.com/Kph5d67q

O autor usa comandos enviados pela serial para o Arduino, da seguinte maneira:

L180

L45 R135

r77

R25, L175

Ao final de cada linha é dado um ENTER.

Analise bem este código, que você poderá adaptar ao que você quer !

Consegui!!...srsrsr

Luís, realmente esse código que vc passou tinha tudo que eu precisava, mas eu só fui me dar conta quando eu vi com um exemplo muito parecido no Livro - Arduino Básico que eu comprei na net e chegou pra mim hj.

segue o código com algumas modificações:

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);
}
}

Fiz um exemplo de uma aplicação ridícula (srsr) em Visual Basic para controlar as saídas.

Muito obrigado pela atenção de todos!! Abraços!!

Sergio, eu nao entendi muito bem o qeu vc disse (hehehehe), mas com o pouquinho que eu sei eu te ajudo com o maior prazer...

E o pessoal aqui do LDG é fera...

com certeza, isso é fundamental...

Saudações Sérgio,

Cara é o seguinte:

1 - Programar não é complicado e nem bicho de 7 cabeças

2 - Normalmente responder "ajudar" em coisas mais simples muita gente não curte

3 - Estude e treine muito ALGORITMO para poder exercitar seu nível de abstração

4 - Inicie com alguma linguagem do tipo C, C++ ou Java que são ótimas linguagens para se iniciar.

QUALQUER DÚVIDA, EXPLICAÇÃO E ETC pode me perguntar que eu ajudo... agora sou bem direto e não dou coisas prontas, pois, assim sempre forçando a mente acabamos aprendendo.

[]´s

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço