从 Arduino SD 卡读取字节到 DMX Lighting
Reading bytes from Arduino SD Card to DMX Lighting
有人知道我在从文本文件 (SD) 中提取数据并沿着 DMX 发送时出错的地方吗?该代码适用于 P9813 部分,DMX 一般适用,但不适用于 SD 数据。
我认为我的问题出在第 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();
}
感谢您的帮助,现在一切正常。
有人知道我在从文本文件 (SD) 中提取数据并沿着 DMX 发送时出错的地方吗?该代码适用于 P9813 部分,DMX 一般适用,但不适用于 SD 数据。
我认为我的问题出在第 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();
}
感谢您的帮助,现在一切正常。