Arduino > DFRobot Arduino I/O Expansion Shield
Le DFRobot Arduino I/O Expansion Shield permet de brancher des capteurs? numériques et analogiques rapidement à l'Arduino. Il permet aussi d'alimenter et de contrôler des servomoteurs.
Arduino_IO_Expansion_V5_SCH.pdf
It uses an SP485CN chip to handle comms. The screw terminals (assuming that the three jumpers are set to '485') marked 'A' and 'B' go directly to the IC 'A' and 'B' pins (6 & 7 respectively). The screw terminal marked VCC goes to the IC VCC pin (8), and also to the board's +5V line (i.e. the Arduino's +5V rail). The screw terminal marked GND goes to the IC GND pin (5), and also to the board's GND line (i.e. the Arduino's 0V rail). The chip's DI (Data Input?) pin (4) is connected to the Arduino's Digital Pin 1 (TX). The chip's RO (Data Output?) pin (1) is connected to the Arduino's Digital Pin 0 (RX), with a resistor pull-up to the +5V rail. The chip's DE (output enable) pin (3) is connected (via a resistor) to the Arduino's Digital Pin 2 - this is active high. This DE pin is also connected to the chip's RE bar (receiver enable) pin (2) and therefore controlled by the Arduino's Digital pin 2 too - this is active low. Arduino Digital Pin 2 = Rx/Tx 'Enable'; High to Transmit, Low to Receive. So, to transmit data from Arduino Digital Pin 1 you need to take Digital pin 2 high, and to receive data to Arduino Digital Pin 0 you need to take Arduino Digital pin 2 low.
Les broches Digital IO Port D0-D13 peuvent être alimentées par le 5V de la carte Arduino ou par une alimentation externe:
Transmit code:
int EN = 2; //RS485 has a enable/disable pin to transmit or receive data. // Arduino Digital Pin 2 = Rx/Tx 'Enable'; High to Transmit, Low to Receive void setup() { pinMode(EN, OUTPUT); Serial.begin(19200); } void loop() { // send data digitalWrite(EN, HIGH);//Enable data transmit Serial.print('A'); delay(1000); }
Receive code:
int ledPin = 13; int EN = 2; int val; void setup() { pinMode(ledPin, OUTPUT); pinMode(EN, OUTPUT); Serial.begin(19200); } void loop() { // receive data digitalWrite(EN, LOW);//Enable Receiving Data val = Serial.read(); if (-1 != val) { if ('A' == val) { digitalWrite(ledPin, HIGH); delay(500); digitalWrite(ledPin, LOW); delay(500); } } }