Ви не увійшли.
Сторінки 1
Проблема не в сырцах а в построении самой шины, по вашему совету более внимательно изучил http://datasheets.maximintegrated.com/e … MAX491.pdf
никто не знает?
попробовал залить скетч тот же что и в примере https://arduino-info.wikispaces.com/Sof … 485Example
ситуация та же самая. ПК - это мастер ,с него в COM порт летят команды 1 или 2 и соответственно при 1 зажигается blue_led, при 2 - yellow_led
#include <SoftwareSerial.h>
#define SSerialRX 10 //Serial Receive pin
#define SSerialTX 11 //Serial Transmit pin
#define SSerialTxControl 4 //RS485 Direction control
#define RS485Transmit HIGH
#define RS485Receive LOW
#define Pin13LED 2
SoftwareSerial RS485Serial(SSerialRX, SSerialTX); // RX, TX
int byteReceived;
int byteSend;
void setup()
{
// Start the built-in serial port, probably to Serial Monitor
Serial.begin(9600);
Serial.println("SerialRemote"); // Can be ignored
pinMode(Pin13LED, OUTPUT);
pinMode(SSerialTxControl, OUTPUT);
digitalWrite(SSerialTxControl, RS485Receive); // Init Transceiver
// Start the software serial port, to another device
RS485Serial.begin(9600); // set the data rate
}//--(end setup )---
void loop() /****** LOOP: RUNS CONSTANTLY ******/
{
// while (RS485Serial.available() == 0);
int val = RS485Serial.read() - '0';
//if (val == 1)
if (val == 2)
{
digitalWrite(Pin13LED, HIGH); // Show activity
delay(1000);
digitalWrite(Pin13LED, LOW);
digitalWrite(SSerialTxControl, RS485Transmit); // Enable RS485 Transmit
//RS485Serial.write(byteSend); // Send the byte back
Serial.println("Yellow_on");
//Serial.println("Blue_on");
delay(10);
digitalWrite(SSerialTxControl, RS485Receive); // Disable RS485 Transmit
}
}
обе ардуины+конвертеры подключены так: R0=D10, DI=D11, DE/RE=D4
при отправке 1 в serial - зажигается blue_led на первой ардуине, при отправке 2 в serial - на второй ардуине ничего не происходит. Далее, если на второй ардуине отключить DE от D4 то при отправке 1 в serial - зажигается blue_led на первой ардуине, при отправке 2 в serial - зажигается yellow_led на второй ардуине, и это как бы круто, оно работает, но вторая ардуина обратно в serial не отвечает...т.е суть проблемы в том, что нужно получить обратные ответы при выполнении команды, иначе не понятно, получила одна из ардуин что-то или не получила
код в первом посту поправил, собсна если ардуина в serial видит 1 то включает лед, на второй ардуине такой же код но изменена строка на if (val == 1) на if (val == 2) т.е если видит 2 то включает лед и т.д
На счет отправки в сериал при старте да, точно, попробую убрать, посмотрю что изменится
хотя как раз многие !RE + DE что б аппаратно избавится от эха
читали? )) http://datasheets.maximintegrated.com/e … MAX491.pdf
буду пробовать
ну так и тот пример что я привел работает, но при подключении нескольких ардуин вылетает трабла которую я описал в тексте своего первого поста...
Доброго дня
Есть схема http://adatum.ru/wp-content/uploads/2014/08/test789.jpg по которой две ардуины подключены к писюку
и есть программа залитая в обе ардуины
#define SerialTxControl 5
#define RS485Transmit HIGH
#define RS485Receive LOW
int ledPin = 2;
char buffer[100];
void setup(void) {
Serial.begin(9600);
pinMode(SerialTxControl, OUTPUT);
digitalWrite(SerialTxControl, RS485Transmit);
Serial.println("TEST666");
pinMode(ledPin, OUTPUT);
delay(100);
digitalWrite(SerialTxControl, RS485Receive);
}
void loop(void) {
digitalWrite(SerialTxControl, RS485Receive);
while (Serial.available() == 0);
int val = Serial.read() - '0';
if (val == 1)
{
digitalWrite(ledPin, HIGH);
Serial.println("led_on");
}
}
Собственно при подключении такой схемы, пины DE/RE на TTL конвертере замыкаются между собой перемычкой и подключаются к управляющему контакту D10 ардуины, так же происходит и на второй ардуине, далее при включении всего этого безобразия я могу работать только с одной ардуиной, т.е что-то отправлять или принимать от нее по RS485, а вот вторая висит с постоянно горящим TX и соответственно ничего передать или принять от нее я не могу...Если разомкнуть RE от DE на проблемной ардуине и подключить только DE на D10, то я могу на нее отправлять какие то команды через RS485 и она их обрабатывает, но работает это в одностороннем порядке т.е ответы ардуина обратно не отправляет.
Собсна вопрос знатокам, где и что мог упустить?
Сторінки 1