Arduino Mega 16AU Pins als Input nutzen funktioniert nicht

Gast #4691795
Lesenswert?
• ▲
▼
Hallo Alle Zusammen

Hab schon ganz google und dieses und andere Foren durchsucht und leider 
keine Lösung gefunden.
Ich hoffe das mir hier Jemand weiterhelden kann...

An die admins: falls ich gegen eure Regeln verstoßen oder hier beim 
falschen Thema gelandet sein sollte, bitte ich um Entschuldigung...

Ich nutze ein Mega 2560 16AU board, die Arduino-Software und windows 7 
32bit

Nun zu meinem Problem
Irgendwie sind alle pins die ich als Input definiere immer 1. Egal was 
ich mache...
Wenn ich taster benutze, den pin auf masse stecke oder selbst wenn ich 
überhaupt gar nichts aufstecke...
Wenn ich im Serial Monitor nachsehe ist der input machmal einpar mal 0 
wenn ich zb. Den Taster ab- oder dran stecke, aber nach par abfragen 
wieder durchgehend 1...
Wenn ich die pi s jedoch als Ausgang definiere funktionieren diese gant 
normal und einbahnfrei...

Irgwndwie verstehe ich das nicht
Habs mir allen mögliche Beispiel- und selbst geschriebennen programmen 
versucht und natürlich alle möglcihen pins
Bitte helft mir...

Mfg Sebastian
Gast #4692535
Lesenswert?
• ▲
▼
Danke für eure antworten...

Ich habs mit allen möglichen programmen versucht und auch mit denen die 
als Beispiele da sind... hab da halt nur öfters den pin gewächsellt um 
andere zu testen.

Ich probier das alles morgen aus, hatte heute keine zeit mehr...

Vielen dank nochmal
Morgen hört ihr von mir...
MfG
#4692608
Lesenswert?
• ▲
▼
Ohne code ist es schwer den Fehler zu finden.

Entweder so:
pinMode(pin, INPUT);           // set pin to input
digitalWrite(pin, HIGH);       // turn on pullup resistors

Sollte auch so funktionieren:
pinMode(pin, INPUT_PULLUP);

Der Eingang ist somit immer auf HIGH.
So bald du den gewählten Pin auf Masse schaltest ändert sich das Signal 
auf LOW.

Du kannst es auch ohne internen Pullup Widerstand machen, dazu musst du 
aber extern einen Widerstand anbringen.
Gast #4692870
Lesenswert?
• ▲
▼
Gerald R. schrieb:
> Du kannst es auch ohne internen Pullup Widerstand machen, dazu musst du
> aber extern einen Widerstand anbringen.


Dieter S. schrieb:
> Du musst die Eingänge unbedingt mit einem Pullup oder
> Pulldown-Widerstand versehen, oder den internen Pullup verwenden.

Solange kein Definierter Zustand eines Pins gewählt ist, braucht man 
keinen Pull-up /-down. Ein Pin ist immer im Tri-State vor der Init. Wenn 
man ein Pin auf Ausgang setzt, den internen Pullup negiert, ist er 
wieder auf TriState und mit internen Pullup auf High. Für einen 
Taster/Schalter, benötigt es keinen externen Pullup. Einen externen 
Pullup nutzt man, wenn man eine Bidirektionale Kommunikation benötigt 
und man im Programm das schalten zwischen Tristate und High minimieren 
will. Der Mega2560 hat aber, dank PUD, mehrere Input Varianten (Tri, 
Soure, Tri-HiZ).

Aber wie Thomas O. schon anmerkte: Schau im Datenblatt nach dem PUD 
Register, Seite 69 Kaptiel 13.2.3.
Gast #4693043
Lesenswert?
• ▲
▼
Draco schrieb:
>
> Solange kein Definierter Zustand eines Pins gewählt ist, braucht man
> keinen Pull-up /-down.

Das sehe ich genau so. Wenn du den Anfangspost durchliest, dann siehst 
du, dass die Eingänge entsprechend definiert sind.

Da der TO aber bisher nicht darüber informiert hat, ob Pullups (intern 
oder extern) verwendet werden, können diese Eingänge evtl. Störungen aus 
dem Umfeld aufnehmen.

Zudem hat es schon Situationen gegeben, wo ein interner Pullup (20 - 
50k) nicht ausreichte. Da musste ein externer Widerstand helfen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren