Moin!
Ich habe eine kleine LED-Matrix (7x7) und möchte nun mit dem Arduino kleine Animationen darauf abspielen.
Jetzt habe ich einen sehr seltsamen Fehler.
Das eigentliche Programm läuft bereits, doch sobald ich eine Serial-Verbindung hinzufüge, leuchten die LEDs nicht mehr.
Nutze die Adafruit Library + WS2801 LEDs.
Hier der Code:
// Do not remove the include below
#include "Arduino.h"
#include "SPI.h"
#include "Adafruit_WS2801.h"
int dataPin = 13;
int clockPin = 11;
int leds_on[][7][7] = {
{{1,1,0,0,0,1,1},
{1,1,0,0,0,1,1},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{0,0,0,0,0,0,0},
{1,1,0,0,0,1,1},
{1,1,0,0,0,1,1}}
};
Adafruit_WS2801 strip = Adafruit_WS2801((uint16_t)7, (uint16_t)7, dataPin, clockPin);
void setup() {
Serial.begin(9600);
strip.begin();
strip.show();
}
void setLeds(int i){
for(int y = 0; y < 7; y++){
for(int x = 0; x < 7; x++){
int row = x-6;
if (row < 0) { row = row * -1; }
if(leds_on[i][x][y] == 1) { strip.setPixelColor(row,y, 255,0,0); }
else { strip.setPixelColor(row, y, 0,0,0); }
}
}
}
void loop() {
//strip.setPixelColor(0,0, 255,255,0);
setLeds(0);
strip.show();
delay(500);
}
Das interessante ist:
Kommentiere ich "Serial.begin(9600);" aus, dann läuft alles so wie es laufen sollte.
Lasse ich es aber im Code, dann läuft das Programm nicht mehr (es leuchten gar keine LEDs).
Was mir dazu noch aufgefallen ist:
Wenn ich:
strip.setPixelColor(0,0, 255,255,0);
und
setLeds(0);
aufrufe, dann geht auch keins von beidem.
Kommentiere ich allerdings setLeds(0) aus, so leuchtet nur eine LED, so wie sie es sollte.
IRGENDWIE scheint Serial.begin() meine setLeds()-Methode außer Kraft zu setzen.
Hat jemand eine Idee, was es seien könnte?
MfG