1162298955 发表于 2012-10-18 17:30:32

新手求救...arduino 的RX/TX串口收发端口只能有一对吗?

本帖最后由 1162298955 于 2012-10-18 22:52 编辑

我现在有两块arduino 一台手机, 手机跟arduino1蓝牙模块通讯,arduino1跟arduino2 无线模块通讯,
arduino1只有一对RX/TX,不能同时插蓝牙模块跟无线模块。怎么解决?

求高手帮忙!!

zhangdeyue1 发表于 2012-10-18 20:13:42

24L01,通过SPI口发送指令

1162298955 发表于 2012-10-18 20:59:15

http://www.geek-workshop.com/thread-1228-1-4.html 

gaoshine 发表于 2012-10-18 21:42:09

本帖最后由 gaoshine 于 2012-10-18 21:50 编辑

任何两个端口都可以实现 RX TX功能
我记着ardiuno的库里就有 SoftwareSerial 我喜欢使用NewSoftSerial库

例子如下:


#include <NewSoftSerial.h>

NewSoftSerial mySerial(2, 3);

void setup()
{
Serial.begin(57600);
Serial.println("Goodnight moon!");

// set the data rate for the NewSoftSerial port
mySerial.begin(4800);
mySerial.println("Hello, world?");
}

void loop()                     // run over and over again
{

if (mySerial.available()) {
      Serial.print((char)mySerial.read());
}
if (Serial.available()) {
      mySerial.print((char)Serial.read());
}
}



还有一个发短信的例子也是使用扩展的串口和短信猫连接
/*
TC35i的测试程序
向我的手机发送一条短信的代码
邯郸金世达科技开发小组
2011-3-13 Gaoshine
2011-11-9 TEST PASS
*/

#include <NewSoftSerial.h>                        //使用扩展串口

NewSoftSerial mySerial(8, 9);                     //Pin_RX=2,Pin_TX=3 MCU和GSM交叉
char s1[]="AT+CMGF=0\r\n";                        //设定Text模式
char s2[]="AT+CMGS=39\r\n";               //发送到手机18603183102 注意一定要加上 ( ;\r\n ) ;和换行、回车。
char s3[]="0891683108301105F011000D91688106833001F20008FF18673A623F62A58B66FF018BF767E5770B901A9053FF1A0033";    //短信内容
char s4=0x1a;                                       //Ctrl+W
char s5[]="\r\n";                                 //换行、回车
#define ir_dpin      6               //红外人体热释传感器

void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
pinMode( ir_dpin,INPUT);


}

void loop()
{
// if (mySerial.available()) {                      //把mySerial串口收到的内容发到USB口   
//    Serial.print((char)mySerial.read());
//}
    Serial.println (digitalRead(ir_dpin));
    if       (digitalRead(ir_dpin)==HIGH){
    Serial.println ("Send SMS");
      sendsms();
    }

}

void sendsms()
{
mySerial.print (s1);
Serial.print (s1);
delay(2000);
mySerial.print (s2);
Serial.print (s2);
delay(3000);
mySerial.print (s3);
Serial.print (s3);
delay(500);
mySerial.print (s4);
//delay(3000);
//mySerial.print (s5);
Serial.print (s4);
delay(10000);

}


要么换成arduino 2560也行 就不用软串口了

swim 发表于 2012-10-18 21:46:42

用2560呗有3组串口

1162298955 发表于 2012-10-18 22:50:49

灰常感谢各位! 非常感谢gaoshine问题已解决!!:D 原来可以用NewSoftSerial扩展,学习了!!

yibamao 发表于 2013-1-30 11:15:26

新的1.01中只找到SoftwareSerial库,没看到 NewSoftSerial库

zcbzjx 发表于 2013-1-30 20:42:00

还是用microduino-core+吧 有2个硬串口

nemon 发表于 2015-10-20 17:10:32

吐槽——
https://www.arduino.cc/en/Reference/SoftwareSerial
http://arduiniana.org/libraries/newsoftserial/
页: [1]
查看完整版本: 新手求救...arduino 的RX/TX串口收发端口只能有一对吗?