极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13439|回复: 4

arduino Mega2560

[复制链接]
发表于 2018-3-31 11:27:57 | 显示全部楼层 |阅读模式
使用两块2560主板进行串口通讯,主机发送指令,从机能够接收到,可是主机读取不了从机串口的讯息是怎么回事?我改用两块uno板,同样的程序可以实现,2560不管怎么弄,都不行
回复

使用道具 举报

发表于 2018-3-31 18:26:35 | 显示全部楼层
感觉还是你代码写的问题
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-1 16:59:42 | 显示全部楼层
弘毅 发表于 2018-3-31 18:26
感觉还是你代码写的问题

谢谢,我偶然查到了,原来2560,只有10,11,12,13等等串口才能使用软串口?大概是这个意思吧?那篇讲解是英文,只看懂了大概
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-2 10:13:34 | 显示全部楼层
弘毅 发表于 2018-3-31 18:26
感觉还是你代码写的问题

想继续问一下,我想用uno板当主机,2560当从机,主机接收从机串口打印的数字,UNO板接受后输出的怎么是一个一个的数字,就像这样
1
2
3
4



主机程序:
#include <SoftwareSerial.h>
SoftwareSerial mySerial(2,3);
String n="";
//int n;
int a,b;
void setup() {
  Serial.begin(9600);
  mySerial.begin(9600);
}

void loop() {
  if(mySerial.available()){
    n+=char(mySerial.read());
    delay(2);
    a=1;
  }
  if(a==1){
    Serial.println(n);
    delay(1000);
    n="";
  }   
  }
从机:
int i;
void setup() {
  Serial.begin(9600)
}

void loop() {
  i=1234;
  Serial.println(i);
  delay(1000);
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-4-2 11:07:41 | 显示全部楼层
谢谢,不用回复了,已解决
将主机程序中的 if(mySerial.available())改为while(mySerial.available()),我一直以为if和while用法应该差不多,看来我还得详细看看它们的区别
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-3 08:54 , Processed in 0.040978 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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