Hallo Zusammen,
bei meinem Programm habe ich wie bei so vielen den Seriellen Monitor verwendet um das Programm zu Debuggen und einfach zu sehen was das Programm macht.
Bei diesem Programm habe ich allerdings das Problem das der Serielle Monitor die Ausgabe mitten drin unterbricht und mit einer ander Ausgabe weiter macht.
Es kommen auch zwischen durch wirres Zeug dabei raus.
Die Baudrate habe ich auf 9600 im Programm wie auch im Seriellen Monitor eingestellt. Das sollte also denke ich nicht das Problem sein.
Die Arduino IDE die ich nutze ist die 1.8.13 auf Winsows 10.
Mit der 1.8.5 hatte ich das selbe Problem.
Beispiel Serieller Monitor:
Hier auch der Programm Code:
#include <FastLED.h>
#include <EEPROM.h>
////////////////////////Allgemeine Werte////////////////////////
boolean DebugMode = true;
////////////////////////Werte für die LED's////////////////////////
//Pins an denen die LED Streifen angeschlossen sind
#define Pin_Strip_1 6
#define Pin_Strip_2 7
#define Pin_Strip_3 8
#define Pin_Strip_4 9
// Variablen für die Länge der LED Streifen
uint8_t Strip_1 = 130;
uint8_t Strip_2 = 130;
uint8_t Strip_3 = 130;
uint8_t Strip_4 = 130;
void setup() {
Serial.begin(9600);
Serial.println("Starte das Programm");
EEPromSetup();
EEPromLoad();
LEDSetup();
}
void loop() {
//Serielle Schnittstelle überprüfen
chkSer();
delay(1000);
}
////////////////////////////////////////////LED Funktionen////////////////////////////////////////////
void LEDSetup(){
CRGB leds[Strip_1 + Strip_2 + Strip_3 + Strip_4];
FastLED.addLeds<NEOPIXEL, Pin_Strip_1>(leds, 0, Strip_1);
FastLED.addLeds<NEOPIXEL, Pin_Strip_2>(leds, Strip_1, Strip_2);
FastLED.addLeds<NEOPIXEL, Pin_Strip_3>(leds, Strip_1 + Strip_2, Strip_3);
FastLED.addLeds<NEOPIXEL, Pin_Strip_4>(leds, Strip_1 + Strip_2 + Strip_3, Strip_4);
}
////////////////////////EEProm Werte////////////////////////
//Standart länge der LED Strip_1 bis Strip_4
#define E_Strip_1 132
#define E_Strip_2 130
#define E_Strip_3 119
#define E_Strip_4 118
//DebugMode ist Standart mäßig aktiviert
#define E_DebugMode true
////////////////////////////////////////////EEProm Funktionen////////////////////////////////////////////
#define KontrollByte 0xBB
void EEPromSetup(){
//Überprüfen, ob unsere Daten bereits gespeichert sind anhand des Kontrollbytes
//Falls nicht werden die Standartwerte gespeichert
if(EEPROM.read(0) != KontrollByte){
//Serielle Ausgabe im DebugMode
if(DebugMode == true){
Serial.println("Falsches Kontrollbyte -> Reset des EEProms wird durchgefuehrt");
}
EEPromFactoryReset();
}
}
void EEPromFactoryReset(){
EEPROM.write(0, KontrollByte); //Konrtoll Byte
EEPROM.write(1, E_Strip_1); //Anzahl an LEDs an Strip_1 bis Strip_4
EEPROM.write(2, E_Strip_2);
EEPROM.write(3, E_Strip_3);
EEPROM.write(4, E_Strip_4);
EEPROM.write(5, E_DebugMode); //DebugMode aktiviert die Serielle Ausgabe
}
void EEPromLoad(){
//Serielle Ausgabe im DebugMode
if(DebugMode == true){
Serial.println("Lade die im EEProm gespeicherten Werte in das Programm.");
}
Strip_1 = EEPROM.read(1);
Strip_2 = EEPROM.read(2);
Strip_3 = EEPROM.read(3);
Strip_4 = EEPROM.read(4);
DebugMode = EEPROM.read(5);
}
////////////////////////////////////////////Serielle Eingabe////////////////////////////////////////////
void chkSer() {
String Buffer;
Serial.println("chkSer");
if(!Serial.available()) return;
Buffer = Serial.readStringUntil(' ');
if(DebugMode == true){
Serial.println("Buffer:\t" + String(Buffer));
Serial.println(Buffer);
}
if(Buffer == "Strip_1"){
Strip_1 = Serial.readString().toInt();
//Serielle Ausgabe im DebugMode
if(DebugMode == true){
Serial.println("Strip_1 wurde auf " + String(Strip_1) + " LEDs aktualisiert");
Serial.println("Strip_1 aktualisiert");
}
//Führt den LED Setup noch einmal durch um die LED anzahl auf den Streifen zu aktualisieren
LEDSetup();
}
else if(Buffer == "Strip_2"){
Strip_2 = Serial.readString().toInt();
//Serielle Ausgabe im DebugMode
if(DebugMode == true){
Serial.println("Strip_2 wurde auf" + String(Strip_2) + "LEDs aktualisiert");
}
//Führt den LED Setup noch einmal durch um die LED anzahl auf den Streifen zu aktualisieren
LEDSetup();
}
else if(Buffer == "Strip_3"){
Strip_3 = Serial.readString().toInt();
//Serielle Ausgabe im DebugMode
if(DebugMode == true){
Serial.println("Strip_3 wurde auf" + String(Strip_3) + "LEDs aktualisiert");
}
//Führt den LED Setup noch einmal durch um die LED anzahl auf den Streifen zu aktualisieren
LEDSetup();
}
else if(Buffer == "Strip_4"){
Strip_4 = Serial.readString().toInt();
//Serielle Ausgabe im DebugMode
if(DebugMode == true){
Serial.println("Strip_4 wurde auf" + String(Strip_4) + "LEDs aktualisiert");
}
//Führt den LED Setup noch einmal durch um die LED anzahl auf den Streifen zu aktualisieren
LEDSetup();
}
}
