09/12/15 20:05
alex1995
salve, sto cercando di fare comunicare 2 arduino con l' rs485 questo è il mio sorgente:
master:
slave:
non riesco a capire come mai sulla seriale del master appare continuamente la lettera p quando dovrebbe comparire un 1 quando io scrivo 1 sulla seriale del master :S.
master:
#include <SoftwareSerial.h> /*-----( Declare Constants and Pin Numbers )-----*/ #define SSerialRX 10 //Serial Receive pin #define SSerialTX 11 //Serial Transmit pin #define SSerialTxControl 3 //RS485 Direction control #define RS485Transmit HIGH #define RS485Receive LOW #define Pin13LED 13 SoftwareSerial RS485Serial(SSerialRX, SSerialTX); // RX, TX int byteReceived; int byteSend; void setup() { Serial.begin(9600); Serial.println("YourDuino.com SoftwareSerial remote loop example"); Serial.println("Use Serial Monitor, type in upper window, ENTER"); pinMode(Pin13LED, OUTPUT); pinMode(SSerialTxControl, OUTPUT); digitalWrite(SSerialTxControl, RS485Receive); RS485Serial.begin(127000); } void loop() { digitalWrite(Pin13LED, HIGH); if (Serial.available()) { byteReceived = Serial.read(); if(byteReceived == 48) { digitalWrite(SSerialTxControl, RS485Transmit); RS485Serial.write(48); digitalWrite(Pin13LED, LOW); delay(10); RS485Serial.write(49); digitalWrite(Pin13LED, LOW); delay(10); RS485Serial.write(50); digitalWrite(Pin13LED, LOW); delay(10); RS485Serial.write(51); digitalWrite(Pin13LED, LOW); delay(10); RS485Serial.write(52); digitalWrite(Pin13LED, LOW); delay(10); RS485Serial.write(53); digitalWrite(Pin13LED, LOW); delay(10); RS485Serial.write(54); digitalWrite(Pin13LED, LOW); delay(10); RS485Serial.write(55); digitalWrite(Pin13LED, LOW); delay(10); RS485Serial.write(56); digitalWrite(Pin13LED, LOW); delay(10); RS485Serial.write(57); digitalWrite(Pin13LED, LOW); delay(10); digitalWrite(SSerialTxControl, RS485Receive); } } if (RS485Serial.available()) { digitalWrite(Pin13LED, HIGH); byteReceived = RS485Serial.read(); Serial.write(byteReceived); delay(10); digitalWrite(Pin13LED, LOW); } }
slave:
#include <SoftwareSerial.h> #include <WString.h> /*-----( Declare Constants and Pin Numbers )-----*/ #define SSerialRX 10 //Serial Receive pin #define SSerialTX 11 //Serial Transmit pin #define SSerialTxControl 3 //RS485 Direction control #define RS485Transmit HIGH #define RS485Receive LOW #define Pin13LED 13 SoftwareSerial RS485Serial(SSerialRX, SSerialTX); // RX, TX int byteReceived; int byteSend; int *data; int counter = 0; void setup() { Serial.begin(9600); Serial.println("SerialRemote"); pinMode(Pin13LED, OUTPUT); pinMode(SSerialTxControl, OUTPUT); digitalWrite(SSerialTxControl, RS485Receive); RS485Serial.begin(127000); } void loop() { if (RS485Serial.available()) { while(RS485Serial.available() > 0) { byteSend = RS485Serial.read(); data[counter] += byteSend; digitalWrite(Pin13LED, HIGH); delay(10); digitalWrite(Pin13LED, LOW); counter++; } digitalWrite(SSerialTxControl, RS485Transmit); if(data[0] == 48) { RS485Serial.write(48); delay(10); } digitalWrite(SSerialTxControl, RS485Receive); } }
non riesco a capire come mai sulla seriale del master appare continuamente la lettera p quando dovrebbe comparire un 1 quando io scrivo 1 sulla seriale del master :S.
aaa