blöde frage wegen taster

hallo freunde

ich habe beim arduino mega ein kleines problem mit einem taster:

der tester ist bei dem einen pin mit 5V verbunden und auf dem anderen mit nem digitalpin vom arduino...

code:

int poti = 10;
int killswitch = 27;

int potiwert = 0;
int killswitchwert = 0;

void setup()
{
Serial1.begin(9600);

pinMode(killswitch, INPUT);
digitalWrite(killswitch, LOW);

}

void loop()
{
potiwert = analogRead(poti);
killswitchwert = digitalRead(killswitch);

if(killswitchwert == HIGH) Serial1.println(potiwert);

delay(100);
}

könnte mir vielleicht jemand erklären warum das nicht funktioniert?

alle anderen projekte bei denen ich einen schlater oder taster verwendet habe habe ich immer GND "geschaltet"
und bei der platine für mein projekt habe ich mir gedacht ich nehme mal 5V ohne es vorher zu testen -.-

ich hoffe ihr könnt mir weiterhelfen

grüße aus österreich
hoonse

Könnte es sein, dass der Eingang immer high ist?

Wenn ja, verwende einen PullDown-Widerstand, damit wenn der Schalter ausgeschaltet ist, der Eingang wirklich auf GND kommt... Der Eingang des Arduino ist hochohmig (im Mega-Ohm-Bereich)

5V -----> Taster -----> digitalPinArduino

beim setup() habe ich

pinMode(killswitch, INPUT);
digitalWrite(killswitch, LOW);

dann im loop()

killswitchwert = digitalRead(killswitch);
if(killswitchwert == HIGH) doSomethint();

normalerweise müsste das passen oder ?

If the pin is configured as an INPUT, writing a HIGH value with digitalWrite() will enable an internal 20K pullup resistor (see the tutorial on digital pins). Writing LOW will disable the pullup.

Du schaltest somit einen PullUp-Widerstand ein. Wenn kein Eingangssignal angeschlossen ist (Schalter offen) zieht der PullUp den Eingang auf +5V.

Versuch folgendes: PullUp ausschalten, verbinde den Eingang mit einem Widerstand (5k-20k Ohm) nach GND. Oder du schaltest wieder mit GND wie bisher, dann kannst du den internen PullUp verwenden.

ich schalte mit dem taster NICHT GND sondern +5V

jaja...

  • Wenn du den Schalter betätigst, dann hat der Einggang +5V direkt von der Quelle.
  • Wenn du den Schalter ausschaltest, dann hat der Eingang irgendetwas (nicht GND!), bei eingeschaltetem PullUp sind es +5V.
    Der Eingang des Arduinos ist zu hochohmig um die Signalleitung auf GND zu ziehen, er hat somit einen nicht definierten Zustand.
    (Ausser du hast einen Umschalter der 5V oder GND schaltet)

ok ich denke ich habe verstanden..

vielen dank für deine schnelle hilfe

grüße aus österreich
hoonse

Egentlich ist das keine böde Frage. Es sind immer wieder genau die selben Fragen die gestellt werden. Dann wären ja alle "blöde Fragen" :wink:

Ich gebe zu Bedenken: Nehmen wir al man will ein externes IC mit einem Taster versehen. Dieses angeschlossene IC hat aber keine eingebauten Pullup oder Pulldownwiderstände.

Also kann man die Tasterschaltung nur mit einem externen Widerstand aufbauen. Die Grundschaltung des Pullups oder Pulldowns sollte einem immer gegenwärtig sein. Der Bastler kennt das genau.

Interessant wird es den Pulldownwiderstand zu "bemessen". Man denke nur daran, man will vielleicht keinen Taster sondern irgendein anderen Geber dazu verwenden. Dessen Ausgangssignal ist auschlaggebend für die Bemessung des Spannungsteilers.

Dann kommt noch das Prellen hinzu. ...Ich lass das jetzt mal :wink:

Das Bemessen von Pullups ist furchtbar leicht. Ich zitiere mal einen befreundeten Elektroingineur: "nimm 47k". Grund: das ist ein Standardwert. Klein genug um sicher zu ziehen aber groß genug um nichts kaputt zu machen. Solange man keine besonderen Anforderungen hat passt das jedenfalls so gut wie immer.

Gruß, Udo