currentColor = fxdata.readBytes((char*)leds, NUM_LEDS*3); //attempt to store SD card read data as RGB
実際にあなたがleds
に必要なデータを保存するために、次のように呼び出して、それができたバイト数を返す)(私はあなたのライブラリーを知らないが、私はreadBytesを期待します読む。あなたの助けのすべてが今取り組んでいるとの
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"を通過するだけで、 "2"は2回目などですか?それとも、 "result"に複数のバイトを格納するreadBytesですか? 理由私はDMX.writeが0-255の単一の値を必要とすることを尋ねます。 leds []変数は、3文字のRGB値を保持する必要があります。これらの値は、leds [0] .r、leds [0] .g、leds [0] .bによって個別にアクセスできます。 – joshjingles
DMXには合計512チャネルのデータが必要です。 DMX.writeが2つの数値を取る場合は、おそらくこれらのうちの1つを設定するので、3つのチャンネルを設定する場合は、otを3回呼び出します。 (ペーストビンにdmxとsdカードのヘッダファイルを追加して、私が見て回るようにしてください) –
うん、もうDMX。最初の#はチャネル(1-512)、2番目のPWM(0-255)です。 私はSDカードから引き出されている変数の内容を理解しようとしています。私の前のコードはserial.printlnを持っていて、結果は4桁のバイトを持つテキストファイルにもかかわらず '1'でした。 変数が一度に1バイトしか持たない場合、私はおそらくPWM値です。変数 "results"に複数のバイトが入っている場合、最初のバイトを読み、ch1 DMXに書き込んだり、2バイト目にスキップしたり、DMXに書き込んだりするなどのループが必要ですか? leds [0]はCRGBとして定義されており、ライブラリでは3つのPWM値を保持しています。 – joshjingles