summaryrefslogtreecommitdiff
path: root/rs485slave/src
diff options
context:
space:
mode:
Diffstat (limited to 'rs485slave/src')
-rw-r--r--rs485slave/src/sketch.ino95
1 files changed, 29 insertions, 66 deletions
diff --git a/rs485slave/src/sketch.ino b/rs485slave/src/sketch.ino
index 4b5b15e..3a4717d 100644
--- a/rs485slave/src/sketch.ino
+++ b/rs485slave/src/sketch.ino
@@ -1,57 +1,38 @@
-/* YourDuino SoftwareSerialExample1Remote
- - Used with YD_SoftwareSerialExampleRS485_1 on another Arduino
- - Remote: Receive data, loop it back...
- - Connect this unit Pins 10, 11, Gnd
- - To other unit Pins 11,10, Gnd (Cross over)
- - Pin 3 used for RS485 direction control
- - Pin 13 LED blinks when data is received
-
- Questions: terry@yourduino.com
-*/
-
-/*-----( Import needed libraries )-----*/
#include <SoftwareSerial.h>
-/*-----( Declare Constants and Pin Numbers )-----*/
-#define SSerialRX 2 //RO Serial Receive pin
-#define SSerialTX 13 //DI Serial Transmit pin
+#define SSerialRX 13 // RO
+#define SSerialTX 10 // DI
+#define SSerialTxControl 11 // DE + RE jumpered 12
+
+#define RelayStartPin 2
+#define RelayEndPin 9
-#define SSerialTxControl 3 //DE RE RS485 Direction control
#define RS485Transmit HIGH
#define RS485Receive LOW
+#define RS485Baud 115200
-#define Pin13LED 13
+#define SerialDebug 0
-/*-----( Declare objects )-----*/
-SoftwareSerial RS485Serial(SSerialRX, SSerialTX); // RX, TX
+SoftwareSerial RS485Serial(SSerialRX, SSerialTX);
-/*-----( Declare Variables )-----*/
int byteReceived;
int byteSend;
-void setup() /****** SETUP: RUNS ONCE ******/
+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);
-
- pinMode(4, OUTPUT);
- pinMode(5, OUTPUT);
- pinMode(6, OUTPUT);
- pinMode(7, OUTPUT);
- pinMode(8, OUTPUT);
- pinMode(9, OUTPUT);
- pinMode(10, OUTPUT);
- pinMode(11, OUTPUT);
- pinMode(12, OUTPUT);
+ if (SerialDebug) {
+ Serial.begin(9600);
+ Serial.println("SerialRemote");
+ }
- digitalWrite(SSerialTxControl, RS485Receive); // Init Transceiver
+ for (int i=RelayStartPin; i<=RelayEndPin; i++) {
+ pinMode(i, OUTPUT);
+ }
+ pinMode(SSerialTxControl, OUTPUT);
+
+ digitalWrite(SSerialTxControl, RS485Receive);
- // Start the software serial port, to another device
- RS485Serial.begin(4800); // set the data rate
-}//--(end setup )---
+ RS485Serial.begin(RS485Baud);
+}
void togglePin(int pin) {
if (digitalRead(pin) == HIGH) {
@@ -60,31 +41,13 @@ void togglePin(int pin) {
digitalWrite(pin, HIGH);
}
}
-void loop() /****** LOOP: RUNS CONSTANTLY ******/
+
+void loop()
{
- //Copy input data to output
if (RS485Serial.available())
{
- byteSend = RS485Serial.read(); // Read the byte
-
- digitalWrite(Pin13LED, HIGH); // Show activity
- delay(10);
- digitalWrite(Pin13LED, LOW);
-
- togglePin(byteSend - 97 - 8 + 4 );
-
- Serial.println(byteSend);
- //digitalWrite(SSerialTxControl, RS485Transmit); // Enable RS485 Transmit
- //RS485Serial.write(byteSend); // Send the byte back
- //delay(10);
- //digitalWrite(SSerialTxControl, RS485Receive); // Disable RS485 Transmit
-// delay(100);
- }// End If RS485SerialAvailable
-
-}//--(end main loop )---
-
-/*-----( Declare User-written Functions )-----*/
-//NONE
-
-//*********( THE END )***********
-
+ byteSend = RS485Serial.read();
+ togglePin(byteSend - 97 - 8 + 4);
+ Serial.println(byteSend);
+ }
+}