在我从错误提取文本文件(SD)中的数据并沿DMX发送错误的地方?该代码适用于P9813部分,DMX通常工作,但不适用于SD数据。
我相信我的问题是在第68行。我认为这是在阅读太多的价值观。 IE currentColor存储5个值(5个灯)与1个Hex或3xR / G / B.
SD中考虑的值是......" 727a 6276 3030 ..."。我相信这些字节应该是每个DMX通道的PWM值,没有?
由于
答案 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)
感谢您的帮助,现在一切正常。