Forum: Mikrocontroller und Digitale Elektronik Schieberegister


von David (Gast)


Lesenswert?

Hallo,

kann mir einer weiter helfen?

In meinem Code funktioniert die Tast-Funktion nicht. Sobald ich den Code 
auf das Arduino-Board lade, geht sofort die LED an aber warum? Die soll 
nur aufleuchtrn, wenn auch der Taster gedrückt wird und an bleiben wenn 
der Taster losgelassen wird.

1
int latchPin = 8;
2
int clockPin = 12;
3
int dataPin = 11;
4
int taster = 2;
5
6
int eingabe = B00000001;
7
8
void setup() {
9
  pinMode(latchPin, OUTPUT);
10
  pinMode(clockPin, OUTPUT);
11
  pinMode(dataPin, OUTPUT);
12
  pinMode(taster, INPUT);
13
  digitalWrite(taster, LOW);
14
}
15
16
void loop() {
17
  
18
  digitalWrite(latchPin, LOW);
19
  
20
  if(digitalRead(taster) ==HIGH); {
21
    shiftOut(dataPin, clockPin, MSBFIRST, eingabe);
22
    digitalWrite(latchPin, HIGH); }
23
}

: Bearbeitet durch User
von DrWright (Gast)


Lesenswert?

David schrieb:
> void loop() {
>
>   digitalWrite(latchPin, LOW);
>
>   if(digitalRead(taster) ==HIGH); {
>     shiftOut(dataPin, clockPin, MSBFIRST, eingabe);
>     digitalWrite(latchPin, HIGH); }
> }

Muss das nicht so heißen:
if(digitalRead(taster) == HIGH)
{
     shiftOut(dataPin, clockPin, MSBFIRST, eingabe);
     digitalWrite(latchPin, HIGH);
}

Da war ein Semicolon zuviel!

von David (Gast)


Lesenswert?

ja du hast recht, danke für den Hinweis aber das löst leider mein oben 
beschriebenes Problem nicht, es gibt leider keine Veränderung.

von DrWright (Gast)


Lesenswert?

Ich kenn die Arduino funktionen nicht, also rate ich mal.

Beim Setup setzt du den Tasterport auf Eingang und low, also ohne 
Pullup.

Wie sind die Taster denn Verdrahtet, legst du den PIN auf High Level 
beim drücken?

Prüde dochmal nach ob harwareseitig alles richtig verdrahtet ist. Was 
für ein Schieberegister nutz du denn?

von David (Gast)


Lesenswert?

ich benutze deb 74HC595

Verdrahtung ist korrekt

von Thomas E. (thomase)


Lesenswert?

David schrieb:
>   pinMode(taster, INPUT);
>   digitalWrite(taster, LOW);
...
> if(digitalRead(taster) ==HIGH)
Wenn der Taster nicht betätigt wird, hängt der Pin offen in der Luft. 
Dann fängt der Controller sich irgendwas ein oder denkt sich was aus.
Mach das wie jeder andere auch und schalte den Pullup ein und den Taster 
gegen GND.

mfg.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.