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