mikrocontroller.net

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


Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Bitte helft mir...

Dann zeige mal dein Programm.

MfG Spess

Autor: Thomas O. (kosmos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Setzte mal das PUD Bit, siehe Datenblatt.

Autor: Lothar M. (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Dieter S. (Gast)
Datum:

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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gerald R. (visitor)
Datum:

Bewertung
0 lesenswert
nicht 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
Autor: Draco (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Draco (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Draco schrieb:
> ...Wenn man ein Pin auf Ausgang setzt...

Eingang, ich meine natürlich: Eingang!

Autor: Dieter S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.