Hilfe bei Fehlersuche ,Ich stehe auf dem schlauch.

Hallo, ich habe einen Kleinen Code geschrieben um meine Taster zu Prüfen.

Auf meinem LCD steht aber nun immer " OK" auch wenn nichts gedrückt ist. Selbst wenn ich direkt 5V auf den Pin lege.

Ich habe schon einen anderen Pin versucht, selbes Problem.
Auch ein anderen Controller schafft keine Abhilfe.

Plus und Minus geht wie gewünscht.
Alles Gleich angeschlossen.

Selbst wenn ich die Leitung für Ok weg nehme steht OK auf den LCD ;.D

Ich werde noch verrückt :smiley:

  // put your setup code here, to run once:
int minus =A0;
int plus =A1;
int ok =A6;
#include <LiquidCrystal.h> //LCD-Bibliothek laden
LiquidCrystal lcd(12, 11, 8, 7, 6, 5); //In dieser Zeile wird festgelegt, welche Pins des Mikrocontrollerboards für das LCD verwendet wird (Am besten erstmal nicht verändern).

void setup() {

  pinMode(minus, INPUT_PULLUP);
  pinMode(plus, INPUT_PULLUP);
  pinMode(ok, INPUT_PULLUP);

  lcd.begin(16, 2); //Im Setup wird angegeben, wie viele Zeichen und Zeilen verwendet werden. Hier: 16 Zeichen in 2 Zeilen.

}

void loop() {
  lcd.clear();
if( digitalRead(ok) == LOW  ) 
 {
  lcd.setCursor(0, 0); //Startposition der Darstellung auf dem LCD festlegen. lcd.setCursor(0,0) bedeutet: Erstes Zeichen in der ersten Zeile.
    lcd.print("ok"); 
        delay (1000);
  }
  
  if( digitalRead(minus) == LOW  ) 
 {
  lcd.setCursor(0, 0); //Startposition der Darstellung auf dem LCD festlegen. lcd.setCursor(0,0) bedeutet: Erstes Zeichen in der ersten Zeile.
    lcd.print("minus"); 
    delay (1000);
  }
  if( digitalRead(plus) == LOW  ) 
 {
  lcd.setCursor(0, 0); //Startposition der Darstellung auf dem LCD festlegen. lcd.setCursor(0,0) bedeutet: Erstes Zeichen in der ersten Zeile.
    lcd.print("plus"); 
        delay (1000);
  }
  
  }

Was bedeutet Pull Up wortwörtlich übersetzt? Nach oben ziehen, gen plus! Der Pull Up Widerstand legt deinen Pin auf plus, d.h. um eine Pegeländerung zu bewirken mußt du deinen Eingang auf Masse legen.
Der umgekehrte Fall hieße dann Pull Down, nach unten ziehen, also gegen Masse. Nur das unterstützt das IC nicht per Software. Dazu müßtest du die internen Pull Up's abschalten und Pull Down's in Hardware vorsehen.

Meine Frage wäre jetzt, wie hast du die Taster angeschlossen ?

Zeige uns ein Schaltbild.

also der pullup ist eingeschalten, den will ich ja auch.
Ich schalte mit dem Taster Masse .
Sprich, Taster drücken = Pin auf masse.

Das Problem ist der Pin bekommt nie 5 Volt .
Das hier springt einfach nicht an : if( digitalRead(ok) == LOW ) , bzw ist halt immer aktiv

Dann untersuche deine Hardware, evtl. ist da ein Kurzschluss.

Miss doch einfach mal die Spannung am Pin, wenn der Taster nicht betätigt ist.
Wenn da 0V anliegen, hast Du einen Hardwarefehler.

Gruß Tommy

Vesuch mal einen anderen Pin A6 und A7 haben glaube ich keine Pullup.

A6 und A7 sind nicht als digitale Pins benutzbar. Siehe Spec.

Gruß Tommy

Genau D0-D19 .

Hallo

Messen , oder einzeln versuchen Beispiel, Digital , Buton

Heinz

es liegen 0 Volt an.

Ok wenn a6 und a7 nicht benutzbar sind wärs ja logisch, aber an a2 gibt es das selbe problem.

Und die plus und minus taste an a0 und a1 geht.

Hardwarefehler? selbst wenn ich nichts angeschlossen habe liegen 0 volt an.

ich teste es trotzdem mal mit den D pins.

pascal1:
es liegen 0 Volt an.

Ok wenn a6 und a7 nicht benutzbar sind wärs ja logisch, aber an a2 gibt es das selbe problem.
.....

Also das mit den Pins A6 und A7 ist sehr eindeutig.
Hier hätte uns ein Schaltbild sicher schneller geholfen und dir sicher auch.

Da das Problem deiner Aussage weiter besteht, muss ein Hardwareproblem vorliegen.

Was für Taster verwendest Du? Sind die evtl. falsch angeschlossen?
Gib uns mal ein aussagekräftiges Foto.

Gruß Tommy

So, hab jetzt alle Taster auf den D Port. jetzt geht es wie gewünscht. Danke euch.

pascal1:
So, hab jetzt alle Taster auf den D Port. jetzt geht es wie gewünscht. Danke euch.

Ahhh....prima, danke für die Rückmeldung.