Forum: Mikrocontroller und Digitale Elektronik Arduino Mega 16AU Pins als Input nutzen funktioniert nicht


von Sebastian (Gast)


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

von spess53 (Gast)


Lesenswert?

Hi

>Bitte helft mir...

Dann zeige mal dein Programm.

MfG Spess

von Thomas (kosmos)


Lesenswert?

Setzte mal das PUD Bit, siehe Datenblatt.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Sebastian schrieb:
> Irgendwie sind alle pins die ich als Input definiere immer 1. Egal was
> ich mache...
Und was zeigt dein Messgerät an diesem Pin an?
Hast du auch bei 0V dort am Pin eine 1 im Programm?

von Dieter S. (Gast)


Lesenswert?

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

von Sebastian (Gast)


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

von Gerald R. (visitor)


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.

: Bearbeitet durch User
von Draco (Gast)


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.

von Draco (Gast)


Lesenswert?

Draco schrieb:
> ...Wenn man ein Pin auf Ausgang setzt...

Eingang, ich meine natürlich: Eingang!

von Dieter S. (Gast)


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.

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.