Das Flackern hast du mit delay(200) programmiert.
Das hab ich alles schon durch (sieh Tabelle). Die Spaltenansprache klappt, bloß das Flackern in Zeile 3 weist auf irgendeinen elektrischen Kurzschluss hin....
Was kann das sein?
ich nehme übrigens dies Programm, und Fummel zum Abtasten in der Image-Matrix rum
int spaltenPins [8] = {30,48,46,24,42,26,34,36} ; // also S1, S2 etc
int reihenPins [8] = {22,32,38,28,52,40,50,44} ; // also Z1 etc
int image[8][8]= {
{0,0,0,0,0,0,0,0},
{1,1,1,1,1,1,1,1},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
};
void setup()
{
for (int i=0; i<8; i++)
{
pinMode (spaltenPins[i],OUTPUT);
pinMode (reihenPins[i], OUTPUT);
digitalWrite(spaltenPins[i],HIGH);
}
}
void loop()
{
for (int x=0; x<8; x++)
{
for (int y=0; y<8; y++)
{
if (image[x][y]==1)
{
digitalWrite(reihenPins[y],HIGH);
}
else
{
digitalWrite(reihenPins[y],LOW);
}
}
digitalWrite (spaltenPins[x],LOW);
delayMicroseconds(20);
delay (200);
digitalWrite(spaltenPins[x],HIGH);
}
}
Das Flackern hast du mit delay(200) programmiert.
@oel
Hallo,
Versuche es mal mit diesem PDF:Ich finde die Pins auf dem Bord nicht. Sollten es die Zahlen neben der Steckleiste sein, dann ist bei mir mit 53 Schluss, 54 und 55 sind dann wahrscheinlich GND aber 56 und 57 ist nicht zu finden.
das ist nur wenig informativer, als das Pin out, welches ich schon gepostet habe, trotschem, schön dank
- - - Aktualisiert - - -
ich bin langsam der Überzeugung, meine Matrix ist kaputt
wenn ich dies uploade:
int spaltenPins [8] = {30,48,46,24,42,26,34,36} ; // also S1, S2 etc
int reihenPins [8] = {22,32,38,28,52,40,50,44} ; // also Z1 etc
int image[8][8]= {
/* {0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0},*/
{1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1},
{1,1,1,1,1,1,1,1},
};
void setup()
{
for (int i=0; i<8; i++)
{
pinMode (spaltenPins[i],OUTPUT);
pinMode (reihenPins[i], OUTPUT);
digitalWrite(spaltenPins[i],HIGH);
digitalWrite(reihenPins[i],LOW);
}
}
void loop()
{
for (int x=0; x<8; x++)
{
// digitalWrite (spaltenPins[x],HIGH);
digitalWrite (reihenPins[x],LOW);
delay (200);
}
};
leuchtet nur die altbekannte E3 Diode. Die Anschlüsse stimmen jetzt alle, die Belegungen auch.
Dein Programm hier wird nicht funktionieren, da du ja die Zeile, die die Pins HIGH schalten sollte, auskommentiert hast?
Grüssle, Sly
..dem Inschenör ist nix zu schwör..
1. Das 63 deiner 64 Dioden kaputt sind ist SEHR unwahrscheinlich.
2. LED sind Light Emitting Diodes, also Dioden. Sie funktionieren nur in Flussrichtung, d.h. wenn du sie verpolst, sperren sie und leuchten niemals.
Das hast du offensichtlich bei allen Dioden bis auf eine gemacht.
Also ist deine Anschlussbelegung DEFINITIV falsch.
Dein Programm müsste bei richtiger PinBelegung alle LEDs zum leuchten bringen.
3. Dein Programm gibt jetzt immer Strom. Damit überlastest du die LEDs langfristig evtl.
Du könntest auch loop{} schreiben, denn in der Loop änderst du den Zustand der LEDs nicht.
Besser z.B.:
Code:void loop() { for (int x=0; x<8; x++) { digitalWrite (reihenPins[x],LOW); delayMicroseconds(100); digitalWrite (reihenPins[x],HIGH); delayMicroseconds(1000); } }Nein, die LEDs leuchten, wenn spaltenPins HIGH und reihenPins LOW sind.Dein Programm hier wird nicht funktionieren, da du ja die Zeile, die die Pins HIGH schalten sollte, auskommentiert hast?
Jetzt klappt es erstmal symmetrisch. Muß aber mich noch genauer mit der Steuerung befassen...
vielen Dank
Lesezeichen