我有一個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所以如果有人碰到這個,他們知道。謝謝 –