极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9394|回复: 6

arduino2560串口发送数据出错

[复制链接]
发表于 2014-4-8 10:54:38 | 显示全部楼层 |阅读模式
我要让arduino2560串口发一个八位的数据,第1、2、8位的数据都为定值。主函数里设置的(‘M‘,10000)是设置的命令模式和值。
第3位设置命令模式,将数值转化成第4、5、6、7位。
下载到板子上,Arduino IDE串口中可以接收到“U Eyeb” 等乱码的字符。

电机的驱动板可以收到Arduino发送过去的数据,但是不能执行先关命令。
这个程序可以正确的由串口输出吗?问题出在哪了?

short speed1;
unsigned char cmd[8] = {0x19,0x88,0x00,0x00,0x00,0x00,0x00,0x11};

void setup()
{

  // set uart baudrate to 115200
  Serial.begin(115200);
  delay(500);
  // neurons motor module use 'auto baudrate' method to initialize its uart  
  Serial.print(0x55);
  // optional delay
  delay(500);
  Serial.setTimeout(10);
   
}

// neurons motor module command
// always has 8 bytes
// cmd[0] first, and always is 0x19
// cmd[1] is always 0x88
// cmd[2] is command code
// cmd[3..6] is command data, MSB fisrt send
// cmd[7] should be 0x11
// command code(cmd[2])
//  'M' ---- set motor 1 speed to command data(cmd[3..6])
//  'm' ---- set motor 2 speed to command data(cmd[3..6])
//  'P' ---- set motor 1 P gain to command data(cmd[3..6]), PID parameter
//  'p' ---- set motor 2 P gain to command data(cmd[3..6]), PID parameter
//  'I' ---- set motor 1 I gain to command data(cmd[3..6]), PID parameter
//  'i' ---- set motor 2 I gain to command data(cmd[3..6]), PID parameter
//  'N' ---- set motor 1 intergral limit to command data(cmd[3..6]), PID parameter
//  'n' ---- set motor 2 intergral limit to command data(cmd[3..6]), PID parameter
//  'D' ---- set motor 1 D gain to command data(cmd[3..6]), PID parameter
//  'd' ---- set motor 2 d gain to command data(cmd[3..6]), PID parameter

//  'A' ---- set motor 1 speed increase to command data(cmd[3..6]), in /second, MUST be positive value, trapezoid parameter
//  'a' ---- set motor 2 speed increase to command data(cmd[3..6]), in /second, MUST be positive value, trapezoid parameter
//  'B' ---- set motor 1 max speed to command data(cmd[3..6]), MUST be positive value, trapezoid parameter
//  'b' ---- set motor 2 max speed to command data(cmd[3..6]), MUST be positive value, trapezoid parameter
//  'C' ---- set motor 1 speed decrease to command data(cmd[3..6]), in /second, MUST be positive value, trapezoid parameter
//  'c' ---- set motor 2 speed decrease to command data(cmd[3..6]), in /second, MUST be positive value, trapezoid parameter
//  'E' ---- set motor 1 distance to command data(cmd[3..6])
//  'e' ---- set motor 2 distance to command data(cmd[3..6])

            
void SetCmd(unsigned char cmdSend, long motorSpeed)
{
  // command
  cmd[0]=0x19;
  cmd[1]=0x88;
  cmd[2] = cmdSend;
  // data
  // send MSB first
  cmd[3] = (unsigned char)(motorSpeed >> 24);
  cmd[4] = (unsigned char)(motorSpeed >> 16);
  cmd[5] = (unsigned char)(motorSpeed >> 8);
  cmd[6] = (unsigned char)(motorSpeed);
  cmd[7]=0x11;
  // send command
  Serial.write(cmd,8);
  
  return;
}


void loop()
{
   // set
     SetCmd('M',1000);
     delay(2000);
     SetCmd('M',-1000);
     delay(2000);
}

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2014-4-8 13:13:08 | 显示全部楼层
波特率   没见过这么大的……
回复 支持 反对

使用道具 举报

发表于 2014-4-8 13:26:34 | 显示全部楼层
为何不试试9600 频率下通信?
回复 支持 反对

使用道具 举报

发表于 2014-4-8 16:21:29 | 显示全部楼层
高速連接不是所有設備都可以穩定進行的.
先用 9600 測試好, 再慢慢上調吧.
回复 支持 反对

使用道具 举报

发表于 2014-4-9 18:33:11 | 显示全部楼层
输出格式再看看
回复 支持 反对

使用道具 举报

发表于 2014-4-10 14:33:02 | 显示全部楼层
码率不匹配吧
你在电脑上设置的码率和下位机的码率要匹配~~~~
不能一个9600一个高速率

还有就是楼上总结的很对 高码率对于线材要求相对更高,一般的线材难以负荷;
码率也不是越高越好,一般是能满足传输需要的最低码率为好。一味的求高码率 对于单片机也有压力的~
回复 支持 反对

使用道具 举报

发表于 2014-4-10 14:51:55 | 显示全部楼层
再看到這個帖, 又發現一個問題, 這裡很多朋友也不了解 Serial.print 及 Serial.write 的分別.

樓主的程式中:

  1.   // command
  2.   cmd[0]=0x19;
  3.   cmd[1]=0x88;
  4.   cmd[2] = cmdSend;
  5.   // data
  6.   // send MSB first
  7.   cmd[3] = (unsigned char)(motorSpeed >> 24);
  8.   cmd[4] = (unsigned char)(motorSpeed >> 16);
  9.   cmd[5] = (unsigned char)(motorSpeed >> 8);
  10.   cmd[6] = (unsigned char)(motorSpeed);
  11.   cmd[7]=0x11;
  12.   // send command
  13.   Serial.write(cmd,8);
复制代码


你期望在 Serial Monitor 中會看到什麼?  
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-4-19 13:23 , Processed in 0.045615 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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