极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 54706|回复: 13

请问一下 两块arduino通过TX RX通信代码要怎么写

[复制链接]
发表于 2012-8-13 10:15:32 | 显示全部楼层 |阅读模式
我一块发送的TX连一块接收的RX     Serial.println("x=10");  发送不成功
回复

使用道具 举报

发表于 2012-8-13 10:38:41 | 显示全部楼层
把你的代码弄上来,你初始化串口了么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-13 10:48:12 | 显示全部楼层
void setup ()
{
pinMode(4,INPUT);
pinMode(11,OUTPUT);
Serial.begin(9600);
}
void loop()
{
int n =digitalRead(4);  
if (n==HIGH)  
{
  char flag[]="x=10";
   Serial.print(flag);
   delay(5000);
   digitalWrite(11,HIGH);
   delay(5000);
   digitalWrite(11,LOW);
}
}

接收端我用ARDUINO IDE的串口通信试过 接收到x=10后会动作
回复 支持 反对

使用道具 举报

发表于 2012-8-13 15:06:08 | 显示全部楼层
两个arduino通过TX RX通信,有专门的库,见附件。。。



硬件连接像这样子



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-8-14 08:23:45 | 显示全部楼层
谢谢各位 看了弘毅的东西 说明不能用另一个ARDUINO控制一个装有grbl的ARDUINO了 除非改grbl代码
回复 支持 反对

使用道具 举报

发表于 2014-4-26 15:46:46 | 显示全部楼层
如果两者之间用MAX485通讯怎么做呢?
回复 支持 反对

使用道具 举报

发表于 2014-4-26 19:06:18 | 显示全部楼层
想知道怎么通过TX和RX发送给APC220或者nrfl2401模块通信,APC220可以直接串口,
回复 支持 反对

使用道具 举报

发表于 2014-4-26 21:16:09 | 显示全部楼层
学慧放弃 发表于 2014-4-26 19:06
想知道怎么通过TX和RX发送给APC220或者nrfl2401模块通信,APC220可以直接串口,

不明白说的啥子
回复 支持 反对

使用道具 举报

发表于 2014-4-27 13:05:37 | 显示全部楼层
for 发表于 2014-4-26 21:16
不明白说的啥子

就是通过无线模块发送数据包,懂不??
回复 支持 反对

使用道具 举报

发表于 2014-4-27 14:23:38 | 显示全部楼层
学慧放弃 发表于 2014-4-27 13:05
就是通过无线模块发送数据包,懂不??

原来如此我还没研究到无线这个方面
回复 支持 反对

使用道具 举报

发表于 2014-5-11 01:20:51 | 显示全部楼层
弘毅 发表于 2012-8-13 15:06
两个arduino通过TX RX通信,有专门的库,见附件。。。

0.0为什么无法编译提示未定义
EasyTransfer_2Way_wServo_Example : 20 :错误:' EasyTransfer '没有命名一个类型
EasyTransfer_2Way_wServo_Example.pde :在函数'无效设置( ) ' :
EasyTransfer_2Way_wServo_Example : 46 :错误:' ETIN '在此作用域中声明
EasyTransfer_2Way_wServo_Example : 46 :错误:'细节'在此作用域中尚未声明
EasyTransfer_2Way_wServo_Example : 47 :错误:' ETout '在此作用域中声明
EasyTransfer_2Way_wServo_Example.pde :在函数'无效循环( ) ' :
EasyTransfer_2Way_wServo_Example : 66 :错误:' ETout '在此作用域中声明
EasyTransfer_2Way_wServo_Example : 75 :错误:' ETIN '在此作用域中声明
回复 支持 反对

使用道具 举报

发表于 2014-9-4 00:20:55 | 显示全部楼层
本帖最后由 shenhaiyu 于 2014-9-4 00:31 编辑
dbo 发表于 2012-8-14 08:23
谢谢各位 看了弘毅的东西 说明不能用另一个ARDUINO控制一个装有grbl的ARDUINO了 除非改grbl代码


最近我也遇到同样的问题了,想用一块Arduino接收硬件串口接收到的指令,处理后用软件串口发给另一块装了原版GRBL的Arduino。目前实验成功,方法如下:

首先我们将发送指令的Arduino称为A,装了GRBL的Ardunio称为B,我将A的端口5和6设为了软件串口,所以将A的 pin5 连接到B的 pin 1,再将A的 pin6 连接到B的 pin0,A和B的GND也要相连。然后在A中写入如下代码:


  1. #include <SoftwareSerial.h>     // 软件串口

  2. // 软件串口设置
  3. SoftwareSerial WRSerial(3, 4); // 其他软件串口数据通讯TTL RX, TX
  4. SoftwareSerial GBSerial(5, 6); // GRBL数据通讯TTL RX, TX
  5. String WRComData = "";         // 串口字串缓存
  6. String GBComData = "";         // 串口字串缓存

  7. void setup() {
  8.   // 串口初始化
  9.   Serial.begin(9600);
  10.   GBSerial.begin(9600);
  11.   WRSerial.begin(9600);
  12. }

  13. void loop() {

  14.   // 其他软件串口数据处理
  15.   while(WRSerial.available()) {
  16.     WRComData += char(WRSerial.read()); // 将串口数据全部写入字串
  17.     delay(2);
  18.   }
  19.   if(WRComData.length() == 11) {
  20.    // 任意内容
  21.   }
  22.     WRComData = ""; // 清除缓存


  23.   // GRBL数据处理
  24.   while(Serial.available()) {
  25.     GBComData += char(Serial.read()); // 将串口数据全部写入字串
  26.     delay(2);
  27.   }
  28.   if(GBComData[0] == 'G') {
  29.      GBSerial.listen();
  30.      GBSerial.println(GBComData);
  31.      WRSerial.listen();
  32.   }
  33.     GBComData = ""; // 清除缓存

  34. }

复制代码


这段代码的功能是:如果A接收到从硬件串口(比如电脑)传来的G命令,则将该命令完整的发送给B,同时A还可以随时处理来自 pin3 pin4 串口的其他数据。
回复 支持 反对

使用道具 举报

发表于 2015-7-17 15:46:38 | 显示全部楼层
弘毅 发表于 2012-8-13 15:06
两个arduino通过TX RX通信,有专门的库,见附件。。。

弘毅大哥你好,如果我两个arduino分别接zigbee 应该怎么通信,接线是每一块arduino分别接彼此对应的TX和RX(arduino的和zigbee的反过来);然后 将 zigbee 烧一个协调器,另一个烧终端,然后传输数据。但是不知道代码应该怎么初始化TX和RX端口
回复 支持 反对

使用道具 举报

发表于 2015-12-21 16:06:39 | 显示全部楼层
for 发表于 2014-4-26 15:46
如果两者之间用MAX485通讯怎么做呢?

你好,问下,用max485通讯你实现了吗,可以分享下不?
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-7 04:21 , Processed in 0.045550 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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