极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 34317|回复: 8

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

[复制链接]
发表于 2012-10-18 17:30:32 | 显示全部楼层 |阅读模式
本帖最后由 1162298955 于 2012-10-18 22:52 编辑

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

求高手帮忙!!
回复

使用道具 举报

发表于 2012-10-18 20:13:42 | 显示全部楼层
24L01,通过SPI口发送指令
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-10-18 20:59:15 | 显示全部楼层
回复 支持 反对

使用道具 举报

发表于 2012-10-18 21:42:09 | 显示全部楼层
本帖最后由 gaoshine 于 2012-10-18 21:50 编辑

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

例子如下:

[pre lang="arduino" line="1" file="newserial"]
#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());
  }
}
[/code]


还有一个发短信的例子也是使用扩展的串口和短信猫连接
[pre lang="arduino" line="1" file="tc35i"]/*
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);

}
[/code]

要么换成arduino 2560也行 就不用软串口了
回复 支持 反对

使用道具 举报

发表于 2012-10-18 21:46:42 | 显示全部楼层
用2560呗  有3组串口
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-10-18 22:50:49 | 显示全部楼层
灰常感谢各位! 非常感谢gaoshine  问题已解决!! 原来可以用NewSoftSerial扩展,学习了!!
回复 支持 反对

使用道具 举报

发表于 2013-1-30 11:15:26 | 显示全部楼层
新的1.01中只找到SoftwareSerial库,没看到 NewSoftSerial库
回复 支持 反对

使用道具 举报

发表于 2013-1-30 20:42:00 | 显示全部楼层
还是用microduino-core+吧 有2个硬串口
回复 支持 反对

使用道具 举报

发表于 2015-10-20 17:10:32 | 显示全部楼层
吐槽——
https://www.arduino.cc/en/Reference/SoftwareSerial
http://arduiniana.org/libraries/newsoftserial/
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-8 03:30 , Processed in 0.090082 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表