diff options
| -rw-r--r-- | rs485slave/lib/.holder | 0 | ||||
| -rw-r--r-- | rs485slave/src/sketch.ino | 90 |
2 files changed, 90 insertions, 0 deletions
diff --git a/rs485slave/lib/.holder b/rs485slave/lib/.holder new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/rs485slave/lib/.holder 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 )*********** + |
