Arduino Tutorial #1.2 - Taster entprellen

preview_player
Показать описание
In diesem Tutorial geht es darum, einen Taster zu entprellen. Ich erkläre dabei das Phänomen des "Prellens" und dessen Lösung.

Eine ausführliche Beschreibung dazu, den Code und die Teileliste findet ihr auf meiner Website:

▬ Teileliste ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

▬ Mehr Tutorials und Projekte ▬▬▬▬▬▬▬▬

Schau auf meiner Webseite vorbei, hier kannst du nochmal alles nachlesen.

▬ Mein Equipment ▬▬▬▬▬▬▬▬▬▬▬▬▬

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

Hinweis: Einige dieser Links leiten auf eine meine Webseite und einige sind Affiliate-Links, wodurch ich eine kleine Provision verdiene, wenn Sie einen Kauf tätigen. Käufe über diese Links sind eine gute Möglichkeit, den Kanal zu unterstützen und kosten Sie keinen Cent. Vielen Dank!
▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬
Рекомендации по теме
Комментарии
Автор

Ich habe schon länger versucht sauber eine LED zu schalten, das bedeutet einmal Taster drücken LED an und ein zweites mal drücken LED aus. Dank diesem Tutorial ist es mir endlich gelungen ein Sketch so zu bauen das alles so läuft wie es soll. Das aller geilste ist wenn man die Entprellzeit verändert kann man eine kleine Ein u. Auschaltverzögerung provozieren.
Ich bedanke mich für dieses Video und finde es absolut Klasse das du dir die Zeit nimmst dein Wissen mit anderen zu teilen, weiter so Gruss

c.h.
Автор

Schönes video, sitze seit zwei stunden daran und versuche es stück für stück zu verstehen. Das Leuchtprogramm ging mir zu schnell... . Danke für deine Arbeit, habe viel gelernt

ernestomodi
Автор

mir hätte es geholfen wenn ich mehr vom code und weniger vom hintergrundbild gesehen hätte, das programm ist sehr nachvollziehbar gestaltet worden und hat mir das Lernen sehr geholfen

ernestomodi
Автор

Captain DJ hat vollkommen recht. Im Programm wird kein"Prellen" gezeigt, sondern wie schnell ein Mikrocontroller addiert.

KulturMediaTechnolog
Автор

Dein Beispielprogramm um zu zeigen das der Taster prellt ist aber eher ungünstig. Würde man den Taster fest halten, würde die Zahl immer höher werden. Das ist jetzt nicht unbedingt weil der Taster prellt, sondern weil der Arduino so schnell ist... Oder? Ich selber bin nin bis jetzt noch ohne diese Sache ausgekommen, werde das aber mal im Hinterkopf behalten. Es gibt noch ein Beispiel im Arduino Forum bzw. auf der Seite, Blink ohne delay. Ist im Prinzip das gleiche.

HardcoreMusik
Автор

solange der Taster gedrückt ist wird in deinem loop die "tasterZeit" mit dem aktuellen millis()-Wert überschrieben. Erst beim loslassen des Tasters wird ab dem letzten (geprellten) HIGH gewartet bist die "entprellZeit" um ist.

AnSaTo
Автор

Hallo, danke das du dieses Problem thematisierst, weil ich selber habe damit auch Probleme. Ich denke ich habe bisschen verstanden was die Funktion millis () macht. Mein Verständnis Problem liegt darin, dass es mir etwas schwer fällt nachvollziehen zu können das es das Ausgangsproblem löst. Ich glaube das klappt in dem Fall weil wir eine entprell Zeit von 200ms haben, würden wir uns bei der Entprellzeit Wertebereich 5-10ms befinden gebe es glaube ich immer noch das Problem, dass der Arduino sprung artig addiert. Mit anderen Worten solange die entprell Zeit von 200ms NICHT vergangen ist wird der Arduino auch nicht auf andere signale wie einen weiteren Knopf druck reagieren. Genau das Problem hatten wir doch mit delay (300ms) ? Könntest du oder jemand anderes mir dabei eventuell weiter helfen ?

melikcanavci
Автор

Ich habe das Problem, dass der Taster bzw. mehrere Taster nicht funktionieren...
Das Programm an sich funktioniert und auch wenn ich das INPUT-Kabel herausziehe funktioniert ebenso alles wie es programmiert ist.
Nur eben wenn ich einen Taster drücke passiert gar nichts. Ich habe schon mehrere ausprobiert und auch mal um 90° gedreht (was im nach hinein keinen Sinn ergibt), aber das Programm reagiert nie auf den Taster.

dereine
Автор

Ik verstehe Zeile 52 deines Codes, im Zusammenhang Zeile 47, nicht.
Du setzt die tasterZeit = millis () und setzt dann eine Bedingung:
"Wenn tasterZeit minus millis ... dann ... sonst ...".
Wenn du die beide Sachen gleich setzt und sie dann von einander subtrahierst, ist das Ergebnis nicht immer 0 ?
Diesen Code verstehe ich auch in anderen Zusammenhängen nicht.

dereine
Автор

Hast du auch eine Idee, wie man per Taster hoch oder runter zählen könnte?

dreiacht
Автор

Wenn ich Beispielsweiße lichtmodus 1 habe und will Zwei leds abwechselnd blinken lassen was trage ich zwischen den beiden ein delay oder was anderes?

GeneralCyborg
Автор

2:10 funktioniert so nicht, haben ja andere schon geschrieben ;)
keep it simple ;)
static bool last_state = digitalRead(tasterPin);
bool state = digitalRead(tasterPin);
if (state != last_state)
{
last_state = state;
if (state == HIGH) druckZaehler++;
}

bzw. entprellt:
static bool last_state = digitalRead(tasterPin);
static unsinged long last_change = 0;
static bool changed = false;
bool state = digitalRead(tasterPin);
if (state != last_state)
{
last_state = state;
last_change = millis();
changed = true;
}
if (changed && (millis() - last_change) >25 )
{
changed = false;
if (last_state == HIGH) druckZaehler++;
// oder sonst was
}

kaim.