Hallo,
ich habe erfolgreich eine Schaltung aufgebaut, mit 3x 74HC595 und 7 RGB Leds.
Soweit funktioniert das auch, nun wollte ich aber das z.B. die erste LED auf grün schaltet, wobei die 2 LED auf rot schaltet. Ich kenne das immer mit B010101 usw.
Wie mache ich das genau?
Grüße
Leon
Du verbindest den grünen mit dem blauen Draht, dann passt das schon.
kolaha
June 30, 2024, 4:43pm
3
Ein schönes Ratenspiel! Da bin ich dabei. Ich versuche als erstes zu raten wieso nur 7 LEDs, anstatt 8.
Aber wenn ich handfeste Information von dir bekomme, beschleunigt es die Problemlösung imens. Z.B. Bilder, Schematik, Bilder von Schematik, ein Sketch wäre nicht schlecht zu sehen, falls nicht zu privat, Datenschutz und so.
agmue
June 30, 2024, 5:02pm
4
uint32 muster = 0b101010101010101010101; // 21 Bit
Hallo,
8 LEDS hätte ich auch machen können, ist ja egal.
Schematik habe ich erstmal online gemacht, da ich eine Leiterplatine bestellt habe.
Der Sketch dazu ist:
// Pins für die 74HC595-Schieberegister
int dataPin = 11; // DS
int latchPin = 10; // ST_CP
int clockPin = 13; // SH_CP
void setup() {
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop() {
//alle LEDs auf rot setzen
for (int i = 0; i < 8; i++) {
shiftOutRGB(255, 0, 0); // Rot
}
delay(1000);
//alle LEDs auf grün setzen
for (int i = 0; i < 8; i++) {
shiftOutRGB(0, 255, 0); // Grün
}
delay(1000);
//alle LEDs auf blau setzen
for (int i = 0; i < 8; i++) {
shiftOutRGB(0, 0, 255); // Blau
}
delay(1000);
}
//Senden von RGB-Daten an die Schieberegister
void shiftOutRGB(byte red, byte green, byte blue) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, blue);
shiftOut(dataPin, clockPin, MSBFIRST, green);
shiftOut(dataPin, clockPin, MSBFIRST, red);
digitalWrite(latchPin, HIGH);
}```
agmue
June 30, 2024, 6:49pm
6
Probiere mal sowas:
// Pins für die 74HC595-Schieberegister
int dataPin = 11; // DS
int latchPin = 10; // ST_CP
int clockPin = 13; // SH_CP
void setup() {
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop() {
shiftOutRGB(0b101010101010101010101010);
delay(1000);
}
//Senden von RGB-Daten an die Schieberegister
void shiftOutRGB(uint32_t muster)
{
shiftOut(dataPin, clockPin, MSBFIRST, (muster >> 16));
shiftOut(dataPin, clockPin, MSBFIRST, (muster >> 8));
shiftOut(dataPin, clockPin, MSBFIRST, muster);
}
Ich verstehe den Code nicht ganz.
Soll ich bei "muster" B0101... einsetzen?
So wie er dort steht macht der Code nichts.
fony
June 30, 2024, 7:05pm
8
Wie kommst du da drauf?
Hochladen Testen notfalls Meckern
Die LEDS bleiben aus.
Also der Code macht was, aber die LEDS schalten nicht.
fony
June 30, 2024, 7:09pm
10
OK dachte jetzt die Pins stiemen nicht sind aber wie in der Zeichnung.
agmue
June 30, 2024, 7:58pm
11
lyxn-dobb:
Die LEDS bleiben aus.
Ich habe latchPin vergessen.
kolaha
June 30, 2024, 7:58pm
12
laut sketch sollte funzen, dann wahrscheinlich die Schaltung ist falsch.
ich rate aber jetzt wieso du jede Farbe acht mal schiebs, obwohl einmal ist genug
?
// Pins für die 74HC595-Schieberegister
int dataPin = 11; // DS
int latchPin = 10; // ST_CP
int clockPin = 13; // SH_CP
void setup() {
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop() {
shiftOutRGB(0b101010101010101010101010);
delay(1000);
}
//Senden von RGB-Daten an die Schieberegister
void shiftOutRGB(uint32_t muster)
{
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, (muster >> 16));
shiftOut(dataPin, clockPin, MSBFIRST, (muster >> 8));
shiftOut(dataPin, clockPin, MSBFIRST, muster);
digitalWrite(latchPin, HIGH);
}
das funktioniert leider auch nicht.
kolaha
June 30, 2024, 8:04pm
14
könntest du eine 595 aus der Nähe fotografieren, denn an deinem Bild ist schwer was zu erkennen?
Die Schaltung ist falsch?
Könntest du mir vielleicht eine richtige Schaltung zeigen?
kolaha
June 30, 2024, 8:14pm
17
ok, die Schaltung scheint doch in Ordnung
probire das:
// Pins für die 74HC595-Schieberegister
int dataPin = 11; // DS
int latchPin = 10; // ST_CP
int clockPin = 13; // SH_CP
void setup() {
pinMode(dataPin, OUTPUT);
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
}
void loop() {
shiftOutRGB(7, 0, 0); // Rot
delay(1000);
shiftOutRGB(14, 0, 0); // Rot
delay(1000);
shiftOutRGB(0, 3, 0); // Grün
delay(1000);
shiftOutRGB(0, 0, 1); // Blau
delay(1000);
}
//Senden von RGB-Daten an die Schieberegister
void shiftOutRGB(byte red, byte green, byte blue) {
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, MSBFIRST, blue);
shiftOut(dataPin, clockPin, MSBFIRST, green);
shiftOut(dataPin, clockPin, MSBFIRST, red);
digitalWrite(latchPin, HIGH);
}
Schonmal sehr schön das etwas leuchtet.
Nur irgendwie habe ich was falsch verdrahtet bzw. der Sketch ist falsch.
Die erste LED wird als einzige Rot und der rest bleibt dann aus. Danach werden LED 2-4 Blau und die erste bleibt aus. LED 5-7 machen garnichts.
kolaha
June 30, 2024, 8:18pm
19
ich stelle fest dass Chip nicht in der Lage ist 8 LED gleichzeitig mit Strom zu versorgen
Gibt es vielleicht eine andere möglichkeit?
Indem man Transistoren etc einbaut?
oder eine externe Stromquelle?