我有一个arduino正在接收串行输入,并将打开LED。代码如下。在Arduino串行数据上截断的最后一块数据
我有一个奇怪的问题,当我发送多个120x字节,例如240,480时,最后的120个字节永远不会被完全读取。
我在串行监视器120 120 120 81上看到我发送了480字节的数据。有谁能指出这个错误吗?
#include "FastLED.h"
#define DATA_PIN 6
#define NUM_LEDS 40
byte colors[120];
CRGB leds[NUM_LEDS];
void setup(){
FastLED.addLeds<NEOPIXEL, DATA_PIN, RGB>(leds, NUM_LEDS);
Serial.begin(115200);
}
void loop(){
if (Serial.available()){
int i =0;
char incomingByte;
while(1) {
incomingByte = Serial.readBytes((char *)colors,120);
break;
}
Serial.print(incomingByte);
for(i=0;i<NUM_LEDS ;i++){
leds[i].green = colors[i];
leds[i].red = colors[i+1];
leds[i].blue = colors[i+2];
}
if(incomingByte==0x78){
FastLED.show();
}
}
}
我的想法,但它是如何进行工作做好第一个块只会被最后一个块损坏。当你说有时间问题时,你也是对的。当我删除了Fastled.show()时,它读得非常好。我认为问题来自show函数,但我不明白它是如何正确读取3个块,但损坏了第4个。 (如果我发送4) –
我让你的代码工作,并且有一小部分需要修正,如果(colors [colors_index]!= -1)不会工作,因为它是一个字节数组。它必须被赋予int所以如果有人碰到这个,他们知道。谢谢 –