从Arduino SD卡读取字节到DMX Lighting

时间:2016-04-27 17:31:51

标签: arduino dmx512

在我从错误提取文本文件(SD)中的数据并沿DMX发送错误的地方?该代码适用于P9813部分,DMX通常工作,但不适用于SD数据。

Pastebin Code Here

我相信我的问题是在第68行。我认为这是在阅读太多的价值观。 IE currentColor存储5个值(5个灯)与1个Hex或3xR / G / B.

SD中考虑的值是......" 727a 6276 3030 ..."。我相信这些字节应该是每个DMX通道的PWM值,没有?

由于

2 个答案:

答案 0 :(得分:0)

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();
}

答案 1 :(得分:0)

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

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