LEDs blinken beim einschalten des Arduino an hc595

Hallo
Wenn ich meinen Arduino einschalte, blinken alle LEDs auf, die an meinem Schieberegister angeschlossen sind. Wie kann das sein?
Danke im vorraus.
PBahner

Hi,

das ist (leider) normal!
Die Ausgänge des '595 führen beim Einschalten undefinierte, also zufällige Pegel!

Quelle: AVR-Tutorial: Schieberegister – Mikrocontroller.net

Gruß André

Probier mal folgendes:

/OE auf einen Pin legen und diesen auf HIGH

const byte oePin = 3; // Nur als Beispiel

void setup() {
  digitalWrite(oePin,HIGH);  // Ausgänge sperren
  pinMode(oePin,OUTPUT);

... Deine anderen Setup Sachen
  Initialisieren der Ausgabe auf den HC595 -> also alles auf 0
  digitalWrite(oePin,LOW); // Ausgänge frei geben

}

Gruß Tommy

Hi

Vll. hilfts auch, wenn man die Gegebenheiten dem helfendem Volk zur Verfügung stellt ... also komplette Hardware + Sketch hier hin??

Mit 'Geht nicht' ist so ziemlich ALLES abgedeckt, was nicht funktioniert ... bis zu Diesel in einem Benzin-KFZ ... und Alles mit Arduino - Respekt!

MfG

Hallo
Danke Tommy. das werde ich demnächst ausprobieren.

Hier noch mein Sketch:

int taktPin = 8;
int speicherPin = 9;
int datenPin = 10;
int datenPin2 = 4;
int SH_LD = 3;
int taktPin2 = 2;
byte wert = 0;

void setup() {
  pinMode(taktPin, OUTPUT);
  pinMode(speicherPin, OUTPUT);
  pinMode(datenPin, OUTPUT);
  pinMode(datenPin2, INPUT);
  pinMode(SH_LD, OUTPUT);
  pinMode(taktPin2, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  digitalWrite(taktPin2, HIGH);
  delay(5);
  digitalWrite(SH_LD, LOW);
  delay(5);
  digitalWrite(SH_LD, HIGH);
  wert = shiftIn(datenPin2, taktPin2, LSBFIRST);
  wert =~wert;
  
  digitalWrite(speicherPin, LOW);
  shiftOut(datenPin, taktPin, MSBFIRST, wert);
  digitalWrite(speicherPin, HIGH);
  delay(500);
  Serial.println(wert, BIN);
}

kein besonderer Sketch, aber zum Probieren reicht es.

SpaghettiCode:
Quelle: AVR-Tutorial: Schieberegister – Mikrocontro

Da steht man soll einen Widerstand einbauen. Wie soll der verschaltet werden?

Hi,

da steht Pull-Up, also per Widerstand auf High halten, danach dauerhaft auf Low (per Arduino-Pin), oder
Plan B, über ein R-C-Glied nach bestimmter Zeit …

Gruß André