Digitalen Eingang einlesen

Hallo Community,

habe die Vermutung das meine Hardware defekt ist. Habe einen Arduino Mega 2560.

Ich wollte Softwaremäßig einen Taster entprellen. Allerdings bin ich schon beim einlesen nicht weiter gekommen. Nach dem Upload wird mir über den Serial Monitor sowohl logisch 1 als auch logisch 0 beim einlesen des Tasters ohne betätigen ausgegeben. Die LED blinkt ganz schnell wenn ich keine delay Zeit eingebe. Wenn ich eine delay Zeit eingebe, leuchtet die LED mal nicht und mal leuchtet sie, das passiert wenn ich den Taster nicht drücke.

/*
    Taster einlesen und entprellen
*/

// Konstanten 
const int tasterPin = 30;     //  Pin Nummer des Tasters
const int ledPin = 52;         //  Pin Nummer der LED des Arduinos

// Variablen
int tasterStatus = 0;         // Variable für den Taster Status
int sensorValue;

void setup()
{
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);     // LED Pin wird als Ausgang gesetzt
  pinMode(tasterPin, INPUT);   // Taster Pin wird als Eingang gesetzt
}

void loop()
{
  tasterStatus = digitalRead(tasterPin);     // Lesen des Status des Taster Pins 
  sensorValue = digitalRead(tasterPin);
  Serial.println(sensorValue);
  
  if (tasterStatus == 1)                     // Prüfen ob der Taster gedrückt ist -- Wenn der TasterState HIGH ist, dann:
  {
    digitalWrite(ledPin, HIGH);              
  }
  else
  {
    digitalWrite(ledPin, LOW);               
  }  
  delay(200);
}

Habe den Schaltplan nun mal von einer Website genommen.


Folgende Unterschiede:
Kein Uno sondern Mega, daher LED an Pin 52 und Taster an Pin 30

Noch dazu sagen sollte ich, das ich gestern ein Poti über Analog Pin A0 und analogRead eingelesen habe. Es kamen Werte zwischen 0 bis 1023. Das hat funktioniert. Wenn ich den Taster über analogRead einlese am Pin A0 kommt die 0 vor, das ist ja richtig. Dann Werte zwischen 1 - 1022 und die volle Spannung also 1023.

Ist mein Arduino defekt?

Gruß
Chris

Um einen Taster sauber an einem digitalen Pin zu erkennen, musst du einen Pullup oder Pulldown-Widerstand einsetzen. Dadurch erhält der Pin einen definierten Zustand, wenn der Taster nicht gedrückt ist.

Hast Du den Pulldownwiderstand angeschlossen? Deine Beschreibung klingt sehr danach als ob der fehlt.

Ok, Hotsystems war schneller :slight_smile:

Hallo,

habe einen Pull Up Widerstand angeschlossen. Also von GND zum Widerstand, dann aufgeteilt zu 5V und zum Taster.

Es ändert nichts. Die LED geht an und aus wie sie lustig ist..

habe einen Pull Up Widerstand angeschlossen. Also von GND zum Widerstand,

Verstehe ich nicht!

Du hast doch einen Schaltplan gepostet...
Der ist doch gut!
Mache es so, dann tuts das auch.

Hmm.. also ich vermute die Hardware vom Arduino ist defekt. Also das die Digitalen Eingänge defekt sind.

Ich nutze den Widerstand wie in der Schaltung.

Ich verstehe das leider auch nicht. Deswegen Frage ich ja hier.

Es funktioniert leider nicht wie ich mir das vorstelle.

Wie könnte man denn noch testen ob die digitalen Eingänge defekt sind?

Prüfe mit einem Multimeter, ob der Taster wirklich das tut, was er tun soll.

Habe einen anderen Taster verwendet. Gleicher Konflikt.
Habe derzeit kein Multimeter. Das wird bald bestellt werden.

Chris89:
Hallo,

habe einen Pull Up Widerstand angeschlossen. Also von GND zum Widerstand, dann aufgeteilt zu 5V und zum Taster.

Es ändert nichts. Die LED geht an und aus wie sie lustig ist..

Diese Beschreibung kann man nicht verstehen.
Warum machst du es nicht so, wie du es gepostet hast ?
Dann heißt das Ding auch Pulldown-Widerstand, weil dieser gegen GND geschaltet ist.

Es ist grundsätzlich schlecht, ein Schaltbild zu posten, beizuschreiben,, so habe ich es gemacht. Allerdings sieht der Aufbau gemäß deiner Beschreibung anders aus.
Da soll einer draus schlau werden. :wink:

Edit:
Wenn du es nach Schaltbild aufbaust und statt des Tasters eine Drahtbrücke verwendest, geht es auch.
Wenn nicht, machst du einen Fehler.
Und das liest sich so, als ob dein Eingang allein an dem Taster hängt und damit völlig offen für alle Störungen.

Teste einen anderen Pin des Mega.
Es werden nicht alle defekt sein.

Chris89:
Hallo,

habe einen Pull Up Widerstand angeschlossen. Also von GND zum Widerstand, dann aufgeteilt zu 5V und zum Taster.

Es ändert nichts. Die LED geht an und aus wie sie lustig ist..

So wie ich das verstehe ist das ein Widerstand den Du zwischen GND und +5V geklemmt hast und kein Pullup oder Pulldown Widerstand. Ein Pullup oder Pulldown Widerstand ist ein Widerstand zwischen dem Pin und GND oder +5V.
https://playground.arduino.cc/CommonTopics/PullUpDownResistor

Grüße Uwe

Hallo,

habe folgendes am Code geändert:

// Konstanten
const int tasterPin = 40;     //  Pin Nummer des Tasters
const int ledPin = 45;         //  Pin Nummer der LED des Arduinos

Im Anhang befindet sich der Stromlaufplan und die Übersicht.
Ich habe keinen PullUp sondern einen PullDown Widerstand gesetzt, in Ordnung.

Dennoch bleibt der Fehler, auch wenn ich andere Digitale Ein-Ausgänge verwende.
Wenn ich den Eingang direkt an 5 V setze bleibt die LED an. Wenn ich den Eingang an 0V setze, bleibt die LED aus. Wenn ich den Eingang in der Luft lasse, geht die LED an und aus. Wenn ich den 10k Widerstand auswechsel passiert das gleiche. Wenn ich den Taster wechsle folgt auch der selbe Konflikt.

uwefed:
So wie ich das verstehe ist das ein Widerstand den Du zwischen GND und +5V geklemmt hast und kein Pullup oder Pulldown Widerstand. Ein Pullup oder Pulldown Widerstand ist ein Widerstand zwischen dem Pin und GND oder +5V.
Arduino Playground - HomePage

Open circuit – Wikipedia

Grüße Uwe

Uwe hat das Problem erkannt und dein Schaltplan im letzter Post zeigt immer noch genau diesen Fehler. So kann das nicht funktionieren.

Um die Schaltung zu korrigieren müsstest du den 5V-Anschluss und den Pin des Arduinos am Schalter tauschen. Also das Ende des Widerstands, wo du 5V anschließt, mit dem Arduino-Eingang verbinden und am Schalter den Anschluss, den du mit dem Eingang verbunden hast, an 5V anschließen.

Oh man!

Jetzt hab ich das verstanden. Jetzt funktioniert die Schaltung auch!
Yippi!

Vielen Dank!!

Chris89:
Oh man!

Jetzt hab ich das verstanden. Jetzt funktioniert die Schaltung auch!
Yippi!

Vielen Dank!!

Und warum liest du unsere Antworten nicht richtig durch ?
Wie genau sollen wir dir das denn zukünftig beschreiben ?

Kennst du das Gefühl, wenn du mehrere Stunden an einer Arbeit sitzt und dich nicht mehr so richtig konzentrieren kannst, das du auf die einfachsten Dinge nicht mehr kommst?
So ging es mir gestern. Ich habe es nicht mehr verarbeiten können was mir als Hilfe angeboten wurde.
Entschuldigt bitte meine Unaufmerksamkeit..

Chris89:
Kennst du das Gefühl, wenn du mehrere Stunden an einer Arbeit sitzt und dich nicht mehr so richtig konzentrieren kannst, das du auf die einfachsten Dinge nicht mehr kommst?
So ging es mir gestern. Ich habe es nicht mehr verarbeiten können was mir als Hilfe angeboten wurde.
Entschuldigt bitte meine Unaufmerksamkeit..

Ok, wir sind ja auch froh, dass es jetzt funktioniert.