INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Taster schalten LEDs mit Schieberegister
25.03.2018, 20:49 (Dieser Beitrag wurde zuletzt bearbeitet: 25.03.2018 20:53 von Sonne.)
Beitrag #1
Taster schalten LEDs mit Schieberegister
Hallo,
ich möchte einen digitalen Stundenplan bauen. Wenn Taster 1 gedrückt wird, dann sollen die LEDs der Fächer leuchten, die ich am Montag habe, wenn Taster 2 gedrückt wird die für Dienstag usw. (bisher habe ich erst zwei Taster eingebaut).
Insgesamt gibt es 16 Fächer, also 16 LEDs, die ich mittels zweier Schieberegister 4HC595 angschlossen habe. Es ist kein Problem, eine 16-stellige Bitfolge durch die LEDs anzeigen zu lassen.
Probleme habe ich bei der Schaltung durch die Taster. Wenn ich das Programm hochlade und einen der beiden Taster drücke, dann leuchten die entsprechenden LEDs, aber ich kann nicht durch das Drücken des anderen Schalters umschalten. Schön wäre es auch, wenn die LEDs nur so lange an bleiben würde, wie der Taster gedrückt wird.
Hier mein Code:

int shiftPin = 8;
int storePin = 9;
int dataPin = 10;
int Montag=2;
int Dienstag=3;
int musterMo[16] = {1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0};
int musterDi[16] = {0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1};
int statusMo=0;
int statusDi=0;

void setup() {

pinMode(storePin, OUTPUT);
pinMode(shiftPin, OUTPUT);
pinMode(dataPin, OUTPUT);
pinMode(Montag, INPUT);
pinMode (Dienstag, INPUT);

}
void loop () {

statusMo=digitalRead(Montag);
statusDi=digitalRead(Dienstag);
if (statusMo == HIGH)
{
for (int i=0; i<16; i++) {
digitalWrite(shiftPin, LOW);
digitalWrite(dataPin, musterMo[i]);
digitalWrite(shiftPin, HIGH);
}
digitalWrite(storePin, HIGH);
}

if (statusDi == HIGH)
{
for (int i=0; i<16; i++) {
digitalWrite(shiftPin, LOW);
digitalWrite(dataPin, musterDi[i]);
digitalWrite(shiftPin, HIGH);
}

digitalWrite(storePin, HIGH);

}
}

(Leider kriege ich den Code nicht anders eingefügt.)
Danke für jeden Hinweis!

Und wo ich gerade dabei bin: Wieso kann ich eigentlich über ein Schieberegister so viele LEDs betreiben ohne den Arduino zu überlasten, obwohl sie doch eigentlich auch alle am gleichen Port hängen?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.03.2018, 21:09
Beitrag #2
RE: Taster schalten LEDs mit Schieberegister
Den Sketch kannst du per Code-Tags besser einfügen.
Wie das geht, steht hier.
Du brauchst für jede if-Abfrage einen "else"-Zweig, mit dem du das Schieberegister wieder auf Anfang setzt. Dann gehen die Leds auch wieder aus
Und das Schieberegister hat für jeden Ausgang eigene Treibertransistoren, die deine Leds versorgen.
Allerdings solltest du auch da auf den max. Strom achten. Also das Datenblatt lesen.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.03.2018, 20:00
Beitrag #3
RE: Taster schalten LEDs mit Schieberegister
Danke für den Hinweis! Trotz "else"-Zwei ging es zunächst immer noch nicht. Ich habe dann aber hinter jedes "digitalWrite(storePin, HIGH);" noch ein "digitalWrite(storePin, LOW);" gesetzt und jetzt geht es.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.03.2018, 20:08
Beitrag #4
RE: Taster schalten LEDs mit Schieberegister
(26.03.2018 20:00)Sonne schrieb:  Danke für den Hinweis! Trotz "else"-Zwei ging es zunächst immer noch nicht. Ich habe dann aber hinter jedes "digitalWrite(storePin, HIGH);" noch ein "digitalWrite(storePin, LOW);" gesetzt und jetzt geht es.

Naja....das setze ich mal vorraus, wenn man etwas einschaltet muss man es auch wieder ausschalten. Und zwar im "else-Zweig", wo denn sonst ?

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  LEDs mit Touchscreen steuern Mr_Martin 5 489 08.09.2019 22:55
Letzter Beitrag: georg01
  Zeitmessung - Taster gedrückt DEL 14 747 08.08.2019 21:25
Letzter Beitrag: Bitklopfer
  PZS Problem mit Ausgang schalten Flötzinger 0 523 28.06.2019 15:53
Letzter Beitrag: Flötzinger
  2 leds Blinken 5 mal 5 Blinken lassen dann 2 andere Leds 5 mal Blinken lassen. Chesleyn 4 570 30.05.2019 14:30
Letzter Beitrag: Chesleyn
  Taster nur 1xmal zählen Flötzinger 3 570 05.05.2019 11:49
Letzter Beitrag: Flötzinger
  Motor mit Taster Vollgaser 3 694 14.03.2019 18:02
Letzter Beitrag: Bitklopfer
  16er Relay schalten funktioniert nur bis 8 Otter 4 685 11.03.2019 16:04
Letzter Beitrag: Otter
  Codehilfe 1 Taster 2 Relais freaktech 8 852 20.02.2019 22:00
Letzter Beitrag: freaktech
  Taster Abfrage Manuel 1 610 13.01.2019 10:50
Letzter Beitrag: Tommy56
  2 taster gleichzeitig drücken Rasa 6 1.004 02.01.2019 16:55
Letzter Beitrag: Rasa

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste