Hallo allerseits,
ich bin recht neu in Sachen Arduino und finde trotz suche einfach nicht die richtige Antwort.
Obwohl ich denke, dass dies Jeder schon hinter sich hat.
Ich möchte eine LED mit einem Taster Ein und auch Aus schalten.
Also:
Druck auf den Taster>>Led an.
Druck auf den Taster>>Led aus.
Dachte ich hätte auch schon etwas Passendes gefunden, aber das funktioniert auch nicht.
Umbauen und Einfügen der "else" Anweisung hielt ich für die Lösung, vergeblich.
So, habe den Sketch von Ardubu auf meinen Nano installiert und die Anschlüsse geändert.
Passiert ist nichts.
Habe dann den Taster vom Board geworfen (sitzt nicht gut) und durch eine Drahtbrücke ersetzt, mit der ich "taste".
Ergebniss= Keine Funktion. Im Serial Montor kommt nur "Setup=0"
Ich bin mir sicher, dass ich etwas falsch mache. Habe ich vergessen etwas Auszuklammern?
Aber was? Den Sketch von Ardubu verstehe ich auch nur im Ansatz.
michael_x:
Da mach dir mal keinen Kopf. Deine Idee mit dem delay () ist nicht mal das Dümmste.
Das sehe ich auch so.
eine so kurze Verzögerung genügt für das Entprellen, verlangsamt den Sketch aber nicht wirklich.
Noch besser als im Beispiel von michael_x ist die Verzögerung in die if Schleife einzubauen. Dann erfolgt die Verzögerung nur dann wenn man sie wirklich braucht: während des Prellens des Tasters bei einer Pegeländerung. Ändert sich der Tasterzustand nicht, ist der Sketch nicht durch das delay() ausgebremst.
Noch besser als im Beispiel von michael_x ist die Verzögerung in die if Schleife einzubauen
Das hatte ich auch überlegt. Bescheunigt den Sketch ungemein, wenn gar nichts zu tun ist.
Nimmt man das Ganze als Grundgerüst für eine Universal-Lösung, ist nicht sicher, dass sonst gar nichts zu tun ist.
Ob es also "egal" oder "noch besser" ist, können wir also offen lassen.
ich habe mal den Sketch von ardubu auf meine zwei-Taster-Situation umgemünzt.
Ziel = mit Taster 1 die LED an und aus zu schalten und mit Taster 2 die LED gedimmt-an und aus zu schalten.
Also an/aus klappt (Taster 1)
Taster 2 schaltet gedimmt an, aber nicht aus.
Könnt Ihr mir nen Tip geben, woran das liegt?
Beim Digital-LED-Ausgang wechselst Du mittels led_state = !led_state;//Ausgang wechseln den Status der LED, im anschließendem digitalWrite wird der umgedrehte Status an den Ausgang der LED geschrieben.
In dem Analog-Teil machst Du das Gleiche - nur, daß Du den Status dort akut nicht benutzt.
Du müsstest zwischen der led_state Zeile und dem analogWrite mit einer IF prüfen, ob der Status AN oder AUS ist, bei AUS analogWrite(led_pin,0); (oder digitalWrite(led_pin,LOW); ) und bei AN analogWrite(led_pin,10);
Wobei der Wert 10 Deine 'Dimmstufe' ist - Du also nur schwach gedimmt oder AUS dort bekommen kannst.
Was macht 'counter' in Deinem Sketch?
Vll. kannst Du damit die LED 'hochdimmen'.
du hast/benötigst 4 Zustände zwischen denen du unterscheiden und zwischen denen du springen musst.
Mittels Taster 1 hart ein- und ausschalten.
Mittels Taster 2 gedimmt ein- und ausschalten.
Es kann ja auch sein das du während des ein-dimmens plötzlich hart ausschalten möchtest.
Jetzt baust du dir eine Funktion für die Taster worin du dich zwischen den 4 Zuständen bewegst.
Dann baust du dir 4 Funktionen für das LED schalten/dimmen.
Diese Funktionen werden dann je nach Zustand aufgerufen.