我对 Arduino 很陌生,所以这可能是一些我不知道的非常简单的 C/C++ 问题
我正在研究一个 RGB LED Cube,它是根据 GreatScott 的视频制作的。它工作正常。我决定通过添加蓝牙来改进可以用它完成的事情。我正在使用来自 DSD 技术的 HM-11。
我可以毫无问题地通过蓝牙将命令从手机写入 arduino,并使用它来交换模式。
我面临的问题是当我尝试通过蓝牙回写手机时。我正在通过蓝牙发回帮助文本,以便连接到它并发送帮助的任何人都可以找到支持的命令列表。使用 SoftwareSerial,我有以下(问题区域的片段):
if(strcmp(command,"help")==0){
Serial.print(F("============== RGBCube Bluetooth Help ==============\n"
"Commands: \n"
" mode:# select mode to operate in \n"
" help pull up help screen (this) \n"
" Mode 4 only: \n"
" reset resets cube to black \n"
" pt:x,y,z=r,g,b sets led at (x,y,z) to rgb \n"
" set:r,g,b;r,g,b... sets entire cube to the \n"
" specified colour \n"
" 64 colours long. Faster \n"
" than 64 pt calls \n"));
BTSerial.print(F("============== RGBCube Bluetooth Help ==============\n"
"Commands: \n"
" mode:# select mode to operate in \n"
" help pull up help screen (this) \n"
" Mode 4 only: \n"
" reset resets cube to black \n"
" pt:x,y,z=r,g,b sets led at (x,y,z) to rgb \n"
" set:r,g,b;r,g,b... sets entire cube to the \n"
" specified colour \n"
" 64 colours long. Faster \n"
" than 64 pt calls \n"));
}
当它运行时,串口接收:
============== RGBCube 蓝牙帮助 =============== 命令:
mode:# 选择在
帮助中操作的模式 拉起帮助屏幕(this)模式仅限 4:
reset 将立方体重置为黑色
pt:x,y,z=r,g,b 将 (x,y,z) 处的 LED 设置为 rgb set:r,g,b;r,g,b... 设置整个立方体到
指定的颜色
64 色长。
比 64 点呼叫更快
但我的手机最多接收:
============== RGBCube 蓝牙帮助 =============== 命令:
mode:# 选择在
帮助中操作的模式 拉起帮助屏幕(this)模式仅限 4:
reset 将立方体重置为黑色
pt:x,y,z=r,g,b 将 (x,y,z) 处的 LED 设置为 rgb set:r,g,b;r,g,b... 设置整个立方体到
如您所见,这是被截断的。我尝试了很多事情,包括将字符串推入 progmem,将其分割成更小的字符串,用于循环的 Char 数组,强制将其保存在闪存中等。将其切割成更小的字符串是可行的,但我真的不想那样做,因为我要添加的下一件事是从手机到 arduino 的类似长度写入。
有时也会出现更少的字符,但这是平均值和最大值,这让我觉得有某种形式的限制,但它不是 2 的倍数(我最后数了一下大约 80ish)
任何帮助将不胜感激。