summaryrefslogtreecommitdiff
path: root/rs485slave/src/sketch.ino
diff options
context:
space:
mode:
Diffstat (limited to 'rs485slave/src/sketch.ino')
-rw-r--r--rs485slave/src/sketch.ino90
1 files changed, 90 insertions, 0 deletions
diff --git a/rs485slave/src/sketch.ino b/rs485slave/src/sketch.ino
new file mode 100644
index 0000000..4b5b15e
--- /dev/null
+++ b/rs485slave/src/sketch.ino
@@ -0,0 +1,90 @@
+/* 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 SSerialTxControl 3 //DE RE RS485 Direction control
+#define RS485Transmit HIGH
+#define RS485Receive LOW
+
+#define Pin13LED 13
+
+/*-----( Declare objects )-----*/
+SoftwareSerial RS485Serial(SSerialRX, SSerialTX); // RX, TX
+
+/*-----( Declare Variables )-----*/
+int byteReceived;
+int byteSend;
+
+void setup() /****** SETUP: RUNS ONCE ******/
+{
+ // 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);
+
+ digitalWrite(SSerialTxControl, RS485Receive); // Init Transceiver
+
+ // Start the software serial port, to another device
+ RS485Serial.begin(4800); // set the data rate
+}//--(end setup )---
+
+void togglePin(int pin) {
+ if (digitalRead(pin) == HIGH) {
+ digitalWrite(pin, LOW);
+ } else {
+ digitalWrite(pin, HIGH);
+ }
+}
+void loop() /****** LOOP: RUNS CONSTANTLY ******/
+{
+ //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 )***********
+