to precisando fazer uma comunicação Serial, um Atmega328 faz os cálculos e envia para um segundo microcontrolador, e este envia para o pc, mas eu queria fazer este segundo microcontrolador faça cálculos e envie pela mesma porta, mas sem embaralhar os dador
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(57600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println("Goodnight moon!");
// set the data rate for the SoftwareSerial port
mySerial.begin(4800);
mySerial.println("Hello, world?");
}
void loop() // run over and over
{
if (mySerial.available())
Serial.write(mySerial.read());
if (Serial.available())
mySerial.write(Serial.read());
}
usei este para receber de outro atmega328, e funciona bem, mas quando tento acrescentar algum dado na segunda serial as informações ficam embaralhadas.
alguem tem uma ideia pra me ajudar?
Tags:
pode ser por causa da velocidade do serial
vc confirmou se estao na mesma velocidade?
e vc pode fazer eles se comunicarem pelo pino 0 e 1 do arduino mesmo nao precisa nesesariamente usar o software serial
eh so ligar rx de um no tx do outro
verifiquei tudo isto sim,
eu uso a porta ja existente pra comunicar com o pc, e a segunda pra receber os dados do 1º atmega, só que estou com dificuldade de fazer o 2º atmega, além de retransmitir os dados do 1ª, fazer algumas funções junto no loop, recebi umas dicas para armazenar os dados recebidos em uma variável, mas não estou conseguindo fazer isso,
tem ideia de como se faz isso? armazenar os dados de uma serial em uma variável?
//Segue um exemplo que eu montei para vc
#include <SoftwareSerial.h>
SoftwareSerial mySerial(10, 11); // RX, TX
String dados;
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(57600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.println("Goodnight moon!");
// set the data rate for the SoftwareSerial port
mySerial.begin(4800);
mySerial.println("Hello, world?");
}
void loop() // run over and over
{
if (mySerial.available()) {
dados = ""; // limpa a strig para nova leitura
while (mySerial.available()>0){ // enquanto houver dados na serial
char serial = mySerial.read(); // armazena o que chegou
dados+= serial; // monta a string com cada dado
delay(10); // pequeno delay para iniciar nova leitura
}
Serial.println(dados); // envia para o pc
//se quiser transformar em inteiro para fazer cálculo:
//somente se for numeros
//int valor = dados.toInt();
// agora vc usa a variável "valor" para a mátemárica
}
if (Serial.available()) {
mySerial.write(Serial.read());
}
}
Eduardo Silva
muito obrigado!
funcionou muito bem
vlw cara
Falow rapaz, boa sorte nos projetos!
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por