从 Arduino SD 卡读取字节到 DMX Lighting

Reading bytes from Arduino SD Card to DMX Lighting

有人知道我在从文本文件 (SD) 中提取数据并沿着 DMX 发送时出错的地方吗?该代码适用于 P9813 部分,DMX 一般适用,但不适用于 SD 数据。

Pastebin Code Here

我认为我的问题出在第 68 行。我认为这读取了太多值。 IE currentColor 正在存储 5 个值(5 个灯)与 1 个十六进制或 3xR/G/B.

SD 中供考虑的值是...“727a 6276 3030 ...”。我相信这些字节应该是每个 DMX 通道的 PWM 值,不是吗?

谢谢

currentColor = fxdata.readBytes((char*)leds, NUM_LEDS*3); //attempt to store SD card read data as RGB

我不知道你的图书馆,但我希望像这样的 readBytes() 调用能够将你想要的数据实际存储到 leds 中,并返回它能够读取的字节数。

result = fxdata.readBytes((char*)leds, NUM_LEDS*3); //attempt to store SD card read data as RGB
if (result != (NUM_LEDS*3))
{
  /* Handle the error here.. an action can be fill inn default values in leds[] if SD card is not working
}
/* from this point, use leds[], not currentColor */

修改示例(未经编译测试,缺少使用环境,CRGB数据类型未知):

void sendDMX(int theStrip, CRGB *theColor) {
  for(int z=0; z<3; z++) {
    DmxSimple.write((theStrip + z), theColor[z]); //DMX Channel, PWM Value
  }
}

void loop()
{
  fxdata = SD.open("TCL_DMX.dat");  // read only
  if (fxdata)
    {
      Serial.println("file open ok");      
    }

  while (fxdata.available())
  {
    fxdata.readBytes(leds, sizeof (leds)); //attempt to store SD card read data as RGB

    Serial.println(fxdata);

    sendDMX(1, leds); //RGB Strip #, RGB bytes from SD .dat file
    FastLED.show();
    delay(500);
  }  

  // close the file in order to prevent hanging IO or similar throughout time
  fxdata.close();
}

感谢您的帮助,现在一切正常。

结果如下: http://pastebin.com/wHAT6dZB