## **多串口[Mega]**
> 有时候,一个串口远不能满足你!当你尝试和多个串口设备通信,并且还想将数据发送到串口监视器,多几个RX/TX串口就是你迫切需要的了。本例向你展示Arduino Mega和Genuino Mega上3个附加串口的使用。以及如何将其他串口的数据转发到TX串口,以此在串口监视器上看到。
### **所需硬件设备**
Arduino Mega板 Genuino Mega板
串口设备(Xbee板,蓝牙模块或者RFID阅读器或者另一个Arduino都可以)
连接线
### **电路**
![图片来自官网](http://img.blog.csdn.net/20160513090547562)
准备好表格上你需要的串口设备后,请确保板子被正常供电并且线路连接正确。串口设备上的**RX**口应该连接到MEGA板上的**TX1**口,串口设备上的**TX**口应该连接到MEGA板上的**RX1**口。如果不清楚,请看原理图。
你还要确保MEGA板正常通过USB连接到电脑。
### **原理图**
![图片来自官网](http://img.blog.csdn.net/20160513090607531)
### **代码**
下列代码假定你已经将串口设备连接到板子上的TX1和RX1。
~~~
/*
多串口[Mega]
从主串口获取数据并且转发到其他串口。
从串口1获取数据并且转发到主串口(串口0)。
代码只能在串口>=2的设备上使用。比如Arduino Mega、Due、 Zero等。
电路搭建:
* 串口设备连接到串口1
* 串口监视器在串口0打开
代码是公开的。
*/
void setup() {
// 初始化串口:
Serial.begin(9600);
Serial1.begin(9600);
}
void loop() {
// 从串口1转发到串口0:
if (Serial1.available()) {
int inByte = Serial1.read();
Serial.write(inByte);
}
// 从串口0转发到串口1:
if (Serial.available()) {
int inByte = Serial.read();
Serial1.write(inByte);
}
}
~~~
### **相关资料**
[serial.begin()](https://www.arduino.cc/en/Serial/Begin)
[serial.read()](https://www.arduino.cc/en/Serial/Read)
[serial.available()](https://www.arduino.cc/en/Serial/Available)
[if()](https://www.arduino.cc/en/Tutorial/IfStatement)
- 说明
- 系统示例文件目录结构及说明
- 01.Basics
- AnalogReadSerial
- BareMinimum
- Blink
- DigitalReadSerial
- Fade
- ReadAnalogVoltage
- 02.Digital
- BlinkWithoutDelay
- Button
- Debounce
- DigitalInputPullup
- StateChangeDetection
- toneKeyboard
- toneMelody
- toneMultiple
- tonePitchFollower
- 03.Analog
- AnalogInOutSerial
- AnalogInput
- AnalogWriteMega
- Calibration
- Fading
- Smoothing
- 04.Communication
- ASCIITable
- Dimmer
- Graph
- Midi
- MultiSerial
- PhysicalPixel
- ReadASCIIString
- SerialCallResponse
- SerialCallResponseASCII
- SerialEvent
- SerialPassthrough
- VirtualColorMixer
- 05.Control
- Arrays
- ForLoopIteration
- IfStatementConditional
- switchCase
- switchCase2
- WhileStatementConditional
- 06.Sensors
- ADXL3xx
- Knock
- Memsic2125
- Ping
- 07.Display
- barGraph
- RowColumnScanning
- 08.Strings
- CharacterAnalysis
- StringAdditionOperator
- StringAppendOperator
- StringCaseChanges
- StringCharacters
- StringComparisonOperators
- StringConstructors
- StringIndexOf
- StringLength
- StringLengthTrim
- StringReplace
- StringStartsWithEndsWith
- StringSubstring
- StringToInt
- 09.USB
- Keyboard
- KeyboardLogout
- KeyboardMessage
- KeyboardReprogram
- KeyboardSerial
- KeyboardAndMouseControl
- Mouse
- ButtonMouseControl
- JoystickMouseControl
- 10.StarterKit_BasicKit (与特定硬件相关,暂无)
- p02_SpaceshipInterface
- p03_LoveOMeter
- p04_ColorMixingLamp
- p05_ServoMoodIndicator
- p06_LightTheremin
- p07_Keyboard
- p08_DigitalHourglass
- p09_MotorizedPinwheel
- p10_Zoetrope
- p11_CrystalBall
- p12_KnockLock
- p13_TouchSensorLamp
- p14_TweakTheArduinoLogo
- p15_HackingButtons
- 11.ArduinoISP(暂无)
- ArduinoISP