Ви не увійшли.
Сторінки 1
У деяких прикладах при роботі з analogRead(A0) використовували delay(10) перед зчитуванням.
Використання serial.println() потрібно було для контролю, у готовому приладі використовуватись не буде.
Тип float - під час випробувань приєдннував 1602, простіше(без перетворювання типів змінних) у використанні.
Знайшов причину затримки. У кінці коду приймача є команда затримки delay(200). Після заміни на delay(10) затримка зникла. Якщо замінити на delay(100), тоді затримка становить 10 секунд. Таку затримку використовув коли для налагодження роботи підключав тимчасово дисплей 1602.
Мені здається що затримка у приймачі. Як я описував, поведінка приймача така, що при зміні показів із затримкою в 5-10 секунд я фізично роз"єдную дроти, але приймач із затримкою потім показує принятий вірний результат.
Я це розумію, тому і питаю, можливо хтось мав досвід? Код дуже простий.
Приймач:
#include <SoftwareSerial.h>
SoftwareSerial RS485(6,7);
#define DE_RE 10 // управление модулем RS485 прием-передача
float R2;
void setup()
{
Serial.begin(9600);
RS485.begin(4800);
pinMode(DE_RE,OUTPUT);
digitalWrite(DE_RE,LOW); //приемник
}
void loop()
{
R2=RS485.read();
Serial.print("Zadanie = ");
Serial.println(R2,0);
delay(200);
}
Передавач:
#include <SoftwareSerial.h>
SoftwareSerial RS485(6,7);
#define DE_RE 10
float R;
float R1;
void setup()
{
Serial.begin(9600);
RS485.begin(4800);
pinMode(DE_RE,OUTPUT);
digitalWrite(DE_RE,HIGH); //передатчик
}
void loop()
{
R1 = analogRead(A0);
R =(R1+1)/4;
Serial.print("ZADANIE = ");
Serial.println(R,0);
RS485.write(R);
delay(10);
}
Соединил две ардуины через модули TTL-RS485 по стандартной схеме. Одна ардуина измеряет напряжение на переменном резисторе и передаёт на вторую. Передача только в одну сторону. Связь работает, но при изменении напряжения приёмник принимает данные с задержкой 20 секунд. Приём и передачу контролирую в мониторе. Скорость связи менял 4800, 9600, 19200 - результат - задержка не изменилась. При изменении данных на передатчике через 10 секунд разрывал линию - на приёмнике с задержкой показания менялись! То-есть, приёмник принимает данные сразу, но "отдаёт" с задержкой 20 секунд. В приёмнике реализовано только приём данных и просмотр(контроль) в мониторе. Линия связи - витая пара, 40 м.
Покажи какая ошибка.
Сторінки 1