Pages: [1]   Go Down
Author Topic: Enviar dado com o SoftwareSerial.h  (Read 1241 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 39
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Olá pessoal,

Estou tentando fazer com que dois arduino se comuniquem. No caso apenas um envia dados enquanto que o outro consequentemente só recebe.
Não sei se estou fazendo alguma besteira mas vamos lá..

Este apenas envia o dado:
Code:
#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // Duemilanove

void setup(){
  Serial.begin(9600);
  mySerial.begin(4800);
  delay(100);
  Serial.println("Estou enviando para o Uno!");
}

void loop(){
  mySerial.write("Enviando");
 
}

e no outro ele só receberia:

Code:
#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // Uno

void setup(){
  Serial.begin(9600);
  mySerial.begin(4800);
  Serial.println("Estou recebendo do Duemilanove!");
}

void loop(){
  String resposta = "";
  if(mySerial.available()){
    entrada = mySerial.read();
    Serial.write(entrada);
  }
}

O arduino 2 nao chega nem a receber nada. No arduino 1 (oq envia) eu fizer algo como:

int var = Serial.read();
Serial.println(mySerial.write(var));

no proprio serial monitor dele, ele me retorna 1. Alguem sabe o por que?
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3267
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

ligaste o pino 2 ao 3??

a funcao mySerial.write, retorna 1. é isso que vês no serial monitor.
que pretendes fazer aí???
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 39
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Liguei o pino 2 (rx) do arduino uno ao pino 3 (tx) do duemilanove..
Eu pretendia enviar um dado qualquer de um para outro apenas para saber como seria a comunicação pois no futuro estava pretendendo por exemplo, usar um sensor de temperatura e enviar esse valor para o TelosB
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3267
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Código para emissor:

Code:
#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // Duemilanove

void setup(){
  Serial.begin(9600);
  mySerial.begin(4800);
  delay(100);
  Serial.println("Vamos fazer um rolling counter...");
}
unsigned int count = 0;
void loop(){
  mySerial.write(count++);
  delay (200); //uma pausa para um kit kat.
}



Código para receptor.

Code:
#include <SoftwareSerial.h>

SoftwareSerial mySerial(2, 3); // Uno

void setup(){
  Serial.begin(9600);
  mySerial.begin(4800);
  Serial.println("Estou recebendo do Duemilanove!");
}

unsigned int entrada = 0;
void loop(){
//  String resposta = ""; //REGRA NUMERO 1, NUNCA USAR String!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  if(mySerial.available()){
    entrada = mySerial.read();
    Serial.println(entrada);
  }
}

Podes ligar ambos os pinos e assim fazes uma conversa entre ambos. smiley
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 39
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Testei o codigo que me passou e constatei coisas do tipo:
como disse liguei o pino 2 (uno - rx) ao pino 3 (duemilanove - tx)
e verifiquei que o duemilanove (que seria para enviar) nao chega a enviar nda.. o led tx dele nem chega a piscar
e no uno o led de tx fica piscando.. foi ai que abri o serial monitor e nao sei o motivo mas ele printa o numero "255"
Alguma ideia de o pq disso? o.O
Logged

'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3267
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ok...

Assumi que entendias o que se passaria.

Em primeiro lugar, se olhares para o esquema do Arduino, vais ver que não existem leds nos pinos 2 e 3.

Segundo sei, o Uno (não tenho um Uno) só pisca os LEDs quando existe algo do outro lado (o teu computador) para comunicar.

Então depois de meteres esses códigos em ambas as placas, deves ligar as duas a portos USB e abrir portas série nesses portos. Eu sei que o Arduino não dá para monitorizar duas portas série, então para isso podes ter de usar outro software, ou então só monitorizar o receptor.

O valor que apareceu na porta série é, ou espero que seja, o contador que implementei no exemplo. Basicamente ele está sempre a enviar um numero crescente e o outro lado quando recebe da newsoftserial, escreve para a hardware serial.
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Offline Offline
Newbie
*
Karma: 0
Posts: 39
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Eu estava tão atento com a biblioteca que acabei esquecendo de setar no proprio setup quem é o pino de entrada e o pino de saida..
finalmente consegui comunicar os dois arduinos =)
Percebi tambem que se eu ligar apenas um fio de um rx com o tx.. ele fica enviando caracteres estranhos, foi preciso entao eu ligar os dois fios (mesmo no meu caso apenas um arduino estiver enviando)
Obrigado bubulindo pela ajudar.. =)
Logged

Pages: [1]   Go Up
Jump to: