Como faço para comunicar diferentes variáveis através do TX/ RX

tenho o valors destas variáveis para enviar,

int str1 = 0;
int str2 = 0;
int str3 = 0;
int str4 = 0;

e tenho estas para receber respectivamente;

unsigned char CH1, CH2, CH3, CH4;

achei este cod. para emissor,

int analogValue5, val5;

void setup() { 
// Habilita porta Serial 
Serial.begin(19200); 
}

void loop() { 
// Le pino analogico 5 
analogValue5 = analogRead(5);

// Mapeia os valores para 0 – 255 
val5 = map(analogValue5, 0, 1023, 0, 255);

// envia o valor via serial em modo binário 
Serial.println(val5, BYTE);

}

e este para o receptor

byte incomingByte;

void setup() { 
// Habilita comunicação serial 
Serial.begin(19200);

// declara pin 11 como output, este é o LED 
pinMode (11, OUTPUT); 
}

void loop() {

// Se há bytes livres vindo da porta serial 
if (Serial.available()) {

// Seta o valor para a variavel ‘incomingByte’ 
incomingByte = Serial.read();

// Escreve o valor no pino 11 
analogWrite(11, int(incomingByte));


}

vc´s acham que dá pra fazer ?

 

Exibições: 2648

Responder esta

Respostas a este tópico

fiz assim..

no tx....

declaro

int transf01 = 0; // recebe variával a ser transmitida para o arduino receptor
int transf02 = 0;
int transf03 = 0;
int transf04 = 0;

no setup

  Serial.begin(19200); 

no loop;

// o str1 (2,3 e 4) são variáveis globais que recebe valores do programa RX..

transf01 = map(str1, 0, 1023, 0, 255);// Mapeia os valores para 0 – 255
transf02 = map(str2, 0, 1023, 0, 255);// Mapeia os valores para 0 – 255
transf03 = map(str3, 0, 1023, 0, 255);// Mapeia os valores para 0 – 255
transf04 = map(str4, 0, 1023, 0, 255);// Mapeia os valores para 0 – 255

Serial.println(transf01, HEX );
Serial.println(transf02, HEX );
Serial.println(transf03, HEX );
Serial.println(transf04, HEX );

no rx,,

void loop() {
if (Serial.available() > 0) // Verifica se tem dados disponiveis na serial
{
CH1 = Serial.parseInt();
delay(delay_time);
}
}

não sei como colocar as outras variáveis.

é normal estes caracteres no monitor ???

Verifique a taxa da serial, ela está errada.

aki esta 190200

  Serial.begin(19200);     

Eu tive um problema exatamente assim que você descreveu, porém a minha comunicação era entre um Attiny85  e um Arduino Nano (e usando SoftwareSerial)

A comunicação estava dando retornando estes garbages no Serial Monitor, independentemente dos Bauds que eu definia.

Tente fazer o seguinte, suba o baud ou diminua mais , teste com vários para ver se começa a marcar direito

Apesar de eu ter feito o teste de subir / descer os Bauds, não foi assim que resolvi meu problema, meu problema estava no Arduino Nano que por algum motivo não fazia a recepção correta do Attiny...

A minha solução foi que sem querer conectei o Attiny no Arduino Uno que tinha aqui em casa e passou a dar certo, sem ter que alterar nenhum Baud ou algo do tipo. Ou seja, o mesmo número de baud e programação através do Arduino Nano que não funcionava, funcionou no UNO.

Não sei as causas, sei que deu certo e consegui ver o que eu precisava e fechei a caixa.

Abs

Gilmar, o Flavio esta lhe informando que a console da IDE do Arduino esta com a taxa de transmissão incorreta, por isso os carateres inválidos. 

Clique na opção (barra inferior da janela) para 19200. Na tela que enviou esta a 9600 !

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço