آردینو دارای پشتیبانی داخلی برای ارتباطات سریال روی پین های 0 و 1 است؛ اما چه می شود که نیازمند پورت سریال می شوید؟ کتابخانه نرم افزار سریال طوری توسعه داده شده است که اجازه می دهد ارتباطات سریال روی دیگر پین های دیجیتال از برد آردینو شما واقع شوند. از نرم افزار برای تکرار عملکرد سخت افزاری خطوط Rx و Tx استفاده کنید.این می تواند بسیار مفید باشد وقتی که نیاز به ارتباط به دو دستگاه سریال فعال مطرح می شود، یا تنها ارتباط با یک دستگاه وقتی که پورت اصلی سریال با هدف اشکال زدایی باز است.
در مثال زیر، پین 2 و 4 دیجیتال بر روی آردینو به عنوان خطوط سریال Rx مجازی استفاده شده است.پین 3 و 5 خطوط مجازی Tx هستند.
آردینو روی پورت مجازی (پورت اول) آماده باش است تا یک کاراکتر “?” دریافت کند. پس از آن ، روی پورت مجازی دوم (پورت دوم) آماده باش است.
سخت افزار مورد نیاز
برد آردینو
مدار
مداری برای این مثال وجود ندارد. از اتصال آردینو خود با کامپیوتر از طریق USB برای فعال سازی ارتباط سریال ،اطمینال حاصل کنید.
کد:
#include <SoftwareSerial.h>
// software serial #1: TX = digital pin 10, RX = digital pin 11
SoftwareSerial portOne(10,11);
// software serial #2: TX = digital pin 8, RX = digital pin 9
// on the Mega, use other pins instead, since 8 and 9 don't work on the Mega
SoftwareSerial portTwo(8,9);
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
// Start each software serial port
portOne.begin(9600);
portTwo.begin(9600);
}
void loop()
{
// By default, the last intialized port is listening.
// when you want to listen on a port, explicitly select it:
portOne.listen();
Serial.println("Data from port one:");
// while there is data coming in, read it
// and send to the hardware serial port:
while (portOne.available() > 0) {
char inByte = portOne.read();
Serial.write(inByte);
}
// blank line to separate data from the two ports:
Serial.println();
// Now listen on the second port
portTwo.listen();
// while there is data coming in, read it
// and send to the hardware serial port:
Serial.println("Data from port two:");
while (portTwo.available() > 0) {
char inByte = portTwo.read();
Serial.write(inByte);
}
// blank line to separate data from the two ports:
Serial.println();
}
لینک سایت:Arduino - TwoPortReceive