Nothing fancy here, just trying to get started with RS485 and Arduino. So here we go for a basic setup with one master that only emits and one slave that just listens. See the comments for the wiring:
/* RS 485 V1 Master, using a SN75176BP
-------
RO -| |- VCC [connect to 5v]
| |
RE -| |- B--------------> [connect to Slave's B]
| | | 120R (parallel resistor)
connect to 5V DE -| |- A--------------> [connect to Slave's A]
| |
connect to pin 1 (TX) DI -| |- GND [connect to GND]
-------
*/
const int ledPin = 13; // the pin that the LED is attached to
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop() {
byte b = 0;
Serial.write(b);
analogWrite(ledPin, b);
delay(1000);
b=255;
Serial.write(b);
analogWrite(ledPin, b);
delay(1000);
}
And now for the slave:
/* RS 485 V1 SLAVE, using a SN75176BP
-------
connect to pin 0 (RX) RO -| |- VCC [connect to 5v]
| |
connect toGND RE -| |- B--------------> [connect to Master's B]
| | | 120R (parallel resistor)
DE -| |- A--------------> [connect to Master's A]
| |
DI -| |- GND [connect to GND]
-------
YOU'LL HAVE TO DISCONNECT RO DURING UPLOAD TO I/O BOARD!!!!!!!!!
*/
const int ledPin = 13; // the pin that the LED is attached to
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
}
void loop() {
byte brightness;
if (Serial.available()) {// check if data has been sent from the computer:
brightness = Serial.read(); // read the most recent byte (which will be from 0 to 255):
analogWrite(ledPin, brightness); // set the brightness of the LED:
}
}
If all goes according to the plan, you should see something like this:
