|
|
发表于 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也行 就不用软串口了
|
|